sdsstools<1.0,>=0.4
sdss-tree<4.0,>=3.1.0
sdss-access<3.0,>=2.0
marvin-brain<1.0,>=0.2
marvin-sqlalchemy-boolean-search<1.0,>=0.2
marvin-wtforms-alchemy<1.0,>=0.16.9
astropy<5.0,>=3.3
fuzzywuzzy<1.0,>=0.15.0
python-Levenshtein<1.0,>=0.12.0
raven<7.0,>=5.32.0
packaging<21.0,>=20.1
yamlordereddictloader<1.0,>=0.2.2
scipy<2.0,>=0.18.1
pandas<2.0,>=0.18.1
matplotlib<4.0,>=1.5.3
webargs<6.0,>=1.5.2
Flask-JWT-Extended<4.0,>=3.8.1
dogpile.cache<1.1,>=0.6.2

[db]
pgpasslib<2.0,>=1.1.0
psycopg2<3.0,>=2.6.2
Flask-Login<1.0,>=0.4.1
sqlalchemy<1.4,>=1.3

[dev]
Sphinx<4.0,>=2.1.0
sphinx_bootstrap_theme<1.0,>=0.4.12
sphinxcontrib-httpdomain<2.0,>=1.5.0
sphinx_issues<2.0,>=1.0.0
sphinx-rtd-theme<2.0,>=0.4.2
nbsphinx<1.0,>=0.3.5
photutils<2.0,>=0.7
mpl-scatter-density<1.0,>=0.4
jupyter_client<8.0,>=5.2.3
ipykernel<7.0,>5.0
ipython<8.0,>=7.9.0
matplotlib<4.0,>=3.1.1
flake8<5.0,>=3.7.9
doc8<1.0,>=0.8.0
pytest<7.0,>=5.2.2
pytest-cov<4.0,>=2.8.1
pytest-sugar<1.0,>=0.9.4
pytest-remotedata<1.0,>=0.3.2
pytest-flask<2.0,>=0.10.0
pytest-xdist<3.0,>=1.18.1
pytest-timeout<3.0,>=1.2.0
isort<6.0,>=4.3.21
coveralls<4.0,>=1.1
codecov<3.0,>=2.0.15
coverage[toml]<7.0,>=5.0
ipdb<1.0,>=0.12.3
invoke<2.0,>=1.3.0
twine<4.0,>=3.1.1
wheel<1.0,>=0.33.6
psycopg2<3.0,>=2.6.2
selenium<5.0,>=3.3.1
page_objects<2.0,>=1.1.0
decorator<6.0,>=4.1.2
pympler<1.0,>=0.5
mpl-scatter-density<1.0,>=0.4
msgpack<1.0,>=0.5.4
msgpack-numpy<1.0,>=0.4.2
Flask-Testing<1.0,>=0.6.1

[docs]
Sphinx<4.0,>=2.1.0
sphinx_bootstrap_theme<1.0,>=0.4.12
sphinxcontrib-httpdomain<2.0,>=1.5.0
sphinx_issues<2.0,>=1.0.0
sphinx-rtd-theme<2.0,>=0.4.2
nbsphinx<1.0,>=0.3.5
photutils<2.0,>=0.7
mpl-scatter-density<1.0,>=0.4
jupyter_client<8.0,>=5.2.3
ipykernel<7.0,>5.0

[extra]

[web]
blinker<2.0,>=1.4
Flask-JSGlue<1.0,>=0.3
Flask-FeatureFlags<1.0,>=0.6
Flask-Compress<2.0,>=1.4
Flask-Limiter<2.0,>=0.9.4
flask-profiler<2.0,>=1.0.1
Flask-Caching<2.0,>=1.4.0
Flask-Login<1.0,>=0.4.1
Flask-Cors<4.0,>=3.0.8
Flask-Session<1.0,>=0.3.1
redis<4.0,>=3.3
validators<1.0,>=0.10.3
intervals<1.0,>=0.8.0
