Skip to content

CI: dev requirements version inconsistencies #45178

Closed
@attack68

Description

@attack68

Pandas version checks

  • I have checked that this issue has not already been reported.

  • I have confirmed this bug exists on the latest version of pandas.

  • I have confirmed this bug exists on the master branch of pandas.

Reproducible Example

..

Issue Description

Having difficulty replicating the ci checks locally so trying to install a new environment. My package resolver doesn't work. Trying to debug I have:

>>> pip-compile requirements-dev.in  (converted from .txt)
There are incompatible versions in the resolved dependencies:
  aiobotocore<2.0.0 (from -r requirements-dev2.in (line 77))
  aiobotocore~=2.0.1 (from s3fs==2021.11.1->-r requirements-dev2.in (line 76))

OK so I lower my version of s3fs to s3fs<2021.11.1

>>> pip-compile requirements-dev.in  (converted from .txt)
There are incompatible versions in the resolved dependencies:
  botocore>=1.11 (from -r requirements-dev2.in (line 40))
  botocore<1.24.0,>=1.23.27 (from boto3==1.20.27->-r requirements-dev2.in (line 39))
  botocore<1.20.107,>=1.20.106 (from aiobotocore==1.4.2->-r requirements-dev2.in (line 77))
  botocore>=1.12.201 (from moto==2.3.0->-r requirements-dev2.in (line 42))

OK so now I lower boto3 to boto3<1.17.1:

>>> pip-compile ...
There are incompatible versions in the resolved dependencies:
  fsspec>=0.7.4 (from -r requirements-dev2.in (line 78))
  fsspec (from fastparquet==0.7.2->-r requirements-dev2.in (line 72))
  fsspec>=0.6.0 (from dask==2021.12.0->-r requirements-dev2.in (line 31))
  fsspec==2021.11.0 (from s3fs==2021.11.0->-r requirements-dev2.in (line 76))
  fsspec==2021.11.1 (from gcsfs==2021.11.1->-r requirements-dev2.in (line 79))

And finally I lower gcsfs to gcsfs==2021.11.0.

And it resolves!

I wonder if it is worth using a package compiler to avoid these issues now that many packages are in the development requirements and haven't been specifically pinned? Then at least everyone can be on the same environment?

I also have a suspicion that numpy==1.20.3 is not sufficient to run the mypy typing checks since I get a npt error. With 1.21 installed I don't get this error.

#
# This file is autogenerated by pip-compile with python 3.9
# To update, run:
#
#    pip-compile requirements-dev2.in
#
aiobotocore==1.4.2
    # via
    #   -r requirements-dev2.in
    #   s3fs
aiohttp==3.8.1
    # via
    #   aiobotocore
    #   gcsfs
    #   s3fs
aioitertools==0.8.0
    # via aiobotocore
aiosignal==1.2.0
    # via aiohttp
alabaster==0.7.12
    # via sphinx
appdirs==1.4.4
    # via black
appnope==0.1.2
    # via
    #   ipykernel
    #   ipython
argon2-cffi==21.3.0
    # via notebook
argon2-cffi-bindings==21.2.0
    # via argon2-cffi
asv==0.4.2
    # via -r requirements-dev2.in
async-timeout==4.0.2
    # via aiohttp
attrs==21.4.0
    # via
    #   aiohttp
    #   flake8-bugbear
    #   hypothesis
    #   jsonschema
    #   pytest
babel==2.9.1
    # via sphinx
backcall==0.2.0
    # via ipython
beautifulsoup4==4.10.0
    # via -r requirements-dev2.in
black==21.5b2
    # via -r requirements-dev2.in
bleach==4.1.0
    # via nbconvert
blosc==1.10.6
    # via -r requirements-dev2.in
boto3==1.17.0
    # via
    #   -r requirements-dev2.in
    #   moto
botocore==1.20.106
    # via
    #   -r requirements-dev2.in
    #   aiobotocore
    #   boto3
    #   moto
    #   s3transfer
