Skip to content

Commit

Permalink
Upgrade python and django versions
Browse files Browse the repository at this point in the history
  • Loading branch information
brunomichetti committed Sep 20, 2024
1 parent bdd2d0d commit 582d275
Show file tree
Hide file tree
Showing 12 changed files with 548 additions and 1,290 deletions.
120 changes: 52 additions & 68 deletions .github/workflows/drip-django.yaml
Original file line number Diff line number Diff line change
@@ -1,85 +1,69 @@
name: Django Drip Campaigns

on: [push, pull_request]
"on":
- push
- pull_request

jobs:
build:
strategy:
matrix:
include:
# python 3.4
- python-version: "3.5"
django-version: "2.2"
# python 3.6
- python-version: "3.6"
django-version: "2.2"
- python-version: "3.6"
django-version: "3.2"
# python 3.7
- python-version: "3.7"
django-version: "2.2"
- python-version: "3.7"
django-version: "3.2"
# python 3.8
- python-version: "3.8"
django-version: "2.2"
- python-version: "3.8"
django-version: "3.2"
django-version: "4.2"
- python-version: "3.8"
django-version: "4.0"
# python 3.9
django-version: "5.0"
- python-version: "3.9"
django-version: "2.2"
django-version: "4.2"
- python-version: "3.9"
django-version: "3.2"
- python-version: "3.9"
django-version: "4.0"
# pypy3
- python-version: "pypy3"
django-version: "2.2"
- python-version: "pypy3"
django-version: "3.2"
django-version: "5.0"
- python-version: "3.10"
django-version: "4.2"
- python-version: "3.10"
django-version: "5.0"
- python-version: "3.11"
django-version: "4.2"
- python-version: "3.11"
django-version: "5.0"
# - python-version: "3.12"
# django-version: "4.2"
# - python-version: "3.12"
# django-version: "5.0"

runs-on: ubuntu-latest
env:
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}

CC_TEST_REPORTER_ID: "${{ secrets.CC_TEST_REPORTER_ID }}"
steps:
- uses: actions/checkout@v2

- name: Set up Python version ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- uses: actions/checkout@v2
- name: "Set up Python version ${{ matrix.python-version }}"
uses: actions/setup-python@v2
with:
python-version: "${{ matrix.python-version }}"
- name: Installing resources
run: |
pip install --upgrade pip==20.0.2
pip install pipenv
- name: Installing requirements pipenv
run: |
pipenv install --dev
- name: "Installing Django version ${{ matrix.django-version }}"
run: |
pip install Django==${{ matrix.django-version }}
- name: Running tests
run: |
pipenv run coverage run -m pytest --ds=testsettings
- name: Checking coverage
run: |
pipenv run coverage report --fail-under=90 -m
pipenv run coverage xml
- name: Setup Code Climate test-reporter
run: >
curl -L
https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64
> ./cc-test-reporter
- name: Installing resources
run: |
pip install --upgrade pip==20.0.2
pip install pipenv
- name: Installing requirements pipenv
run: |
pipenv install --dev
- name: Installing Django version ${{ matrix.django-version }}
run: |
pip install Django==${{ matrix.django-version }}
- name: Checking PEP8 code style
run: |
pipenv run flake8 --count
- name: Checking Black code formatter
run: |
pipenv run black . --check
- name: Check typing
run: |
pipenv run mypy --namespace-packages --explicit-package-bases --ignore-missing-imports --no-warn-unused-ignores .
- name: Running tests
run: |
pipenv run coverage run -m pytest --ds=testsettings
- name: Checking coverage
run: |
pipenv run coverage report --fail-under=90 -m
pipenv run coverage xml
- name: Setup Code Climate test-reporter
run: |
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
chmod +x ./cc-test-reporter
./cc-test-reporter before-build
./cc-test-reporter after-build --coverage-input-type coverage.py --exit-code $?
./cc-test-reporter after-build --coverage-input-type coverage.py
--exit-code $?
107 changes: 94 additions & 13 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,22 +1,103 @@
*.pyc
MANIFEST
#pyenv
.python-version

dist/
.tox/

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
docs/_build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.idea/
.installed.cfg
*.egg
MANIFEST

sqlite.db
settings.py
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

env*
# Installer logs
pip-log.txt
pip-delete-this-directory.txt

__pycache__
# Virtualenv
# If you use a virtualenv, it's better to ignore its directory.
venv/
ENV/
env/
.venv/
.pyenv/

*DS_Store
# tox
.tox/
.cache/
.coverage
nosetests.xml
coverage.xml
*.cover
.hypothesis/

.vscode
# mypy
.mypy_cache/
.dmypy.json
dmypy.json

#pyenv
.python-version
# Pytest cache
.pytest_cache/

# Django specific
*.log
db.sqlite3
media/
staticfiles/

# Ignore migrations files (optional, you might want to track migrations in OSS)
# **/migrations/

# Ignore Django secret key file (if it exists)
.env
.env.*

# celery beat schedule file
celerybeat-schedule

# macOS
.DS_Store

