# All dependencies needed to run rucio client (and server/daemons) should be defined here
requests>=2.25.0,<=2.28.2; python_version >= '3.9'          # Python HTTP for Humans.
requests>=2.20.0,<=2.27.1; python_version < '3.9'
urllib3~=1.26.0; python_version >= '3.9'                    # HTTP library with thread-safe connection pooling, file post, etc.
urllib3>=1.24.2,<=1.26.14; python_version < '3.9'
dogpile.cache~=1.1.2                                        # Caching API plugins (1.1.2 is the first version to support pymemcache)
tabulate~=0.8.0                                             # Pretty-print tabular data
jsonschema~=4.17.3; python_version >= '3.9'                 # For JSON schema validation (Policy modules)
jsonschema~=3.2.0; python_version < '3.9'
dataclasses==0.8.0; python_version == '3.6'

# All dependencies needed in extras for rucio client (and server/daemons) should be defined here
paramiko~=3.0.0                                             # ssh_extras; SSH2 protocol library (also needed in the server)
kerberos~=1.3.1                                             # kerberos_extras for client and server
pykerberos~=1.2.4                                           # kerberos_extras for client and server
requests-kerberos>=0.14.0                                   # kerberos_extras for client and server
python-swiftclient~=4.2.0                                   # swift_extras
argcomplete~=2.1.1                                          # argcomplete_extras; Bash tab completion for argparse
python-magic~=0.4.27                                        # dumper_extras; File type identification using libmagic

# All dependencies needed to run rucio server/daemons should be defined here
SQLAlchemy==2.0.5.post1; python_version >= '3.9'            # DB backend
SQLAlchemy==1.4.46; python_version < '3.9'
alembic~=1.10.2; python_version >= '3.9'                    # Lightweight database migration tool for SQLAlchemy
alembic~=1.7.7; python_version < '3.9'
pymemcache==4.0.0; python_version >= '3.9'                  # A comprehensive, fast, pure-Python memcached client (Used by Dogpile)
pymemcache==3.5.2; python_version < '3.9'
python-dateutil==2.8.2                                      # Extensions to the standard datetime module
stomp.py==8.1.0                                             # ActiveMQ Messaging Protocol
statsd==4.0.1; python_version >= '3.9'                      # Needed to log into graphite with more than 1 Hz
statsd==3.3.0; python_version < '3.9'
geoip2==4.6.0                                               # GeoIP2 API (for IPv6 support)
google-auth==2.16.2                                         # Google authentication library for Python
redis==4.5.1; python_version >= '3.9'                       # Python client for Redis key-value store
redis==4.3.4; python_version < '3.9'
Flask==2.2.3; python_version >= '3.9'                       # Python web framework
Flask==2.0.3; python_version < '3.9'
oic==1.5.0; python_version >= '3.9'                         # for authentication via OpenID Connect protocol
oic==1.3.0; python_version < '3.9'
prometheus_client==0.16.0                                   # Python client for the Prometheus monitoring system
boto3==1.26.8; python_version >= '3.9'                      # S3 boto protocol (new version)
boto3==1.23.10; python_version < '3.9'

# All dependencies needed in extras for rucio server/daemons should be defined here
cx_oracle==8.3.0                                            # oracle_extras
psycopg2-binary==2.9.5                                      # postgresql_extras
PyMySQL==1.0.2                                              # mysql_extras
PyYAML==5.4.1                                               # globus_extras and used for reading test configuration files
globus-sdk==3.17.0; python_version >= '3.9'                 # globus_extras
globus-sdk==3.16.0; python_version < '3.9'
python3-saml==1.15.0                                        # saml_extras
pymongo==4.3.3; python_version >= '3.9'                     # pymongo (metadata plugin)
pymongo==4.1.1; python_version < '3.9'

# All dependencies needed to develop/test rucio should be defined here
pytest==7.2.2; python_version >= '3.9'
pytest==7.0.1; python_version < '3.9'
pytest-xdist~=3.2.0; python_version >= '3.9'                # Used for parallel testing
pytest-xdist~=3.0.2; python_version < '3.9'
pyflakes==3.0.1; python_version >= '3.9'                    # Passive checker of Python programs
pyflakes==2.5.0; python_version < '3.9'
flake8==6.0.0; python_version >= '3.9'                      # Wrapper around PyFlakes&pep8; python_version < '3.9'
flake8==5.0.4; python_version < '3.9'
pycodestyle==2.10.0; python_version >= '3.9'                # New package replacing pep8; python_version < '3.9'
pycodestyle==2.9.1; python_version < '3.9'
pylint==2.17.0; python_version >= '3.9'
pylint==2.13.9; python_version < '3.9'
astroid<=2.15.0; python_version >= '3.9'
astroid<=2.11.7; python_version < '3.9'
virtualenv==20.20.0; python_version >= '3.9'                # Virtual Python Environment builder
virtualenv==20.16.2; python_version < '3.9'
xmltodict==0.13.0; python_version >= '3.9'                  # Makes working with XML feel like you are working with JSON
xmltodict==0.12.0; python_version < '3.9'
pytz==2022.7.1                                              # World timezone definitions, modern and historical
pydoc-markdown~=4.6.4; python_version >= '3.9'              # Used for generating Markdown documentation for docusaurus
pydoc-markdown~=3.13.0; python_version < '3.9'
sh~=2.0.2; python_version >= '3.9'                          # Convenience library for running subprocesses in Python
sh~=1.14.3; python_version < '3.9'
apispec==6.3.0; python_version >= '3.9'                     # Generate OpenApi definition out of pydoc comments
apispec==5.1.1; python_version < '3.9'
apispec-webframeworks                                       # Integration of apispec in Flask