bottleneck==1.3.2
    # via -r requirements-dev2.in
cachetools==4.2.4
    # via google-auth
certifi==2021.10.8
    # via requests
cffi==1.15.0
    # via
    #   argon2-cffi-bindings
    #   cryptography
cfgv==3.3.1
    # via pre-commit
cftime==1.5.1.1
    # via -r requirements-dev2.in
charset-normalizer==2.0.9
    # via
    #   aiohttp
    #   requests
click==8.0.3
    # via
    #   black
    #   flask
cloudpickle==2.0.0
    # via
    #   -r requirements-dev2.in
    #   dask
coverage[toml]==6.2
    # via pytest-cov
cpplint==1.5.5
    # via -r requirements-dev2.in
cramjam==2.5.0
    # via fastparquet
cryptography==36.0.1
    # via moto
cycler==0.11.0
    # via matplotlib
cython==0.29.26
    # via -r requirements-dev2.in
dask==2021.12.0
    # via -r requirements-dev2.in
debugpy==1.5.1
    # via ipykernel
decorator==5.1.0
    # via
    #   gcsfs
    #   ipython
defusedxml==0.7.1
    # via
    #   nbconvert
    #   odfpy
distlib==0.3.4
    # via virtualenv
docutils==0.17.1
    # via
    #   nbsphinx
    #   sphinx
    #   sphinx-panels
entrypoints==0.3
    # via
    #   jupyter-client
    #   nbconvert
et-xmlfile==1.1.0
    # via openpyxl
execnet==1.9.0
    # via pytest-xdist
fastparquet==0.7.2
    # via -r requirements-dev2.in
feedparser==6.0.8
    # via -r requirements-dev2.in
filelock==3.4.2
    # via virtualenv
flake8==4.0.1
    # via
    #   -r requirements-dev2.in
    #   flake8-bugbear
    #   flake8-comprehensions
    #   pandas-dev-flaker
flake8-bugbear==21.3.2
    # via -r requirements-dev2.in
flake8-comprehensions==3.7.0
    # via -r requirements-dev2.in
flask==2.0.2
    # via -r requirements-dev2.in
fonttools==4.28.5
    # via matplotlib
frozenlist==1.2.0
    # via
    #   aiohttp
    #   aiosignal
fsspec==2021.11.0
    # via
    #   -r requirements-dev2.in
    #   dask
    #   fastparquet
    #   gcsfs
    #   s3fs
gcsfs==2021.11.0
    # via -r requirements-dev2.in
gitdb==4.0.9
    # via
    #   -r requirements-dev2.in
    #   gitpython
gitpython==3.1.24
    # via -r requirements-dev2.in
google-api-core==2.3.2
    # via
    #   google-cloud-core
    #   google-cloud-storage
google-auth==2.3.3
    # via
    #   gcsfs
    #   google-api-core
    #   google-auth-oauthlib
    #   google-cloud-core
    #   google-cloud-storage
google-auth-oauthlib==0.4.6
    # via gcsfs
google-cloud-core==2.2.1
    # via google-cloud-storage
google-cloud-storage==1.43.0
    # via gcsfs
google-crc32c==1.3.0
    # via google-resumable-media
google-resumable-media==2.1.0
    # via google-cloud-storage
googleapis-common-protos==1.54.0
    # via google-api-core
greenlet==1.1.2
    # via sqlalchemy
html5lib==1.1
    # via -r requirements-dev2.in
hypothesis==6.34.1
    # via -r requirements-dev2.in
identify==2.4.1
    # via pre-commit
idna==3.3
    # via
    #   requests
    #   yarl
imagesize==1.3.0
    # via sphinx
importlib-metadata==4.10.0
    # via markdown
iniconfig==1.1.1
    # via pytest
ipykernel==6.6.0
    # via
    #   -r requirements-dev2.in
    #   ipywidgets
    #   notebook
