# Basic requirements for main scripts
#
# By default only the cases used in multiple scripts are installed. Several
# types of optional dependencies are included, including devel for convenience,
# and full for everything.
#
# Note:
# - Usage examples:
#   1. Usual
#      pip3 install -r requirements.txt
#   2. Optional (i.e., including most optional):
#      pip3 install --verbose $(perl -pe 's/^#opt#\s*//;  s/\s*#.*//;' ~/Mezcla/requirements.txt | grep -v '^#')
#   3. Full (i.e., including all optional):
#      pip3 install --verbose $(perl -pe 's/^#(opt|full)#\s*//;  s/\s*#.*//;' ~/Mezcla/requirements.txt | grep -v '^#')
#      # TODO2: --ignore-errors [maldito pip]; set pip-update check
#      perl -pe 's/^#(opt|devel|full)#\s*//;  s/\s*#.*//;' ~/Mezcla/requirements.txt | grep -v '^#' | xargs -I '{}' pip3 install --verbose '{}'
# - use `pip freeze` to get current list of package specifications (n.b., >= better than == unless specific version needed)
#
# Warning:
# - Installing textract from PyPI fails https://github.com/deanmalmgren/textract/issues/461.
# - Workaround for silly pip installation issues (e.g., Spacy):
#   $ perl -pe 's/\s*#.*//;' requirements.txt | xargs -I '{}' pip install '{}'
#
# Installation:
# - python -m nltk.downloader punkt averaged_perceptron_tagger stopwords
#
# TODO:
# - check absl module ($ grep -r "absl" .)
# - add support for this to setup.py
#...............................................................................
# Regular requirements
#
HTMLParser
absl_py
asttokens
beautifulsoup4
bs4
cachetools
cherrypy
clip_interrogator
datasets                      # Hugging Face (HF) data
#opt# diffusers               # Stale Diffusion; TEMP
#opt# xformers                # composable Transformer building blocks
diskcache
extcolors>=1.0.0
executing                     # code introspection a la icecream
flair
flask
git+https://github.com/tehabstract/textract.git
gradio==3.48                        # UI support (e.g., HF-based apps)
importlib_metadata
langchain
langchain_community
#opt# kenlm                   # language model support (NOTE: problem with wheel; see https://kheafield.com/code/kenlm)
## OLD: librosa>=0.10.0
lxml
mako
matplotlib
more_itertools
nltk
numpy>=1.18.5
pandas>=1.3.0
pyaml
pyctcdecode                   # CTC beam search decoder for speech recognition
## OLD: pydantic
pyenchant
pysbd
pytest
requests
scikit-learn
scipy
#opt# sentencepiece           # BERT tokenization; TEMP
six
stop_words
#opt# tensorrt                # NVidia GPU support
transformers                  # HF models
torch
unittest_parametrize          # pytest-like for classes
#opt# torchaudio
webcolors==1.13
wheel
## NOTE: temporarily disabled due to stupid docker disk space constraints
## TODO: xgboost
#
#...............................................................................
# Optional requirements
#
# TODO:
# - download Spacy model(s):
#   python -m spacy download en_core_web_lg
# - install bash kernel
#   python -m bash_kernel.install
# - add '#opt#deprecated#' (e.g., useful for deprecated functions/modules)
# NOTE:
# - tensorflow and related not installed by default due to size of repo and C compilation overhead.
# - ipython, pylint, etc. used for setting up development environment
#
#opt# SpeechRecognition
#opt# accelerate
#opt# astor                             # AST utils
#devel# bash_kernel
#opt# ctransformers
#devel# colout
#devel# coverage
#devel# flit
#opt# gensim
#opt# ibm-watson
#opt# ibm_cloud_sdk_core
#devel# ipython
#devel# jupyter
#opt# libcst
#opt# librosa
#opt# pocketsphinx
#devel# mypy
## TODO?: #opt#
pydantic==2.9.2
#devel# pylint
#devel# pyyaml
#opt# scispacy
#opt# selenium
#opt# sentence-transformers
#opt# Sphinx
## TODO?: make unittest_parametrize regular dependency
#devel# unittest_parametrize
#
## OLD: #opt# spacy>=3.0.0
## TODO:
## note: See https://github.com/explosion/spacy-models/releases/tag/en_core_web_md-3.7.0
spacy==3.7.0
en_core_web_md@https://github.com/explosion/spacy-models/releases/download/en_core_web_md-3.7.0/en_core_web_md-3.7.0.tar.gz
#
## See https://github.com/explosion/spacy-models/releases/tag/en_core_web_md-3.2.0
## OLD
## spacy==3.2.6
## en_core_web_md@https://github.com/explosion/spacy-models/releases/download/en_core_web_md-3.2.0/en_core_web_md-3.2.0.tar.gz
## typing_extensions==4.7.0
## OLD: typing_extensions>=4.7.0
## TODO2: un pin after updating code
typing_extensions==4.12.2
#
#opt# textract
#devel# types-six                         # typing stubs for six
#opt# youtube_transcript_api
#opt# vaderSentiment
#...............................................................................
# "Fully optional" requirements
# Note: these generally involve large or long installations.
#
#full# bert==2.2.0
#full# albert==1.3.1
#full# bert-tensorflow
#full# keras
#full# sacremoses
#full# tensorflow
#full# tensorflow_hub
#full# tensorrt
