# All dependencies needed to run rucio client (and server/daemons) should be defined here
requests>=2.20.0,<=2.27.1                                   # Python HTTP for Humans.
urllib3>=1.24.2,<=1.26.8                                    # HTTP library with thread-safe connection pooling, file post, etc.
dogpile.cache>=0.6.5,<0.7.0; python_version < '3.0'         # Caching API plugins (0.7.0 only Py3 compatible)
dogpile.cache>=0.6.5,<=1.1.5; python_version >= '3.0'       # Caching API plugins
tabulate~=0.8.0                                             # Pretty-print tabular data
six>=1.12.0,<=1.16.0                                        # Python 2 and 3 compatibility utilities
jsonschema~=3.2.0                                           # For JSON schema validation (Policy modules) (3.2.0 last Python 2.7 module
typing; python_version < '3.5'                              # typing package support for older Python versions
enum34<=1.1.10; python_version < '3.5'                      # Enum package backport for python 2.7

# All dependencies needed in extras for rucio client (and server/daemons) should be defined here
paramiko~=2.9.2                                             # ssh_extras; SSH2 protocol library (also needed in the server)
kerberos~=1.3.1                                             # kerberos_extras for client and server
pykerberos~=1.2.1                                           # kerberos_extras for client and server
requests-kerberos>=0.12.0                                   # kerberos_extras for client and server
python-swiftclient~=3.13.1                                  # swift_extras
argcomplete~=1.12.3                                         # argcomplete_extras; Bash tab completion for argparse
boto>=2.49.0,<2.50.0                                        # s3_extras; S3 boto protocol
pysftp>=0.2.9,<0.3                                          # sftp_extras; Used by sftp protocol
python-magic~=0.4.25                                        # dumper_extras; File type identification using libmagic
#gfal2-python                                               # dumper_extras and gfal2_extras ~~ BROKEN in pypi

# All dependencies needed to run rucio server/daemons should be defined here
SQLAlchemy==1.4.31                                          # DB backend
alembic~=1.7.6                                              # Lightweight database migration tool for SQLAlchemy
python-memcached==1.59                                      # Quick and small memcached client for Python3 (Used by Dogpile)
python-dateutil==2.8.2                                      # Extensions to the standard datetime module
stomp.py==6.1.1                                             # ActiveMQ Messaging Protocol
statsd==3.3.0                                               # Needed to log into graphite with more than 1 Hz
geoip2==4.5.0                                               # GeoIP2 API (for IPv6 support)
oauth2client==4.1.3                                         # OAuth 2.0 client library
retrying==1.3.3                                             # general-purpose retrying library to simplify the task of adding retry behavior to just about anything
redis==4.1.4                                                # Python client for Redis key-value store
Flask==2.0.3                                                # Python web framework
oic==1.3.0                                                  # for authentication via OpenID Connect protocol
prometheus_client==0.13.1                                   # Python client for the Prometheus monitoring system
boto3==1.21.13                                              # S3 boto protocol (new version)

# All dependencies needed in extras for rucio server/daemons should be defined here
cx_oracle==8.3.0                                            # oracle_extras
psycopg2-binary==2.9.3                                      # postgresql_extras
PyMySQL==1.0.2                                              # mysql_extras
PyYAML==5.4.1                                               # globus_extras and used for reading test configuration files
globus-sdk==3.5.0                                           # globus_extras
python3-saml==1.14.0                                         # saml_extras
pymongo==4.0.1                                              # pymongo (metadata plugin)

# All dependencies needed to develop/test rucio should be defined here
pytest==4.6.11; python_version < '3.6'                      # Used for running tests
pytest==7.0.1; python_version >= '3.6'
pytest-xdist~=2.5.0; python_version >= '3.6'                # Used for parallel testing on Python 3.6+
pyflakes==2.3.1                                             # Passive checker of Python programs
flake8==3.9.2                                               # Wrapper around PyFlakes&pep8 - Flake8 4.0.0 requires Python3
pycodestyle==2.7.0                                          # New package replacing pep8
pylint==1.9.4; python_version < '3.6'                       # static code analysis. 1.9.5 last 2.7 compatible release
pylint==2.8.2; python_version >= '3.6'
astroid<2.5.7                                               # things break in 2.5.7 and everyone is to blame
isort>=4.2.5,<5                                             # pylint up to now (2.5.3) does not support isort 5
virtualenv==20.13.3                                         # Virtual Python Environment builder
xmltodict==0.12.0                                           # Makes working with XML feel like you are working with JSON
pytz==2021.3                                                # World timezone definitions, modern and historical
subprocess32==3.5.4; python_version <= '3.0'                # A backport of the subprocess module from Python 3.2/3.3 for use on 2.x.
mock==3.0.5; python_version < '3.3'                         # Mock package needed for readthedocs build for mocking pycurls (mock seems to break SQLAlchemy in Python 3 tests + since Python 3.3 there is unittest.mock)
s3cmd==2.2.0                                                # Used for testing of S3
pydoc-markdown~=3.13.0; python_version >= '3.5'             # Used for generating Markdown documentation for docusaurus
#docspec_python==0.1.0; python_version >= '3.5'              # FIX incompatibility with pydoc-markdown
sh~=1.14.2                                                  # Convenience library for running subprocesses in Python
apispec==5.1.1                                              # Generate OpenApi definition out of pydoc comments
apispec-webframeworks==0.5.2                                # Integration of apispec in Flask