ipython==7.30.1
    # via
    #   -r requirements-dev2.in
    #   ipykernel
    #   ipywidgets
ipython-genutils==0.2.0
    # via
    #   ipywidgets
    #   nbformat
    #   notebook
ipywidgets==7.6.5
    # via -r requirements-dev2.in
isort==5.10.1
    # via -r requirements-dev2.in
itsdangerous==2.0.1
    # via flask
jedi==0.18.1
    # via ipython
jinja2==3.0.3
    # via
    #   -r requirements-dev2.in
    #   flask
    #   moto
    #   nbconvert
    #   nbsphinx
    #   notebook
    #   numpydoc
    #   sphinx
jmespath==0.10.0
    # via
    #   boto3
    #   botocore
jsonschema==4.3.3
    # via nbformat
jupyter-client==7.1.0
    # via
    #   ipykernel
    #   nbclient
    #   notebook
jupyter-core==4.9.1
    # via
    #   jupyter-client
    #   nbconvert
    #   nbformat
    #   notebook
jupyterlab-pygments==0.1.2
    # via nbconvert
jupyterlab-widgets==1.0.2
    # via ipywidgets
kiwisolver==1.3.2
    # via matplotlib
llvmlite==0.37.0
    # via numba
locket==0.2.1
    # via partd
lxml==4.7.1
    # via -r requirements-dev2.in
markdown==3.3.6
    # via -r requirements-dev2.in
markupsafe==2.0.1
    # via
    #   jinja2
    #   moto
matplotlib==3.5.1
    # via
    #   -r requirements-dev2.in
    #   seaborn
matplotlib-inline==0.1.3
    # via
    #   ipykernel
    #   ipython
mccabe==0.6.1
    # via flake8
mistune==0.8.4
    # via nbconvert
moto==2.3.0
    # via -r requirements-dev2.in
multidict==5.2.0
    # via
    #   aiohttp
    #   yarl
mypy==0.930
    # via -r requirements-dev2.in
mypy-extensions==0.4.3
    # via
    #   black
    #   mypy
natsort==8.0.2
    # via -r requirements-dev2.in
nbclient==0.5.9
    # via nbconvert
nbconvert==6.4.0
    # via
    #   -r requirements-dev2.in
    #   nbsphinx
    #   notebook
nbformat==5.1.3
    # via
    #   -r requirements-dev2.in
    #   ipywidgets
    #   nbclient
    #   nbconvert
    #   nbsphinx
    #   notebook
nbsphinx==0.8.8
    # via -r requirements-dev2.in
nest-asyncio==1.5.4
    # via
    #   jupyter-client
    #   nbclient
    #   notebook
nodeenv==1.6.0
    # via pre-commit
notebook==6.4.6
    # via
    #   -r requirements-dev2.in
    #   widgetsnbextension
numba==0.54.1
    # via -r requirements-dev2.in
numexpr==2.8.1
    # via
    #   -r requirements-dev2.in
    #   tables
numpy==1.20.3
    # via
    #   -r requirements-dev2.in
    #   bottleneck
    #   cftime
    #   fastparquet
    #   matplotlib
    #   numba
    #   numexpr
    #   pandas
    #   patsy
    #   pyarrow
    #   scipy
    #   seaborn
    #   statsmodels
    #   tables
    #   xarray
numpydoc==1.1.0
    # via -r requirements-dev2.in
oauthlib==3.1.1
    # via requests-oauthlib
odfpy==1.4.1
    # via -r requirements-dev2.in
openpyxl==3.0.9
    # via -r requirements-dev2.in
packaging==21.3
    # via
    #   bleach
    #   dask
    #   matplotlib
    #   numexpr
    #   pytest
    #   sphinx
    #   tables
pandas==1.3.5
    # via
    #   fastparquet
    #   pyreadstat
    #   seaborn
    #   statsmodels
    #   xarray
