-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Lighten or make the heavy package dependencies optional #1692
Comments
@owenlamont Thanks for bringing this up, we are actively working on this and will have updates in the future to help with this workflow. |
I think you could consider a similar approach to Dask. You could implement ArcGIS Core using one of the following commands:
or
Dask documentation for more information: https://docs.dask.org/en/stable/install.html |
@hildermesmedeiros @owenlamont if you wouldn't mind, could to explain that areas of the Python API you mainly use and what areas you never touch? |
For my current appliction its CRUD operations around FeatureLayers, more specifically I want to programmatically upload geojson files, publish them as FeatureLayers, replace the geojson file currently associated with an existing FeatureLayer, and in future maybe some other minor update operations around renaming, deleting, or updating metadata for those types of entities. |
I know the story around optional dependencies in conda isn't so good (you probably have to publish multiple conda packages with different combinations of dependencies). Pip allows different dependency profiles where you could select the subset of dependencies you need, e.g. pip install arcgis[all] or pip install arcgis[jupyter] If you go down that path I'd suggest if a user just runs pip install arcgis they just get the minimal core dependencies. |
No this is a great story and suggestions. Thank you for sharing this. |
Glad to hear it, with my above comment I just meant its a bit trickier/harder to support optional dependencies in conda than it is in pip (even though in general I like conda better). |
It is, we are looking into building a set of namespace packages for a future release. Having folks, like yourself, post how they use the API helps us understand how different users use the API. If you know of other use cases, please post more of them! |
To do the minimal deps I do something similar to this guide: https://developers.arcgis.com/python/guide/install-and-set-up/ I'd like we had the With many customers using the cloud the fight over cost is increasing, and files size is one of the many costs to be fought these days, at least on my side it has been more frequent. For example, a customer needed to verify that some key FeatureLayers features were being updated correctly. We created a script, it runs every 5 minutes to check if everything is as expected, otherwise it creates it as json and Geoevent sends an email. Another client wanted to create a routing system using Arcgis Server, but did not want the logic to be executed on the server but rather clound on the same infrastructure and asked for it to be as small as possible and without dependency on arcpy. This kind of thing... |
Thanks, I missed that minimal dependencies documentation. Although I don't think that would work for us - we use pip-tools to maintain our application dependencies and you can't specify a package be installed with --no-deps with that.. Some of those minimal requests dependencies are platform/authentication type specific themselves right? I know when I implemented a Python client to authenticate and connect with the REST API (which is deployed to a Linux docker image) I did need requests and requests-oauthlib - but things like requests-kerberos and several of those other dependencies are just for Windows SSO auth? |
@owenlamont , no. Most are not Windows bound.
|
My Docker build takes 11 minutes to build, but most of that time (around 8 minutes) is spent installing |
My issue is I want to use arcgis library for it's arcgis rest api client... in a server application... and all the dependencies bloat the container. It would be better if the heavy dependencies can't be spun out to potentially push the rest client out to a separate dependency that just depends on the minimum to interact with the REST api. |
this improvement would be great - i also have an 11 minute container build. A common build pattern for containers is to pip install packages from a requirements.txt file which doesn't support the --no-deps argument pypa/pip#10837 |
Hi everyone! Thanks for all the input and opinions, please continue to provide your input as this helps us when choosing to prioritize enhancements. |
An example of why this improvement is important is that I'm currently struggling to get the arcgis package installed in Databricks due to a krb5 dependency issue, meanwhile I won't be using kerberos for authentication. I tried the --no-deps command to install the arcgis api, but importing failed due to missing arcgis-mapping module. I went through all the suggested solutions to install krb5 with no luck, but again, I won't be using kerberos. |
@arr175 The arcgis-mapping package should not rely on krb5. You can do the no deps install and then install arcgis-mapping as well. This has a dependency on jupyter lab and related widget libraries. |
@nanaeaubry The arcgis-mapping package seems to have a dependency on requests_kerberos and requests_gssapi which depend on gssapi and krb5. I can't find the github repo page for arcgis-mapping so I'm not sure which parts are depending on krb5, but installing arcgis with --no-deps did not let me load even a blank map. See the installation log below for just installing arcgis-mapping. Collecting arcgis-mapping
Downloading arcgis_mapping-4.30.0-py3-none-any.whl (6.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.2/6.2 MB 48.9 MB/s eta 0:00:00
Collecting anywidget==0.9.13
Downloading anywidget-0.9.13-py3-none-any.whl (213 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 213.7/213.7 kB 361.4 MB/s eta 0:00:00
Collecting pydantic>=2.4.0
Downloading pydantic-2.9.2-py3-none-any.whl (434 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 434.9/434.9 kB 157.3 MB/s eta 0:00:00
Collecting jupyterlab<5,>=4.0.7
Downloading jupyterlab-4.2.5-py3-none-any.whl (11.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.6/11.6 MB 227.4 MB/s eta 0:00:00
Collecting ipywidgets>=8.0.0
Downloading ipywidgets-8.1.5-py3-none-any.whl (139 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 139.8/139.8 kB 367.7 MB/s eta 0:00:00
Collecting arcgis<2.5.0,>=2.4.0
Downloading arcgis-2.4.0.tar.gz (46.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 46.8/46.8 MB 275.2 MB/s eta 0:00:00
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status 'done'
Collecting psygnal>=0.8.1
Downloading psygnal-0.11.1-py3-none-any.whl (76 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 77.0/77.0 kB 311.1 MB/s eta 0:00:00
Collecting typing-extensions>=4.2.0
Downloading typing_extensions-4.12.2-py3-none-any.whl (37 kB)
Collecting pillow
Downloading pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl (4.4 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.4/4.4 MB 277.7 MB/s eta 0:00:00
Collecting urllib3<3,>=1.26.1
Downloading urllib3-2.2.3-py3-none-any.whl (126 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 126.3/126.3 kB 301.1 MB/s eta 0:00:00
Collecting cachetools
Downloading cachetools-5.5.0-py3-none-any.whl (9.5 kB)
Collecting lxml
Downloading lxml-5.3.0-cp310-cp310-manylinux_2_28_aarch64.whl (4.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.8/4.8 MB 273.5 MB/s eta 0:00:00
Collecting cryptography
Downloading cryptography-43.0.1-cp39-abi3-manylinux_2_28_aarch64.whl (3.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.8/3.8 MB 376.4 MB/s eta 0:00:00
Collecting pandas<2.2.0,>=2.0.0
Downloading pandas-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 14.8/14.8 MB 233.2 MB/s eta 0:00:00
Collecting numpy<2,>=1.21.6
Downloading numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 14.2/14.2 MB 214.2 MB/s eta 0:00:00
Collecting matplotlib
Downloading matplotlib-3.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (8.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.2/8.2 MB 322.9 MB/s eta 0:00:00
Collecting keyring>=23.3.0
Downloading keyring-25.4.1-py3-none-any.whl (38 kB)
Collecting pylerc
Downloading pylerc-4.0.tar.gz (738 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 738.5/738.5 kB 394.7 MB/s eta 0:00:00
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status 'done'
Collecting ujson>=3
Downloading ujson-5.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (51 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 52.0/52.0 kB 270.4 MB/s eta 0:00:00
Collecting pyshp>=2
Downloading pyshp-2.3.1-py2.py3-none-any.whl (46 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 46.5/46.5 kB 251.0 MB/s eta 0:00:00
Collecting geomet
Downloading geomet-1.1.0-py3-none-any.whl (31 kB)
Collecting requests<2.32.0,>=2.30.0
Downloading requests-2.31.0-py3-none-any.whl (62 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.6/62.6 kB 290.3 MB/s eta 0:00:00
Collecting requests-oauthlib
Downloading requests_oauthlib-2.0.0-py2.py3-none-any.whl (24 kB)
Collecting requests_toolbelt
Downloading requests_toolbelt-1.0.0-py2.py3-none-any.whl (54 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 54.5/54.5 kB 287.8 MB/s eta 0:00:00
Collecting pyspnego>=0.8.0
Downloading pyspnego-0.11.1-py3-none-any.whl (130 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 130.5/130.5 kB 330.7 MB/s eta 0:00:00
Collecting requests-kerberos
Downloading requests_kerberos-0.15.0-py2.py3-none-any.whl (12 kB)
Collecting requests-gssapi
Downloading requests_gssapi-1.3.0-py3-none-any.whl (12 kB)
Collecting dask>=2023.3.2
Downloading dask-2024.9.1-py3-none-any.whl (1.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 327.0 MB/s eta 0:00:00
Collecting matplotlib-inline
Downloading matplotlib_inline-0.1.7-py3-none-any.whl (9.9 kB)
Collecting pyarrow>=11.0.0
Downloading pyarrow-17.0.0-cp310-cp310-manylinux_2_28_aarch64.whl (38.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 38.7/38.7 MB 161.3 MB/s eta 0:00:00
Collecting puremagic<2,>=1.15
Downloading puremagic-1.28-py3-none-any.whl (43 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 43.2/43.2 kB 248.7 MB/s eta 0:00:00
Collecting truststore>=0.7.0
Downloading truststore-0.9.2-py3-none-any.whl (17 kB)
Collecting ipython>=6.1.0
Downloading ipython-8.28.0-py3-none-any.whl (819 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 819.5/819.5 kB 376.4 MB/s eta 0:00:00
Collecting traitlets>=4.3.1
Downloading traitlets-5.14.3-py3-none-any.whl (85 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 85.4/85.4 kB 345.5 MB/s eta 0:00:00
Collecting jupyterlab-widgets~=3.0.12
Downloading jupyterlab_widgets-3.0.13-py3-none-any.whl (214 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 214.4/214.4 kB 402.0 MB/s eta 0:00:00
Collecting comm>=0.1.3
Downloading comm-0.2.2-py3-none-any.whl (7.2 kB)
Collecting widgetsnbextension~=4.0.12
Downloading widgetsnbextension-4.0.13-py3-none-any.whl (2.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.3/2.3 MB 398.6 MB/s eta 0:00:00
Collecting async-lru>=1.0.0
Downloading async_lru-2.0.4-py3-none-any.whl (6.1 kB)
Collecting jupyter-core
Downloading jupyter_core-5.7.2-py3-none-any.whl (28 kB)
Collecting ipykernel>=6.5.0
Downloading ipykernel-6.29.5-py3-none-any.whl (117 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 117.2/117.2 kB 311.7 MB/s eta 0:00:00
Collecting tomli>=1.2.2
Downloading tomli-2.0.2-py3-none-any.whl (13 kB)
Collecting tornado>=6.2.0
Downloading tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (437 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 437.2/437.2 kB 399.4 MB/s eta 0:00:00
Collecting jupyter-lsp>=2.0.0
Downloading jupyter_lsp-2.2.5-py3-none-any.whl (69 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 69.1/69.1 kB 293.1 MB/s eta 0:00:00
Collecting httpx>=0.25.0
Downloading httpx-0.27.2-py3-none-any.whl (76 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 76.4/76.4 kB 290.8 MB/s eta 0:00:00
Collecting jupyter-server<3,>=2.4.0
Downloading jupyter_server-2.14.2-py3-none-any.whl (383 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 383.6/383.6 kB 382.5 MB/s eta 0:00:00
Collecting notebook-shim>=0.2
Downloading notebook_shim-0.2.4-py3-none-any.whl (13 kB)
Collecting setuptools>=40.1.0
Downloading setuptools-75.1.0-py3-none-any.whl (1.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 414.9 MB/s eta 0:00:00
Collecting jinja2>=3.0.3
Downloading jinja2-3.1.4-py3-none-any.whl (133 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.3/133.3 kB 359.1 MB/s eta 0:00:00
Collecting packaging
Downloading packaging-24.1-py3-none-any.whl (53 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 54.0/54.0 kB 275.5 MB/s eta 0:00:00
Collecting jupyterlab-server<3,>=2.27.1
Downloading jupyterlab_server-2.27.3-py3-none-any.whl (59 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 59.7/59.7 kB 278.6 MB/s eta 0:00:00
Collecting annotated-types>=0.6.0
Downloading annotated_types-0.7.0-py3-none-any.whl (13 kB)
Collecting pydantic-core==2.23.4
Downloading pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 265.9 MB/s eta 0:00:00
Collecting fsspec>=2021.09.0
Downloading fsspec-2024.9.0-py3-none-any.whl (179 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 179.3/179.3 kB 375.4 MB/s eta 0:00:00
Collecting pyyaml>=5.3.1
Downloading PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (718 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 718.5/718.5 kB 424.2 MB/s eta 0:00:00
Collecting partd>=1.4.0
Downloading partd-1.4.2-py3-none-any.whl (18 kB)
Collecting importlib-metadata>=4.13.0
Downloading importlib_metadata-8.5.0-py3-none-any.whl (26 kB)
Collecting click>=8.1
Downloading click-8.1.7-py3-none-any.whl (97 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 97.9/97.9 kB 345.2 MB/s eta 0:00:00
Collecting cloudpickle>=3.0.0
Downloading cloudpickle-3.0.0-py3-none-any.whl (20 kB)
Collecting toolz>=0.10.0
Downloading toolz-1.0.0-py3-none-any.whl (56 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 56.4/56.4 kB 260.9 MB/s eta 0:00:00
Collecting idna
Downloading idna-3.10-py3-none-any.whl (70 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 70.4/70.4 kB 300.4 MB/s eta 0:00:00
Collecting httpcore==1.*
Downloading httpcore-1.0.6-py3-none-any.whl (78 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.0/78.0 kB 310.3 MB/s eta 0:00:00
Collecting sniffio
Downloading sniffio-1.3.1-py3-none-any.whl (10 kB)
Collecting anyio
Downloading anyio-4.6.0-py3-none-any.whl (89 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 89.6/89.6 kB 325.7 MB/s eta 0:00:00
Collecting certifi
Downloading certifi-2024.8.30-py3-none-any.whl (167 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 167.3/167.3 kB 374.5 MB/s eta 0:00:00
Collecting h11<0.15,>=0.13
Downloading h11-0.14.0-py3-none-any.whl (58 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.3/58.3 kB 288.0 MB/s eta 0:00:00
Collecting jupyter-client>=6.1.12
Downloading jupyter_client-8.6.3-py3-none-any.whl (106 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.1/106.1 kB 323.8 MB/s eta 0:00:00
Collecting debugpy>=1.6.5
Downloading debugpy-1.8.6-py2.py3-none-any.whl (5.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.2/5.2 MB 191.7 MB/s eta 0:00:00
Collecting nest-asyncio
Downloading nest_asyncio-1.6.0-py3-none-any.whl (5.2 kB)
Collecting pyzmq>=24
Downloading pyzmq-26.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (673 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 673.2/673.2 kB 390.2 MB/s eta 0:00:00
Collecting psutil
Downloading psutil-6.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (292 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 292.0/292.0 kB 367.5 MB/s eta 0:00:00
Collecting pexpect>4.3
Downloading pexpect-4.9.0-py2.py3-none-any.whl (63 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 63.8/63.8 kB 240.3 MB/s eta 0:00:00
Collecting exceptiongroup
Downloading exceptiongroup-1.2.2-py3-none-any.whl (16 kB)
Collecting prompt-toolkit<3.1.0,>=3.0.41
Downloading prompt_toolkit-3.0.48-py3-none-any.whl (386 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 386.6/386.6 kB 408.0 MB/s eta 0:00:00
Collecting pygments>=2.4.0
Downloading pygments-2.18.0-py3-none-any.whl (1.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 392.1 MB/s eta 0:00:00
Collecting stack-data
Downloading stack_data-0.6.3-py3-none-any.whl (24 kB)
Collecting decorator
Downloading decorator-5.1.1-py3-none-any.whl (9.1 kB)
Collecting jedi>=0.16
Downloading jedi-0.19.1-py2.py3-none-any.whl (1.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 386.2 MB/s eta 0:00:00
Collecting MarkupSafe>=2.0
Downloading MarkupSafe-3.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (21 kB)
Collecting platformdirs>=2.5
Downloading platformdirs-4.3.6-py3-none-any.whl (18 kB)
Collecting overrides>=5.0
Downloading overrides-7.7.0-py3-none-any.whl (17 kB)
Collecting prometheus-client>=0.9
Downloading prometheus_client-0.21.0-py3-none-any.whl (54 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 54.7/54.7 kB 284.3 MB/s eta 0:00:00
Collecting jupyter-events>=0.9.0
Downloading jupyter_events-0.10.0-py3-none-any.whl (18 kB)
Collecting nbconvert>=6.4.4
Downloading nbconvert-7.16.4-py3-none-any.whl (257 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 257.4/257.4 kB 401.1 MB/s eta 0:00:00
Collecting jupyter-server-terminals>=0.4.4
Downloading jupyter_server_terminals-0.5.3-py3-none-any.whl (13 kB)
Collecting nbformat>=5.3.0
Downloading nbformat-5.10.4-py3-none-any.whl (78 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.5/78.5 kB 312.5 MB/s eta 0:00:00
Collecting send2trash>=1.8.2
Downloading Send2Trash-1.8.3-py3-none-any.whl (18 kB)
Collecting terminado>=0.8.3
Downloading terminado-0.18.1-py3-none-any.whl (14 kB)
Collecting websocket-client>=1.7
Downloading websocket_client-1.8.0-py3-none-any.whl (58 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.8/58.8 kB 289.8 MB/s eta 0:00:00
Collecting argon2-cffi>=21.1
Downloading argon2_cffi-23.1.0-py3-none-any.whl (15 kB)
Collecting babel>=2.10
Downloading babel-2.16.0-py3-none-any.whl (9.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.6/9.6 MB 359.3 MB/s eta 0:00:00
Collecting json5>=0.9.0
Downloading json5-0.9.25-py3-none-any.whl (30 kB)
Collecting jsonschema>=4.18.0
Downloading jsonschema-4.23.0-py3-none-any.whl (88 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 88.5/88.5 kB 300.4 MB/s eta 0:00:00
Collecting jaraco.classes
Downloading jaraco.classes-3.4.0-py3-none-any.whl (6.8 kB)
Collecting SecretStorage>=3.2
Downloading SecretStorage-3.3.3-py3-none-any.whl (15 kB)
Collecting jaraco.functools
Downloading jaraco.functools-4.1.0-py3-none-any.whl (10 kB)
Collecting jeepney>=0.4.2
Downloading jeepney-0.8.0-py3-none-any.whl (48 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 48.4/48.4 kB 232.1 MB/s eta 0:00:00
Collecting jaraco.context
Downloading jaraco.context-6.0.1-py3-none-any.whl (6.8 kB)
Collecting tzdata>=2022.1
Downloading tzdata-2024.2-py2.py3-none-any.whl (346 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 346.6/346.6 kB 408.2 MB/s eta 0:00:00
Collecting python-dateutil>=2.8.2
Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 229.9/229.9 kB 392.3 MB/s eta 0:00:00
Collecting pytz>=2020.1
Downloading pytz-2024.2-py2.py3-none-any.whl (508 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 508.0/508.0 kB 411.1 MB/s eta 0:00:00
Collecting charset-normalizer<4,>=2
Downloading charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (140 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 140.0/140.0 kB 360.6 MB/s eta 0:00:00
Collecting cffi>=1.12
Downloading cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (448 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 448.2/448.2 kB 410.7 MB/s eta 0:00:00
Collecting fonttools>=4.22.0
Downloading fonttools-4.54.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.6/4.6 MB 130.1 MB/s eta 0:00:00
Collecting kiwisolver>=1.3.1
Downloading kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.4 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.4/1.4 MB 381.1 MB/s eta 0:00:00
Collecting pyparsing>=2.3.1
Downloading pyparsing-3.1.4-py3-none-any.whl (104 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 104.1/104.1 kB 322.9 MB/s eta 0:00:00
Collecting contourpy>=1.0.1
Downloading contourpy-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (308 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 308.5/308.5 kB 385.5 MB/s eta 0:00:00
Collecting cycler>=0.10
Downloading cycler-0.12.1-py3-none-any.whl (8.3 kB)
Collecting gssapi
Downloading gssapi-1.9.0.tar.gz (94 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 94.3/94.3 kB 335.9 MB/s eta 0:00:00
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'error'
error: subprocess-exited-with-error
× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> [21 lines of output]
/bin/sh: 1: krb5-config: not found |
ideally jupyterlab/ipywidgets/krb5 stuff should be optional group dependencies that can be installed like It's ridiculous that client-side/presentation dependencies are included for just using REST apis. |
@ruckc The jupyterlab/ipywidgets depedencies are no longer part of the arcgis package. However if you want to use mapping then yes you need them for the arcgis-mapping package. We are working on doing this with other aspects of the api as well |
@nanaeaubry - that is good to know. |
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
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.
The text was updated successfully, but these errors were encountered: