# PACKAGE DEPENDENCIES
#
# Essential: only 5, they are labeled with `core`: docarray, numpy, grpcio, protobuf, pyyaml. They will be installed
#           when you do `pip install marieai`. They are essential to run 90% features & functionalities of MarieAI.
# Extensions: they are labeled with different tags. They will NOT be installed by default. One can install a group of
#           of dependencies labeled `tag` by `pip install "marieai[tag]"`
#
# FILE FORMAT
# https://hanxiao.io/2019/11/07/A-Better-Practice-for-Managing-extras-require-Dependencies-in-Python/
# Put your extra requirements here in the following format
#
# package[version]: tag1, tag2, ...
#
#
# REMARKS ON TAGS
# 1. Try to reuse the existing tags if possible.
#    If you intend to create a new tag, keep it alphabetical, short and general
# 2. Package name itself is a tag already, so you don't need to tag it again.
#    For example, 'numpy>=0.4.1: numpy' is redundant
# 3. Tag order doesn't matter; case-sensitive; duplicated tag will be ignored
# 4. Tag `all` is reserved for representing all packages

# AVAILABLE TAGS:
# core < perf < standard < devel: these tags correspond to Docker image tag
# test: required for **setting up test ENVIRONMENT**

# Need to figure out how to make this available via setup extras_require
#git+https://github.com/facebookresearch/fvcore:           standard,core
#git+https://github.com/ying09/TextFuseNet.git:            standard,core
#git+https://github.com/pytorch/fairseq.git:               standard,core


pybind11:                    standard,core
numpy:                       standard,core
# Pinning to version 3.20.2 as this will cause issues with tensorboard
#protobuf==3.20.2:            standard,core
protobuf>=3.20.2, <4.24:            standard,core
grpcio>=1.46.0,<=1.57.0:    core
grpcio-reflection>=1.46.0,<=1.57.0:  core
grpcio-health-checking>=1.46.0,<=1.57.0:  core
pyyaml>=5.3.1:              standard,core
packaging>=20.0:            standard,core
# docarray>=0.16.4:           standard,core
# docarray==0.19.1:           standard,core
#docarray>=0.19.1,<0.30.0:    standard,core
docarray>=0.16.4:           core

prometheus_client:          standard,perf
psutil:                     perf,standard,devel
uvloop:                     perf,standard,devel

opentelemetry-instrumentation-grpc: perf,standard,devel
prometheus_client>=0.12.0:          perf,standard,devel
opentelemetry-sdk>=1.14.0,<1.20.0:  perf,standard,devel
opentelemetry-exporter-otlp>=1.12.0:  perf,standard,devel
opentelemetry-exporter-prometheus>=0.33b0:  perf,standard,devel
opentelemetry-semantic-conventions>=0.33b0:    perf,standard,devel
opentelemetry-instrumentation-aiohttp-client>=0.33b0:    perf,standard,devel
opentelemetry-instrumentation-fastapi>=0.33b0: perf,standard,devel
opentelemetry-exporter-otlp-proto-grpc>=1.13.0: perf,standard,devel

fastapi>=0.76.0:            standard,devel
uvicorn[standard]<=0.23.1:  standard,devel
docker:                     standard,devel
pathspec:                   standard,devel
filelock:                   standard,devel
requests:                   standard,devel
websockets:                 standard,devel
pydantic<2.0.0:             core
python-multipart:           standard,devel
aiofiles:                   standard,devel
aiohttp:                    standard,devel
aiostream:                  standard,devel

pytest:                     test
pytest-timeout:             test
pytest-mock:                test
pytest-cov==3.0.0:          test
coverage==6.2:              test
pytest-repeat:              test
pytest-asyncio:             test
pytest-reraise:             test
mock:                       test
requests-mock:              test
pytest-custom_exit_code:    test
black==22.3.0:              test
kubernetes>=18.20.0:        test
pytest-kind==22.11.1:       test
pytest-lazy-fixture:        test
torch:                      cicd
psutil:                     test
strawberry-graphql>=0.96.0: cicd,devel


watchfiles>=0.18.0:           devel
urllib3>=1.25.9,<2.0.0:       core
transformers:                 standard,core
anyconfig:                    standard,core

python-consul2:               standard,devel
fastwer==0.1.3:               standard,core
matplotlib:                   standard,core
albumentations:               standard,core
dominate==2.7.0:              standard,core
lmdb:                         standard,core
natsort:                      standard,core
celery:                       standard,core

# opencv-python==4.5.4.60:      standard,core
#opencv-python==4.7.0.68:      standard,core
# MEMORY LEAK FIXED RELATED TO  https://github.com/opencv/opencv/issues/23633
opencv-python==4.8.1.78:      standard,core

imagecodecs:                  standard,core
imutils:                      standard,core
PyPDF4:                       standard,core
reportlab:                    standard,core
pycocotools:                  standard,core
nltk:                         standard,core
timm==0.6.12:                 standard,core
#segmentation-models-pytorch:  standard,core
Wand:                         standard,core

Cython:                       standard,core
pybind11:                     standard,core
jsons:                        standard,core
shapely:                      standard,core
gradio:                       devel
psycopg2-binary==2.8.6:       standard,core
pytest:                       standard,core
nlpaug:                       standard,core
munch:                        standard,core

# opentelemetry-api:          standard,core

onnx==1.15.0:                 standard,core
onnxruntime==1.16.3:          standard,core
onnxruntime-gpu:              standard,core
onnxconverter_common==1.13.0: standard,core
onnxmltools:                  standard,core

pika:                         standard,core
sentencepiece:                standard,core
Levenshtein:                  standard,core
boto3:                       standard,core
sqlalchemy:                   standard,core
pendulum:                     standard,core
uuid7:                        standard,core
orjson:                        standard,core

# this version is required for the current version of detectron2
omegaconf==2.3.0:             standard,core
hydra-core==1.3.1:            standard,core
Pillow-SIMD:                  standard,core

# https://github.com/facebookresearch/detectron2/issues/5010
pillow~=9.5:                  standard,core

pytesseract:                  standard,core
patchify==0.2.3:              standard,core
colorcet:                     standard,core
fast_pytorch_kmeans:          standard,core