pandas-dev-flaker==0.2.0
    # via -r requirements-dev2.in
pandoc==2.0.1
    # via -r requirements-dev2.in
pandocfilters==1.5.0
    # via nbconvert
parso==0.8.3
    # via jedi
partd==1.2.0
    # via
    #   -r requirements-dev2.in
    #   dask
pathspec==0.9.0
    # via black
patsy==0.5.2
    # via statsmodels
pexpect==4.8.0
    # via ipython
pickleshare==0.7.5
    # via ipython
pillow==9.0.0
    # via matplotlib
platformdirs==2.4.1
    # via virtualenv
pluggy==1.0.0
    # via pytest
plumbum==1.7.2
    # via pandoc
ply==3.11
    # via pandoc
pre-commit==2.16.0
    # via -r requirements-dev2.in
prometheus-client==0.12.0
    # via notebook
prompt-toolkit==3.0.24
    # via ipython
protobuf==3.19.1
    # via
    #   google-api-core
    #   google-cloud-storage
ptyprocess==0.7.0
    # via
    #   pexpect
    #   terminado
py==1.11.0
    # via
    #   pytest
    #   pytest-forked
pyarrow==6.0.1
    # via -r requirements-dev2.in
pyasn1==0.4.8
    # via
    #   pyasn1-modules
    #   rsa
pyasn1-modules==0.2.8
    # via google-auth
pycodestyle==2.8.0
    # via
    #   -r requirements-dev2.in
    #   flake8
pycparser==2.21
    # via cffi
pyflakes==2.4.0
    # via flake8
pygments==2.11.1
    # via
    #   ipython
    #   jupyterlab-pygments
    #   nbconvert
    #   sphinx
pyparsing==3.0.6
    # via
    #   matplotlib
    #   packaging
pyreadstat==1.1.4
    # via -r requirements-dev2.in
pyrsistent==0.18.0
    # via jsonschema
pytest==6.2.5
    # via
    #   -r requirements-dev2.in
    #   pytest-asyncio
    #   pytest-cov
    #   pytest-cython
    #   pytest-forked
    #   pytest-instafail
    #   pytest-xdist
pytest-asyncio==0.16.0
    # via -r requirements-dev2.in
pytest-cov==3.0.0
    # via -r requirements-dev2.in
pytest-cython==0.1.1.post0
    # via -r requirements-dev2.in
pytest-forked==1.4.0
    # via pytest-xdist
pytest-instafail==0.4.2
    # via -r requirements-dev2.in
pytest-xdist==2.5.0
    # via -r requirements-dev2.in
python-dateutil==2.8.2
    # via
    #   -r requirements-dev2.in
    #   botocore
    #   jupyter-client
    #   matplotlib
    #   moto
    #   pandas
python-snappy==0.6.0
    # via -r requirements-dev2.in
pytz==2021.3
    # via
    #   -r requirements-dev2.in
    #   babel
    #   moto
    #   pandas
pyupgrade==2.31.0
    # via -r requirements-dev2.in
pyyaml==6.0
    # via
    #   -r requirements-dev2.in
    #   dask
    #   pre-commit
pyzmq==22.3.0
    # via
    #   jupyter-client
    #   notebook
regex==2021.11.10
    # via black
requests==2.27.0
    # via
    #   -r requirements-dev2.in
    #   gcsfs
    #   google-api-core
    #   google-cloud-storage
    #   moto
    #   requests-oauthlib
    #   responses
    #   sphinx
requests-oauthlib==1.3.0
    # via google-auth-oauthlib
responses==0.16.0
    # via moto
rsa==4.8
    # via google-auth
s3fs==2021.11.0
    # via -r requirements-dev2.in
s3transfer==0.3.7
    # via boto3
scipy==1.7.3
    # via
    #   -r requirements-dev2.in
    #   seaborn
    #   statsmodels
seaborn==0.11.2
    # via -r requirements-dev2.in