# System files
Thumbs.db
desktop.ini

# Jupyter Notebook
.ipynb_checkpoints/

# IDEs
.vscode/
.idea/
*.sublime-workspace
*.sublime-project

# Documentation artifacts
docs/_build/

# SQLite
sqlite.db
45 changes: 45 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,51 @@ People _love_ thorough bug reports. I'm not even kidding.
- ### How is this different from what you are currently doing?
- ### Possible implementation

## How to develop locally and run the tests

We recommend you to use:

- [pyenv](https://github.com/pyenv/pyenv): To easily install and manage different versions of Python.
- [pipenv](https://pipenv.pypa.io/en/latest/): To create and manage Python virtual environments.

The Python version we recommend to develop with: The latest (currently 3.12) but avoiding (if possible) to use elements
that are exclusively from that version and don't work in previous versions. This is because we want to be compatible
with older versions of Python.

### Python versions we are currently testing (Sept, 2024)

- 3.8.19
- 3.9.19
- 3.10.14
- 3.11.9
- 3.12.4

### Step by step to run the tests

1. Install with pyenv the different versions of Python, so you can use the latest to develop, and the other ones to
run the tests and check that the compatibility with older versions continues.
- `pyenv install <python version>`
- Run this for each version.
2. Go to the project folder in the terminal.
3. Set the versions of python to be locally available in the folder:
- `pyenv local 3.8.19 3.9.19 3.10.14 3.11.9 3.12.4`
- This will create a gitignored file called `.python-version` listing these versions.
4. Create the virtual environment using the latest version:
- `pipenv install --python 3.12.4`
- This will create and install in it the base and dev requirements. You can check this on the Pipfile.
5. Enter the virtual environment:
- `pipenv shell`
6. Run the tests:
- `pytest .`
- They should pass without errors.
7. Now run the tox command that will run the tests using different versions of python:
- `tox`
- This will run the tests with different Python versions using the `tox.ini` file.
- It will install the base requirements from the `install_requires` list in the `setup.py` file, and the dev requirements
from the `test-requirements.txt` file that has the list of the needed dev libraries.
- You will see the tests execution for each version of Python.
- You can run `tox -v` to see more details.

## Use a Consistent Coding Style

I'm again borrowing these from [Rootstrap Tech Guides](https://github.com/rootstrap/tech-guides/tree/master/python)
Expand Down
74 changes: 16 additions & 58 deletions Pipfile
Original file line number Diff line number Diff line change
@@ -1,66 +1,24 @@
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
django = "==4.2.16"
apscheduler = "==3.10.4"
celery = "==5.4.0"
typing-extensions = "==4.12.2"

[dev-packages]
appnope = "==0.1.2"
asgiref = "==3.5.2"
astroid = "==2.5.1"
autopep8 = "==1.5.6"
backcall = "==0.2.0"
black = "==22.3.0"
decorator = "==4.4.2"
docutils = "==0.16"
coverage = "==5.5"
factory-boy = "==3.2.1"
flake8 = "==4.0.1"
flake8-isort = "==4.1.1"
importlib-metadata = "==3.7.3"
ipdb = "==0.13.7"
ipython = "==8.4.0"
isort = "==5.7.0"
jedi = "==0.18.0"
lazy-object-proxy = "==1.5.2"
mccabe = "==0.6.1"
parso = "==0.8.1"
pexpect = "==4.8.0"
pickleshare = "==0.7.5"
prompt-toolkit = "==3.0.17"
ptyprocess = "==0.7.0"
pycodestyle = "==2.8.0"
pyflakes = "==2.4.0"
pylint = "==2.7.2"
pytz = "==2021.1"
six = "==1.15.0"
sqlparse = "==0.4.2"
toml = "==0.10.2"
traitlets = "==5.0.5"
typed-ast = "==1.4.2"
wcwidth = "==0.2.5"
wrapt = "==1.12.1"
zipp = "==3.4.1"
ipython_genutils = "==0.2.0"
Jinja2 = "==2.11.3"
MarkupSafe = "==1.1.1"
mypy = "==0.942"
pre-commit = "==2.18.1"
Pygments = "==2.8.1"
sphinx = "==3.5.2"
sphinxcontrib-django = "==0.5.1"
twine = "==3.4.1"
sphinx-rtd-theme = "==0.5.1"
django-stubs = "==1.9.0"
types-six = "1.16.16"
pytest = "==7.1.1"
pytest-sugar = "==0.9.4"
pytest-django = "==4.5.2"
pytest = "==8.3.3"
pytest-sugar = "==1.0.0"
pytest-django = "==4.9.0"
pytest-celery = "==0.0.0"

[packages]
Django = "==3.2.15"
apscheduler = "==3.7.0"
celery = "==5.2.2"
faker = "==29.0.0"
factory-boy = "==3.3.1"
tox = "==4.20.0"
coverage = "==7.6.1"

[requires]
python_version = "3.8"
python_version = "3.12"
python_full_version = "3.12.4"
Loading

0 comments on commit 582d275

Please sign in to comment.