diff --git a/.github/workflows/dev.yaml b/.github/workflows/dev.yaml index 9e620ff..71b7329 100644 --- a/.github/workflows/dev.yaml +++ b/.github/workflows/dev.yaml @@ -27,8 +27,7 @@ jobs: cd /home/flaskuser/traveller git pull source venv/bin/activate - pip install -r requirements.txt - pip install -r dev_requirements.txt + pip install -r requirements/dev.txt cd traveller/ python manage.py db migrate python manage.py db upgrade diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index aac45d8..606a2b2 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -24,7 +24,6 @@ jobs: - {name: Linux, python: '3.9', os: ubuntu-latest, tox: py39} - {name: '3.8', python: '3.8', os: ubuntu-latest, tox: py38} - {name: '3.7', python: '3.7', os: ubuntu-latest, tox: py37} - - {name: '3.6', python: '3.6', os: ubuntu-latest, tox: py36} steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 @@ -42,7 +41,7 @@ jobs: uses: actions/cache@v2 with: path: ${{ steps.pip-cache.outputs.dir }} - key: pip|${{ runner.os }}|${{ matrix.python }}|${{ hashFiles('setup.py') }}|${{ hashFiles('requirements.txt') }}|${{ hashFiles('dev_requirements.txt') }} + key: pip|${{ runner.os }}|${{ matrix.python }}|${{ hashFiles('setup.py') }}|${{ hashFiles('requirements/reqs.txt') }}|${{ hashFiles('requirements/dev.txt') }} - run: pip install tox codecov - run: tox -e py - name: Upload coverage to Codecov diff --git a/README.md b/README.md index 1ddb56e..ce51675 100644 --- a/README.md +++ b/README.md @@ -13,14 +13,9 @@ Activate it Install requirements.txt -```bash -$ python -m pip install -r requirements.txt -``` - -You may also want to install dev_requirements.txt ```bash -$ python -m pip install -r dev_requirements.txt +$ python -m pip install -r requirements/dev.txt ``` We are using MySQL but you can have a stab at a different db. @@ -116,7 +111,7 @@ Now in traveller/traveller run: $ python manage.py initialise ``` -Then, to get development example data (make sure requirements in dev_requirements.txt are installed) +Then, to get development example data (make sure requirements in requirements/dev.txt are installed) ```bash $ flask seed dev diff --git a/dev_requirements.txt b/dev_requirements.txt deleted file mode 100644 index 9778e89..0000000 --- a/dev_requirements.txt +++ /dev/null @@ -1,17 +0,0 @@ -Faker==13.3.4 -flake8==3.8.4 -black==20.8b1 -isort==5.6.4 -Sphinx==3.2.1 -pytest==7.1.1 -pytest-order==0.9.2 -tox==3.21.0 -pytest-cov==2.11.1 -codecov==2.1.11 -factory-boy==3.2.1 -freezegun==1.2.1 -pytest-dotenv -text-unidecode==1.3 -myst-parser -sphinx_rtd_theme -pathlib \ No newline at end of file diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 8332389..0000000 --- a/requirements.txt +++ /dev/null @@ -1,53 +0,0 @@ -alembic==1.7.7 -attrs==21.4.0 -click==8.1.2 -decorator==5.1.1 -dnspython==2.2.1 -email-validator==1.1.3 -factory-boy==3.2.1 -Faker==13.3.4 -Flask==2.1.1 -Flask-Admin==1.6.0 -Flask-Login==0.6.0 -flask-mailman==0.3.0 -flask-marshmallow==0.14.0 -Flask-Migrate==3.1.0 -Flask-Reuploaded==1.2.0 -Flask-SQLAlchemy==2.5.1 -Flask-WTF==1.0.1 -freezegun==1.2.1 -greenlet==1.1.2 -icalendar==4.0.9 -idna==3.3 -importlib-metadata==4.11.3 -infinity==1.5 -iniconfig==1.1.1 -intervals==0.9.2 -itsdangerous==2.1.2 -Jinja2==3.1.1 -Mako==1.2.0 -MarkupSafe==2.1.1 -marshmallow==3.15.0 -marshmallow-sqlalchemy==0.28.0 -mkdocs-material-extensions==1.0.3 -packaging==21.3 -pluggy==1.0.0 -py==1.11.0 -PyMySQL==1.0.2 -pyparsing==3.0.8 -pytest==7.1.1 -python-dateutil==2.8.2 -python-editor==1.0.4 -pytz==2022.1 -shopyo==4.4.2 -six==1.16.0 -SQLAlchemy==1.4.35 -SQLAlchemy-Utils==0.38.2 -tomli==2.0.1 -tzdata==2022.1 -validators==0.18.2 -Werkzeug==2.1.1 -WTForms==3.0.1 -WTForms-Alchemy==0.18.0 -WTForms-Components==0.10.5 -zipp==3.8.0 diff --git a/requirements/dev.in b/requirements/dev.in new file mode 100644 index 0000000..56adddd --- /dev/null +++ b/requirements/dev.in @@ -0,0 +1,35 @@ +Faker +flake8 +black +isort +Sphinx +pytest +pytest-order +tox +pytest-cov +codecov +factory-boy +freezegun +pytest-dotenv +text-unidecode +myst-parser +sphinx_rtd_theme +Faker +Flask +Flask-Admin +Flask-Login +flask-mailman +flask-marshmallow +Flask-Migrate +Flask-Reuploaded +Flask-SQLAlchemy +Flask-WTF +icalendar +shopyo==4.4.2 +marshmallow-sqlalchemy +PyMySQL +pytz==2022.1 +WTForms-Alchemy==0.18.0 +python-dateutil +python-editor +pip-tools==6.6.0 \ No newline at end of file diff --git a/requirements/dev.txt b/requirements/dev.txt new file mode 100644 index 0000000..6a993b2 --- /dev/null +++ b/requirements/dev.txt @@ -0,0 +1,324 @@ +# +# This file is autogenerated by pip-compile with python 3.9 +# To update, run: +# +# pip-compile --output-file=requirements/dev.txt requirements/dev.in +# +alabaster==0.7.12 + # via sphinx +alembic==1.7.7 + # via flask-migrate +attrs==21.4.0 + # via + # markdown-it-py + # pytest +babel==2.9.1 + # via sphinx +black==22.3.0 + # via -r requirements/dev.in +certifi==2021.10.8 + # via requests +charset-normalizer==2.0.12 + # via requests +click==8.1.2 + # via + # black + # flask + # pip-tools +codecov==2.1.12 + # via -r requirements/dev.in +coverage[toml]==6.3.2 + # via + # codecov + # pytest-cov +decorator==5.1.1 + # via validators +distlib==0.3.4 + # via virtualenv +dnspython==2.2.1 + # via email-validator +docutils==0.17.1 + # via + # myst-parser + # sphinx + # sphinx-rtd-theme +email-validator==1.1.3 + # via + # shopyo + # wtforms-components +factory-boy==3.2.1 + # via -r requirements/dev.in +faker==13.3.4 + # via + # -r requirements/dev.in + # factory-boy +filelock==3.6.0 + # via + # tox + # virtualenv +flake8==4.0.1 + # via -r requirements/dev.in +flask==2.1.1 + # via + # -r requirements/dev.in + # flask-admin + # flask-login + # flask-mailman + # flask-marshmallow + # flask-migrate + # flask-reuploaded + # flask-sqlalchemy + # flask-wtf + # shopyo +flask-admin==1.6.0 + # via + # -r requirements/dev.in + # shopyo +flask-login==0.6.0 + # via + # -r requirements/dev.in + # shopyo +flask-mailman==0.3.0 + # via + # -r requirements/dev.in + # shopyo +flask-marshmallow==0.14.0 + # via + # -r requirements/dev.in + # shopyo +flask-migrate==3.1.0 + # via + # -r requirements/dev.in + # shopyo +flask-reuploaded==1.2.0 + # via -r requirements/dev.in +flask-sqlalchemy==2.5.1 + # via + # -r requirements/dev.in + # flask-migrate + # shopyo +flask-wtf==1.0.1 + # via + # -r requirements/dev.in + # shopyo +freezegun==1.2.1 + # via -r requirements/dev.in +greenlet==1.1.2 + # via sqlalchemy +icalendar==4.0.9 + # via -r requirements/dev.in +idna==3.3 + # via + # email-validator + # requests +imagesize==1.3.0 + # via sphinx +importlib-metadata==4.11.3 + # via + # flask + # sphinx +infinity==1.5 + # via intervals +iniconfig==1.1.1 + # via pytest +intervals==0.9.2 + # via wtforms-components +isort==5.10.1 + # via -r requirements/dev.in +itsdangerous==2.1.2 + # via + # flask + # flask-wtf +jinja2==3.1.1 + # via + # flask + # myst-parser + # sphinx +mako==1.2.0 + # via alembic +markdown-it-py==2.0.1 + # via + # mdit-py-plugins + # myst-parser +markupsafe==2.1.1 + # via + # jinja2 + # mako + # wtforms + # wtforms-components +marshmallow==3.15.0 + # via + # flask-marshmallow + # marshmallow-sqlalchemy + # shopyo +marshmallow-sqlalchemy==0.28.0 + # via + # -r requirements/dev.in + # shopyo +mccabe==0.6.1 + # via flake8 +mdit-py-plugins==0.3.0 + # via myst-parser +mdurl==0.1.0 + # via markdown-it-py +mkdocs-material-extensions==1.0.3 + # via flask-mailman +mypy-extensions==0.4.3 + # via black +myst-parser==0.17.0 + # via -r requirements/dev.in +packaging==21.3 + # via + # marshmallow + # pytest + # sphinx + # tox +pathspec==0.9.0 + # via black +pep517==0.12.0 + # via pip-tools +pip-tools==6.6.0 + # via -r requirements/dev.in +platformdirs==2.5.1 + # via + # black + # virtualenv +pluggy==1.0.0 + # via + # pytest + # tox +py==1.11.0 + # via + # pytest + # tox +pycodestyle==2.8.0 + # via flake8 +pyflakes==2.4.0 + # via flake8 +pygments==2.11.2 + # via sphinx +pymysql==1.0.2 + # via -r requirements/dev.in +pyparsing==3.0.8 + # via packaging +pytest==7.1.1 + # via + # -r requirements/dev.in + # pytest-cov + # pytest-dotenv + # pytest-order +pytest-cov==3.0.0 + # via -r requirements/dev.in +pytest-dotenv==0.5.2 + # via -r requirements/dev.in +pytest-order==1.0.1 + # via -r requirements/dev.in +python-dateutil==2.8.2 + # via + # -r requirements/dev.in + # faker + # freezegun + # icalendar +python-dotenv==0.20.0 + # via pytest-dotenv +python-editor==1.0.4 + # via -r requirements/dev.in +pytz==2022.1 + # via + # -r requirements/dev.in + # babel + # icalendar +pyyaml==6.0 + # via myst-parser +requests==2.27.1 + # via + # codecov + # sphinx +shopyo==4.4.2 + # via -r requirements/dev.in +six==1.16.0 + # via + # flask-marshmallow + # python-dateutil + # sqlalchemy-utils + # tox + # validators + # virtualenv + # wtforms-components +snowballstemmer==2.2.0 + # via sphinx +sphinx==4.5.0 + # via + # -r requirements/dev.in + # myst-parser + # sphinx-rtd-theme +sphinx-rtd-theme==1.0.0 + # via -r requirements/dev.in +sphinxcontrib-applehelp==1.0.2 + # via sphinx +sphinxcontrib-devhelp==1.0.2 + # via sphinx +sphinxcontrib-htmlhelp==2.0.0 + # via sphinx +sphinxcontrib-jsmath==1.0.1 + # via sphinx +sphinxcontrib-qthelp==1.0.3 + # via sphinx +sphinxcontrib-serializinghtml==1.1.5 + # via sphinx +sqlalchemy==1.4.35 + # via + # alembic + # flask-sqlalchemy + # marshmallow-sqlalchemy + # shopyo + # sqlalchemy-utils + # wtforms-alchemy +sqlalchemy-utils==0.38.2 + # via wtforms-alchemy +text-unidecode==1.3 + # via -r requirements/dev.in +toml==0.10.2 + # via tox +tomli==2.0.1 + # via + # black + # coverage + # pep517 + # pytest +tox==3.25.0 + # via -r requirements/dev.in +typing-extensions==4.1.1 + # via + # black + # myst-parser +urllib3==1.26.9 + # via requests +validators==0.18.2 + # via wtforms-components +virtualenv==20.14.1 + # via tox +werkzeug==2.1.1 + # via + # flask + # flask-login + # shopyo +wheel==0.37.1 + # via pip-tools +wtforms==3.0.1 + # via + # flask-admin + # flask-wtf + # shopyo + # wtforms-alchemy + # wtforms-components +wtforms-alchemy==0.18.0 + # via -r requirements/dev.in +wtforms-components==0.10.5 + # via wtforms-alchemy +zipp==3.8.0 + # via importlib-metadata + +# The following packages are considered to be unsafe in a requirements file: +# pip +# setuptools diff --git a/requirements/reqs.in b/requirements/reqs.in new file mode 100644 index 0000000..9b18bd1 --- /dev/null +++ b/requirements/reqs.in @@ -0,0 +1,18 @@ +Faker +Flask +Flask-Admin +Flask-Login +flask-mailman +flask-marshmallow +Flask-Migrate +Flask-Reuploaded +Flask-SQLAlchemy +Flask-WTF +icalendar +shopyo==4.4.2 +marshmallow-sqlalchemy +PyMySQL +pytz==2022.1 +WTForms-Alchemy==0.18.0 +python-dateutil +python-editor diff --git a/requirements/reqs.txt b/requirements/reqs.txt new file mode 100644 index 0000000..5b3e393 --- /dev/null +++ b/requirements/reqs.txt @@ -0,0 +1,156 @@ +# +# This file is autogenerated by pip-compile with python 3.9 +# To update, run: +# +# pip-compile --output-file=requirements/reqs.txt requirements/reqs.in +# +alembic==1.7.7 + # via flask-migrate +click==8.1.2 + # via flask +decorator==5.1.1 + # via validators +dnspython==2.2.1 + # via email-validator +email-validator==1.1.3 + # via + # shopyo + # wtforms-components +faker==13.3.4 + # via -r requirements/reqs.in +flask==2.1.1 + # via + # -r requirements/reqs.in + # flask-admin + # flask-login + # flask-mailman + # flask-marshmallow + # flask-migrate + # flask-reuploaded + # flask-sqlalchemy + # flask-wtf + # shopyo +flask-admin==1.6.0 + # via + # -r requirements/reqs.in + # shopyo +flask-login==0.6.0 + # via + # -r requirements/reqs.in + # shopyo +flask-mailman==0.3.0 + # via + # -r requirements/reqs.in + # shopyo +flask-marshmallow==0.14.0 + # via + # -r requirements/reqs.in + # shopyo +flask-migrate==3.1.0 + # via + # -r requirements/reqs.in + # shopyo +flask-reuploaded==1.2.0 + # via -r requirements/reqs.in +flask-sqlalchemy==2.5.1 + # via + # -r requirements/reqs.in + # flask-migrate + # shopyo +flask-wtf==1.0.1 + # via + # -r requirements/reqs.in + # shopyo +greenlet==1.1.2 + # via sqlalchemy +icalendar==4.0.9 + # via -r requirements/reqs.in +idna==3.3 + # via email-validator +importlib-metadata==4.11.3 + # via flask +infinity==1.5 + # via intervals +intervals==0.9.2 + # via wtforms-components +itsdangerous==2.1.2 + # via + # flask + # flask-wtf +jinja2==3.1.1 + # via flask +mako==1.2.0 + # via alembic +markupsafe==2.1.1 + # via + # jinja2 + # mako + # wtforms + # wtforms-components +marshmallow==3.15.0 + # via + # flask-marshmallow + # marshmallow-sqlalchemy + # shopyo +marshmallow-sqlalchemy==0.28.0 + # via + # -r requirements/reqs.in + # shopyo +mkdocs-material-extensions==1.0.3 + # via flask-mailman +packaging==21.3 + # via marshmallow +pymysql==1.0.2 + # via -r requirements/reqs.in +pyparsing==3.0.8 + # via packaging +python-dateutil==2.8.2 + # via + # -r requirements/reqs.in + # faker + # icalendar +python-editor==1.0.4 + # via -r requirements/reqs.in +pytz==2022.1 + # via + # -r requirements/reqs.in + # icalendar +shopyo==4.4.2 + # via -r requirements/reqs.in +six==1.16.0 + # via + # flask-marshmallow + # python-dateutil + # sqlalchemy-utils + # validators + # wtforms-components +sqlalchemy==1.4.35 + # via + # alembic + # flask-sqlalchemy + # marshmallow-sqlalchemy + # shopyo + # sqlalchemy-utils + # wtforms-alchemy +sqlalchemy-utils==0.38.2 + # via wtforms-alchemy +validators==0.18.2 + # via wtforms-components +werkzeug==2.1.1 + # via + # flask + # flask-login + # shopyo +wtforms==3.0.1 + # via + # flask-admin + # flask-wtf + # shopyo + # wtforms-alchemy + # wtforms-components +wtforms-alchemy==0.18.0 + # via -r requirements/reqs.in +wtforms-components==0.10.5 + # via wtforms-alchemy +zipp==3.8.0 + # via importlib-metadata diff --git a/setup.py b/setup.py index 584b566..9a7f465 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ here = os.path.abspath(os.path.dirname(__file__)) setup( - install_requires=open(os.path.join(here, "requirements.txt"), encoding="utf-8") + install_requires=open(os.path.join(here, "requirements", "reqs.txt"), encoding="utf-8") .read() .split("\n") ) diff --git a/tox.ini b/tox.ini index 3a19975..92f221c 100644 --- a/tox.ini +++ b/tox.ini @@ -3,7 +3,6 @@ envlist = py39 py38 py37 - py36 docs skip_missing_interpreters=true isolated_build = True diff --git a/traveller/sphinx_source/readme.md b/traveller/sphinx_source/readme.md index 6cbec4d..de9194b 100644 --- a/traveller/sphinx_source/readme.md +++ b/traveller/sphinx_source/readme.md @@ -9,16 +9,11 @@ Create venv named venv inside root folder Activate it -Install requirements.txt +Install requirements/dev.txt -```bash -$ python -m pip install -r requirements.txt -``` - -You may also want to install dev_requirements.txt ```bash -$ python -m pip install -r dev_requirements.txt +$ python -m pip install -r requirements/dev.txt ``` Create a db named traveller or whatever you want in your MySQL db @@ -87,7 +82,7 @@ Now in traveller/traveller run: $ python manage.py initialise ``` -Then, to get development example data (make sure requirements in dev_requirements.txt are installed) +Then, to get development example data (make sure requirements in requirements/dev.txt are installed) ```bash $ flask seed dev diff --git a/traveller/tests/conftest.py b/traveller/tests/conftest.py index efaa4c1..5abb5fd 100644 --- a/traveller/tests/conftest.py +++ b/traveller/tests/conftest.py @@ -5,6 +5,7 @@ import shutil from app import create_app + _app = create_app('testing') @pytest.fixture