Lighten or make the heavy package dependencies optional
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- jupyter, matplotlib, numpy, pandas, python
- Domain
- build-system, developer-experience
Research direction
Start by reviewing the arcgis package's dependency declarations and mapping the listed heavy dependencies to the features that import or require them. Done means users can install and use lightweight functionality without those dependencies, while functionality that needs them remains available through explicit optional dependencies and is documented.
Written by the indexing model from the issue text.
Description
Is your feature request related to a problem? Please describe.
My problem is the dependencies of the arcgis package are so big and heavy its extremely onerous to incorporate arcgis into an existing Python application, even though often the features of arcgis we use don't require any of the really heavy dependencies (jupyter, pillow, ipywidgets, pandas, dask, numpy, matplotlib, etc.)
E.g. dependencies for arcgis 2.2.0
dependencies = [
"pillow",
"urllib3>=1.21.1,<3",
"cachetools",
"lxml",
"notebook",
"cryptography",
"ipywidgets >=7,<8",
"widgetsnbextension >=3",
"jupyter-client <=6.1.12",
"pandas >=2.0.0,<3",
"numpy >=1.21.6",
"matplotlib",
"keyring >=23.3.0",
"pylerc",
"ujson >=3",
"jupyterlab",
"python-certifi-win32;python_version<'3.10'",
"truststore>=0.7.0;python_version>'3.9'",
'pywin32 >=223;platform_system=="Windows"',
"pyshp >=2",
"geomet",
"requests >=2.27.1,<3",
"requests-oauthlib",
"requests_toolbelt",
"pyspnego >=0.8.0",
"requests-kerberos",
"requests-gssapi",
"dask >=2023.3.2",
"matplotlib-inline",
]
Describe the solution you'd like
I'd like the arcgis package restructured or designed to make all the really heavy dependencies optional, so I can only include the ones I need for the functions I use.
Describe alternatives you've considered
The first alternative I tried was continuing to use arcgis as is and tolerating the hundreds of megabytes of additional dependencies it would pull in that we didn't need, and the extra 10+ minutes of dependency resolving time this would incur every time we need to update our own dependencies.
The current alternative I use (which is very time consuming and painful for me) is to perform the operations I do need with arcgis, reverse engineer the requests it makes to the REST API, then re-implement the minimal parts of the arcgis package I need for my own application.
- Dominant language
- Python
- Stars
- 2.2k
- Forks
- 1.1k
- Avg merge
- 2h 40m
- Merged PRs (30d)
- 2
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Esri/arcgis-python-api
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Esri/arcgis-python-api#2513 · 1 comment ·
-
bug
Difficulty 1/5 Under an hour Newbie friendliness 85/100
Esri/arcgis-python-api#2453 · 3 comments ·
-
documentation enhancement
Difficulty 1/5 Under an hour Newbie friendliness 76/100
Esri/arcgis-python-api#2097 · 1 comment ·
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 58/100
Esri/arcgis-python-api#2537 · 3 comments ·
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 56/100
Esri/arcgis-python-api#2531 · 1 comment ·
All issues in Esri/arcgis-python-api
Similar issues
-
documentation help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
simonw/sqlite-utils#872 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100