Feature rye (#17)
Migrate from Poetry to Rye Adaptat github actions Group build targets in makefile
This commit is contained in:
parent
b57c4f1ae6
commit
6d53fdecac
32 changed files with 208 additions and 1203 deletions
29
.github/workflows/docker.yml
vendored
29
.github/workflows/docker.yml
vendored
|
@ -3,21 +3,22 @@ on:
|
|||
push:
|
||||
branches: [ main ]
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
build_docker:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest]
|
||||
python-version: [3.10.13]
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: "3.11.0"
|
||||
- name: Install poetry
|
||||
uses: abatilo/actions-poetry@v2
|
||||
with:
|
||||
poetry-version: 1.2.2
|
||||
- name: Install dependencies
|
||||
run: poetry install
|
||||
- name: Build project
|
||||
run: poetry build
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
- name: Set up rye
|
||||
uses: atu4403/setup-rye-multiOS@v1
|
||||
- name: Sync dependencies using rye
|
||||
run: |
|
||||
rye pin ${{ matrix.python-version }}
|
||||
rye sync
|
||||
rye build --wheel --out dist
|
||||
- name: Build the Docker image
|
||||
run: |
|
||||
echo "${{ secrets.DOCKER_HUB_TOKEN }}" | docker login -u "${{ secrets.DOCKER_HUB_USERNAME }}" --password-stdin docker.io
|
||||
|
|
19
.github/workflows/pyinstaller.yml
vendored
19
.github/workflows/pyinstaller.yml
vendored
|
@ -2,13 +2,22 @@ name: pyinstaller
|
|||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
build_binary:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest]
|
||||
python-version: [3.10.13]
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
- name: Set up rye
|
||||
uses: atu4403/setup-rye-multiOS@v1
|
||||
- name: Sync dependencies using rye
|
||||
run: |
|
||||
rye pin ${{ matrix.python-version }}
|
||||
rye sync
|
||||
- name: Package application
|
||||
uses: JackMcKew/pyinstaller-action-linux@python3.10
|
||||
with:
|
||||
|
|
36
.github/workflows/pytest.yml
vendored
36
.github/workflows/pytest.yml
vendored
|
@ -2,30 +2,26 @@ name: pytest
|
|||
on: push
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version: [3.11.0]
|
||||
poetry-version: [1.2.2]
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
test:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest]
|
||||
python-version: [3.10.13]
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
- name: Install poetry
|
||||
uses: abatilo/actions-poetry@v2
|
||||
with:
|
||||
poetry-version: ${{ matrix.poetry-version }}
|
||||
- name: Install dependencies
|
||||
run: poetry install
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
- name: Set up rye
|
||||
uses: atu4403/setup-rye-multiOS@v1
|
||||
- name: Sync dependencies using rye
|
||||
run: |
|
||||
rye pin ${{ matrix.python-version }}
|
||||
rye sync
|
||||
- name: Pytest and Coverage
|
||||
run: |
|
||||
poetry run coverage run -m --source=stacosys pytest tests
|
||||
poetry run coverage report
|
||||
rye run coverage run -m --source=stacosys pytest tests
|
||||
rye run coverage report
|
||||
- name: Send report to Coveralls
|
||||
run: poetry run coveralls
|
||||
run: rye run coveralls
|
||||
env:
|
||||
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
|
||||
|
|
37
Makefile
37
Makefile
|
@ -1,16 +1,35 @@
|
|||
all: black test typehint lint
|
||||
ifeq (run,$(firstword $(MAKECMDGOALS)))
|
||||
# use the rest as arguments for "run"
|
||||
RUN_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
|
||||
# ...and turn them into do-nothing targets
|
||||
$(eval $(RUN_ARGS):;@:)
|
||||
endif
|
||||
|
||||
.PHONY: all build run test
|
||||
|
||||
# code quality
|
||||
all: black typehint lint
|
||||
|
||||
black:
|
||||
poetry run isort --multi-line 3 --profile black stacosys/ tests/
|
||||
poetry run black --target-version py311 stacosys/ tests/
|
||||
|
||||
test:
|
||||
poetry run coverage run -m --source=stacosys pytest
|
||||
poetry run coverage report
|
||||
rye run isort --multi-line 3 --profile black src/ tests/
|
||||
rye run black --target-version py311 src/ tests/
|
||||
|
||||
typehint:
|
||||
poetry run mypy --ignore-missing-imports stacosys/ tests/
|
||||
rye run mypy --ignore-missing-imports src/ tests/
|
||||
|
||||
lint:
|
||||
poetry run pylint stacosys/
|
||||
rye run pylint src/
|
||||
|
||||
# test
|
||||
test:
|
||||
rye run coverage run -m --source=stacosys pytest tests
|
||||
rye run coverage report
|
||||
|
||||
# build
|
||||
#rye run pyinstaller src/stacosys/run.py --name stacosys --onefile
|
||||
build:
|
||||
rye run pyinstaller --clean stacosys.spec
|
||||
|
||||
# run
|
||||
run:
|
||||
rye run python src/stacosys/run.py $(RUN_ARGS)
|
3
vagrant/Vagrantfile → Vagrantfile
vendored
3
vagrant/Vagrantfile → Vagrantfile
vendored
|
@ -1,9 +1,12 @@
|
|||
Vagrant.configure("2") do |config|
|
||||
config.vm.box = "debian/bullseye64"
|
||||
config.vm.provider :virtualbox do |vb|
|
||||
vb.memory = 1024
|
||||
vb.cpus = 1
|
||||
end
|
||||
|
||||
config.vm.define "master" do |master|
|
||||
master.vm.hostname = "master"
|
||||
master.vm.provision "shell", inline: <<-SHELL
|
||||
mkdir /home/vagrant/stacosys
|
||||
SHELL
|
3
build.sh
3
build.sh
|
@ -1,3 +0,0 @@
|
|||
#!/bin/sh
|
||||
#pyinstaller stacosys/run.py --name stacosys --onefile
|
||||
poetry run pyinstaller stacosys.spec
|
|
@ -1,4 +0,0 @@
|
|||
[flake8]
|
||||
max-line-length = 88
|
||||
extend-ignore = E203
|
||||
spellcheck-targets=comments
|
1098
poetry.lock
generated
1098
poetry.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -1,3 +0,0 @@
|
|||
[virtualenvs]
|
||||
in-project = true
|
||||
prefer-active-python = true
|
|
@ -1,30 +1,42 @@
|
|||
[tool.poetry]
|
||||
[project]
|
||||
name = "stacosys"
|
||||
version = "3.3"
|
||||
description = "STAtic COmmenting SYStem"
|
||||
authors = ["Yax"]
|
||||
authors = [
|
||||
{ name = "Yax" }
|
||||
]
|
||||
readme = "README.md"
|
||||
requires-python = ">= 3.8"
|
||||
dependencies = [
|
||||
"pyrss2gen>=1.1",
|
||||
"markdown>=3.5.1",
|
||||
"requests>=2.31.0",
|
||||
"background>=0.2.1",
|
||||
"Flask>=3.0.0",
|
||||
"types-markdown>=3.5.0.1",
|
||||
"pydal>=20230521.1"
|
||||
]
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = ">=3.9.0,<3.12"
|
||||
pyrss2gen = "^1.1"
|
||||
markdown = "^3.1.1"
|
||||
requests = "^2.25.1"
|
||||
coverage = "^6.5"
|
||||
background = "^0.2.1"
|
||||
Flask = "^2.1.1"
|
||||
types-markdown = "^3.4.2.1"
|
||||
pydal = "^20221110.1"
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
pylint = "^2.15"
|
||||
mypy = "^0.991"
|
||||
pytest = "^7.2.0"
|
||||
coveralls = "^3.3.1"
|
||||
pytest-cov = "^4.0.0"
|
||||
black = "^22.10.0"
|
||||
pyinstaller = "^5.9.0"
|
||||
[tool.pytest.ini_options]
|
||||
pythonpath = [
|
||||
"src"
|
||||
]
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core>=1.0.0"]
|
||||
build-backend = "poetry.core.masonry.api"
|
||||
requires = ["hatchling"]
|
||||
build-backend = "hatchling.build"
|
||||
|
||||
[tool.rye]
|
||||
managed = true
|
||||
dev-dependencies = [
|
||||
"pylint>=3.0.2",
|
||||
"mypy>=1.6.1",
|
||||
"pytest>=7.4.3",
|
||||
"coveralls>=3.3.1",
|
||||
"pytest-cov>=4.1.0",
|
||||
"black>=23.10.1",
|
||||
"pyinstaller>=6.1.0",
|
||||
]
|
||||
|
||||
[tool.hatch.metadata]
|
||||
allow-direct-references = true
|
||||
|
|
53
requirements-dev.lock
Normal file
53
requirements-dev.lock
Normal file
|
@ -0,0 +1,53 @@
|
|||
# generated by rye
|
||||
# use `rye lock` or `rye sync` to update this lockfile
|
||||
#
|
||||
# last locked with the following flags:
|
||||
# pre: false
|
||||
# features: []
|
||||
# all-features: false
|
||||
|
||||
-e file:.
|
||||
altgraph==0.17.4
|
||||
astroid==3.0.1
|
||||
background==0.2.1
|
||||
black==23.11.0
|
||||
blinker==1.7.0
|
||||
certifi==2023.7.22
|
||||
charset-normalizer==3.3.2
|
||||
click==8.1.7
|
||||
coverage==6.5.0
|
||||
coveralls==3.3.1
|
||||
dill==0.3.7
|
||||
docopt==0.6.2
|
||||
exceptiongroup==1.1.3
|
||||
flask==3.0.0
|
||||
idna==3.4
|
||||
iniconfig==2.0.0
|
||||
isort==5.12.0
|
||||
itsdangerous==2.1.2
|
||||
jinja2==3.1.2
|
||||
markdown==3.5.1
|
||||
markupsafe==2.1.3
|
||||
mccabe==0.7.0
|
||||
mypy==1.6.1
|
||||
mypy-extensions==1.0.0
|
||||
packaging==23.2
|
||||
pathspec==0.11.2
|
||||
platformdirs==3.11.0
|
||||
pluggy==1.3.0
|
||||
pydal==20230521.1
|
||||
pyinstaller==6.1.0
|
||||
pyinstaller-hooks-contrib==2023.10
|
||||
pylint==3.0.2
|
||||
pyrss2gen==1.1
|
||||
pytest==7.4.3
|
||||
pytest-cov==4.1.0
|
||||
requests==2.31.0
|
||||
tomli==2.0.1
|
||||
tomlkit==0.12.2
|
||||
types-markdown==3.5.0.1
|
||||
typing-extensions==4.8.0
|
||||
urllib3==2.0.7
|
||||
werkzeug==3.0.1
|
||||
# The following packages are considered to be unsafe in a requirements file:
|
||||
setuptools==68.2.2
|
26
requirements.lock
Normal file
26
requirements.lock
Normal file
|
@ -0,0 +1,26 @@
|
|||
# generated by rye
|
||||
# use `rye lock` or `rye sync` to update this lockfile
|
||||
#
|
||||
# last locked with the following flags:
|
||||
# pre: false
|
||||
# features: []
|
||||
# all-features: false
|
||||
|
||||
-e file:.
|
||||
background==0.2.1
|
||||
blinker==1.7.0
|
||||
certifi==2023.7.22
|
||||
charset-normalizer==3.3.2
|
||||
click==8.1.7
|
||||
flask==3.0.0
|
||||
idna==3.4
|
||||
itsdangerous==2.1.2
|
||||
jinja2==3.1.2
|
||||
markdown==3.5.1
|
||||
markupsafe==2.1.3
|
||||
pydal==20230521.1
|
||||
pyrss2gen==1.1
|
||||
requests==2.31.0
|
||||
types-markdown==3.5.0.1
|
||||
urllib3==2.0.7
|
||||
werkzeug==3.0.1
|
3
run.sh
3
run.sh
|
@ -1,3 +0,0 @@
|
|||
#!/bin/sh
|
||||
python3 stacosys/run.py "$@"
|
||||
|
|
@ -5,7 +5,6 @@ from pydal import DAL, Field
|
|||
|
||||
|
||||
class Database:
|
||||
|
||||
db_dal = DAL()
|
||||
|
||||
def configure(self, db_uri):
|
|
@ -30,7 +30,6 @@ class ConfigParameter(Enum):
|
|||
|
||||
|
||||
class Config:
|
||||
|
||||
_cfg = configparser.ConfigParser()
|
||||
|
||||
def load(self, config_pathname):
|
|
@ -1,31 +1,24 @@
|
|||
# -*- mode: python ; coding: utf-8 -*-
|
||||
|
||||
|
||||
block_cipher = None
|
||||
|
||||
|
||||
a = Analysis(
|
||||
['stacosys/run.py'],
|
||||
pathex=[],
|
||||
['src/stacosys/run.py'],
|
||||
pathex=['src'],
|
||||
binaries=[],
|
||||
datas=[('stacosys/interface/templates/*.html', 'stacosys/interface/templates/')],
|
||||
datas=[('src/stacosys/interface/templates/*.html', 'src/stacosys/interface/templates/')],
|
||||
hiddenimports=[],
|
||||
hookspath=[],
|
||||
hooksconfig={},
|
||||
runtime_hooks=[],
|
||||
excludes=[],
|
||||
win_no_prefer_redirects=False,
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher,
|
||||
noarchive=False,
|
||||
)
|
||||
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
|
||||
pyz = PYZ(a.pure)
|
||||
|
||||
exe = EXE(
|
||||
pyz,
|
||||
a.scripts,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
[],
|
||||
name='stacosys',
|
||||
|
|
|
@ -83,13 +83,20 @@ def create_comment(url, author_name, content):
|
|||
|
||||
|
||||
def test_find_recent_published_comments(setup_db):
|
||||
|
||||
comments = [create_comment("/post", "Adam", "Comment 1"), create_comment("/post", "Arf", "Comment 2"),
|
||||
create_comment("/post", "Arwin", "Comment 3"), create_comment("/post", "Bill", "Comment 4"),
|
||||
create_comment("/post", "Bo", "Comment 5"), create_comment("/post", "Charles", "Comment 6"),
|
||||
create_comment("/post", "Dan", "Comment 7"), create_comment("/post", "Dwayne", "Comment 8"),
|
||||
create_comment("/post", "Erl", "Comment 9"), create_comment("/post", "Jay", "Comment 10"),
|
||||
create_comment("/post", "Kenny", "Comment 11"), create_comment("/post", "Lord", "Comment 12")]
|
||||
comments = [
|
||||
create_comment("/post", "Adam", "Comment 1"),
|
||||
create_comment("/post", "Arf", "Comment 2"),
|
||||
create_comment("/post", "Arwin", "Comment 3"),
|
||||
create_comment("/post", "Bill", "Comment 4"),
|
||||
create_comment("/post", "Bo", "Comment 5"),
|
||||
create_comment("/post", "Charles", "Comment 6"),
|
||||
create_comment("/post", "Dan", "Comment 7"),
|
||||
create_comment("/post", "Dwayne", "Comment 8"),
|
||||
create_comment("/post", "Erl", "Comment 9"),
|
||||
create_comment("/post", "Jay", "Comment 10"),
|
||||
create_comment("/post", "Kenny", "Comment 11"),
|
||||
create_comment("/post", "Lord", "Comment 12"),
|
||||
]
|
||||
|
||||
rows = dao.find_recent_published_comments()
|
||||
assert len(rows) == 0
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
RSS
|
Loading…
Add table
Reference in a new issue