send2trash==1.8.0
    # via notebook
sgmllib3k==1.0.0
    # via feedparser
six==1.16.0
    # via
    #   asv
    #   bleach
    #   google-auth
    #   google-cloud-storage
    #   html5lib
    #   patsy
    #   python-dateutil
    #   responses
    #   thrift
    #   virtualenv
smmap==5.0.0
    # via gitdb
snowballstemmer==2.2.0
    # via sphinx
sortedcontainers==2.4.0
    # via hypothesis
soupsieve==2.3.1
    # via beautifulsoup4
sphinx==4.3.2
    # via
    #   -r requirements-dev2.in
    #   nbsphinx
    #   numpydoc
    #   sphinx-panels
sphinx-panels==0.6.0
    # via -r requirements-dev2.in
sphinxcontrib-applehelp==1.0.2
    # via sphinx
sphinxcontrib-devhelp==1.0.2
    # via sphinx
sphinxcontrib-htmlhelp==2.0.0
    # via sphinx
sphinxcontrib-jsmath==1.0.1
    # via sphinx
sphinxcontrib-qthelp==1.0.3
    # via sphinx
sphinxcontrib-serializinghtml==1.1.5
    # via sphinx
sqlalchemy==1.4.29
    # via -r requirements-dev2.in
statsmodels==0.13.1
    # via -r requirements-dev2.in
tables==3.7.0
    # via -r requirements-dev2.in
tabulate==0.8.9
    # via -r requirements-dev2.in
terminado==0.12.1
    # via notebook
testpath==0.5.0
    # via nbconvert
thrift==0.15.0
    # via fastparquet
tokenize-rt==4.2.1
    # via pyupgrade
toml==0.10.2
    # via
    #   black
    #   pre-commit
    #   pytest
tomli==2.0.0
    # via
    #   coverage
    #   mypy
toolz==0.11.2
    # via
    #   -r requirements-dev2.in
    #   dask
    #   partd
tornado==6.1
    # via
    #   ipykernel
    #   jupyter-client
    #   notebook
    #   terminado
traitlets==5.1.1
    # via
    #   ipykernel
    #   ipython
    #   ipywidgets
    #   jupyter-client
    #   jupyter-core
    #   matplotlib-inline
    #   nbclient
    #   nbconvert
    #   nbformat
    #   nbsphinx
    #   notebook
types-pymysql==1.0.8
    # via -r requirements-dev2.in
types-python-dateutil==2.8.4
    # via -r requirements-dev2.in
types-pytz==2021.3.3
    # via -r requirements-dev2.in
types-setuptools==57.4.5
    # via -r requirements-dev2.in
typing-extensions==4.0.1
    # via
    #   gitpython
    #   mypy
urllib3==1.26.7
    # via
    #   botocore
    #   requests
    #   responses
virtualenv==20.13.0
    # via pre-commit
wcwidth==0.2.5
    # via prompt-toolkit
webencodings==0.5.1
    # via
    #   bleach
    #   html5lib
werkzeug==2.0.2
    # via
    #   flask
    #   moto
widgetsnbextension==3.5.2
    # via ipywidgets
wrapt==1.13.3
    # via aiobotocore
xarray==0.18.2
    # via -r requirements-dev2.in
xlrd==2.0.1
    # via -r requirements-dev2.in
xlsxwriter==3.0.2
    # via -r requirements-dev2.in
xlwt==1.3.0
    # via -r requirements-dev2.in
xmltodict==0.12.0
    # via moto
yarl==1.7.2
    # via aiohttp
zipp==3.7.0
    # via importlib-metadata

# The following packages are considered to be unsafe in a requirements file:
# pip
# setuptools

Expected Behavior

packages are correctly resolved and valid.

Installed Versions

Replace this line with the output of pd.show_versions()

Metadata

Metadata

Assignees

No one assigned

    Labels

    CIContinuous IntegrationDependenciesRequired and optional dependencies

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions