jaraco / pip-run

pip-run - dynamic dependency loader for Python
MIT License
137 stars 19 forks source link

app_paths dependency is a nuisance #64

Closed jaraco closed 1 year ago

jaraco commented 1 year ago

Per https://github.com/jaraco/pip-run/commit/346392685903dfcd1414e438c734ac4263047665#r94301964, @mgorny reports that the app_paths dependency is problemmatic. Let's explore ways to fix that.

jaraco commented 1 year ago

Filed a request as https://github.com/alexdelorenzo/app_paths/issues/3.

jaraco commented 1 year ago

Reported issues:

Its GitHub repository seems not to be up-to-date, it doesn't have tests, it still uses old appdirs and brings a bunch of NIH packages. This makes pip-run a true PITA to package.

I checked on the "old appdirs" and that appears not to be an issue:

 ~ $ pip-run pipdeptree -- -m pipdeptree -p app-paths
app-paths==0.0.7
  - aiopath [required: >=0.6.9, installed: 0.6.11]
    - aiofile [required: >=3.5.0,<4, installed: 3.8.1]
      - caio [required: ~=0.9.0, installed: 0.9.11]
    - anyio [required: >=3.2.0,<4, installed: 3.6.2]
      - idna [required: >=2.8, installed: 3.4]
      - sniffio [required: >=1.1, installed: 1.3.0]
  - appdirs [required: Any, installed: 1.4.4]
  - asyncstdlib [required: >=3.9.2,<4.0.0, installed: 3.10.5]
  - StrEnum [required: >=0.4.6, installed: 0.4.9]
  - unpackable [required: >=0.0.4,<0.1.0, installed: 0.0.4]

Where did you get the impression that it depends on an old appdirs?

jaraco commented 1 year ago

NIH packages

Can you elaborate a bit on what an NIH package is and which dependencies are (most) concerning? I could guess, but I'd like to understand your perspective better. I do agree, at least for my usage, a thin wrapper around appdirs with fewer dependencies would be nice.

mgorny commented 1 year ago

I checked on the "old appdirs"

I'm sorry for not being precise. I meant it is using appdirs rather than platformdirs, given that apparently the latter is the preferred package these days.

Can you elaborate a bit on what an NIH package is and which dependencies are (most) concerning?

In my case, it means having to package aiopath, aiofile, caio, StrEnum and unpackable. I haven't checked the "quality" of these packages yet (e.g. if they have working tests) but you can imagine this feels like a lot of work given how small a package pip-run feels to be.

On top of that, we already have aiofiles and I'm wondering how different it is from aiofile.

jaraco commented 1 year ago

Please feel free not to invest the time/energy into packaging those downstream dependencies until this issue is resolved. I agree that a likely outcome should be to reduce the dependency tree here.

jaraco commented 1 year ago

Looks like platformdirs has the pathlib functionality needed.

mgorny commented 1 year ago

Thanks a lot!