ain-soph · GitHub

@ain-soph @bertmaher

A small bug fix for `input_defined` variable used in `setup.py`.
I think the only case for downloading shall satisfy all following
requirements:
1. `is_offline_build()` is False
2. `input_defined = p.syspath_var_name in os.environ` is False, which
means using the cache dir.
3. `input_compatible` is False, which means the current cached version
is not correct.
However, the current codes have following issues:
1. `input_defined = p.syspath_var_name not in os.environ`, which is not
consistent with the variable name.
2. When `p.syspath_var_name in os.environ` and version is correct in
that path, it still downloads.
The bug is introduced in commit
triton-lang@ 0503565 
Codes with bug after
triton-lang@ 0503565 :
```python3
        input_defined = p.syspath_var_name not in os.environ
        input_exists = input_defined and os.path.exists(version_file_path)
        input_compatible = input_exists and Path(version_file_path).read_text() == p.url
        if is_offline_build() and not input_defined:
            raise RuntimeError(f"Requested an offline build but {p.syspath_var_name} is not set")
        if not is_offline_build() and not input_compatible:
            with contextlib.suppress(Exception):
                shutil.rmtree(package_root_dir)
```
Old codes without bug before
triton-lang@ 0503565 :
```python3
        if p.syspath_var_name not in os.environ and\
           (not os.path.exists(version_file_path) or Path(version_file_path).read_text() != p.url):
            with contextlib.suppress(Exception):
                shutil.rmtree(package_root_dir)
```
------------------------------
The core Triton is a small number of people, and we receive many PRs
(thank
you!).  To help us review your code more quickly, **if you are a new
contributor (less than 3 PRs merged) we ask that you complete the
following
tasks and include the filled-out checklist in your PR description.**
Complete the following tasks before sending your PR, and replace `[ ]`
with
`[x]` to indicate you have done them.
- [x] I am not making a trivial change, such as fixing a typo in a
comment.
- [x] I have written a PR description following these
  [rules](https://cbea.ms/git-commit/#why-not-how).
- [x] I have run `pre-commit run --from-ref origin/main --to-ref HEAD`.
- Select one of the following.
  - [ ] I have added tests.
    - `/test` for `lit` tests
    - `/unittest` for C++ tests
    - `/python/test` for end-to-end tests
  - [x] This PR does not need a test because `It's a small bug fix`.
- Select one of the following.
  - [x] I have not added any `lit` tests.
- [ ] The `lit` tests I have added follow these [best
practices](https://mlir.llvm.org/getting_started/TestingGuide/#filecheck-best-practices),
including the "tests should be minimal" section. (Usually running Python
code
    and using the instructions it generates is not minimal.)

Read the original on github.com ↗