frob 0.0.0__tar.gz → 0.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {frob-0.0.0 → frob-0.0.2}/PKG-INFO +1 -1
- {frob-0.0.0 → frob-0.0.2}/pyproject.toml +3 -2
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pyproject.toml.j2 +3 -1
- frob-0.0.2/src/frob/init/data/python_shared.Makefile.j2 +73 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_shared.github.branch-protection.yml.j2 +1 -1
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_shared.github.ci.yml.j2 +5 -8
- frob-0.0.2/src/frob/init/data/python_shared.scripts.bump_version.py.j2 +33 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/project.py +6 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/process/parsers/common.py +2 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob.egg-info/PKG-INFO +1 -1
- {frob-0.0.0 → frob-0.0.2}/src/frob.egg-info/SOURCES.txt +1 -0
- frob-0.0.0/src/frob/init/data/python_shared.Makefile.j2 +0 -67
- {frob-0.0.0 → frob-0.0.2}/README.md +0 -0
- {frob-0.0.0 → frob-0.0.2}/setup.cfg +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/__main__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/_compat.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/app/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/app/app.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/app/arch_runner.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/app/bind_runner.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/app/bundle_runner.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/app/config.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/app/cycle_runner.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/app/docs_runner.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/app/dup_runner.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/app/init_runner.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/app/inspect_runner.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/app/map_runner.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/app/outline_runner.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/app/parse_runner.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/app/stub_runner.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/app/tokens_runner.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/app/xref_runner.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/arch/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/ast/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/ast/avr.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/ast/common.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/ast/cpp.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/ast/python.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/bind/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/bundle/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/cycle/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/cycle/graph.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/docs/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/dup/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/README.md.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_library.CMakeLists.txt.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_library.cmake.Config.cmake.in.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_library.include.h.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_library.src.cpp.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_library.tests.CMakeLists.txt.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_library.tests.cpp.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_shared.Makefile.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_shared.README.md.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_shared.cmake.toolchain-linux-arm64.cmake.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_shared.docs.index.md.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_shared.github.branch-protection.yml.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_shared.github.ci.yml.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_shared.github.release.yml.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_shared.gitignore.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_shared.tests.CMakeLists.txt.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_tool.CMakeLists.txt.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_tool.include.h.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_tool.src.cpp.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_tool.src.main.cpp.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_tool.tests.CMakeLists.txt.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_tool.tests.cpp.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pybind11_library.CMakeLists.txt.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pybind11_library.Makefile.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pybind11_library.github.ci.yml.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pybind11_library.include.h.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pybind11_library.pyproject.toml.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pybind11_library.python.__init__.py.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pybind11_library.src.bindings.cpp.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pybind11_library.src.cpp.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pybind11_library.tests.test_bindings.py.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pybind11_shared.gitignore.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pyo3_library.Cargo.toml.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pyo3_library.Makefile.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pyo3_library.github.ci.yml.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pyo3_library.pyproject.toml.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pyo3_library.python.__init__.py.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pyo3_library.src.lib.rs.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pyo3_library.tests.test_bindings.py.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/pyo3_shared.gitignore.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_lib.__init__.py.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_shared.docs.index.md.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_shared.gitignore.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_shared.logging.__init__.py.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_shared.logging.config.toml.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_shared.logging.filter.py.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_shared.logging.formatter.py.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_shared.logging.logger.py.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_shared.tests.conftest.py.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_shared.tests.system.test_build.py.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_shared.tests.unit.test_placeholder.py.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_tool.__init__.py.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_tool.__main__.py.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_tool.app.py.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_tool.config.py.j2 +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/inspect/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/logging/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/logging/config.toml +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/logging/filter.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/logging/formatter.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/logging/handler.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/logging/logger.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/map/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/outline/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/process/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/process/parsers/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/process/parsers/clang.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/process/parsers/junit.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/process/parsers/pycharm.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/process/parsers/pytest.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/process/parsers/ruff.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/process/parsers/ty.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/stub/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/tokens/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob/xref/__init__.py +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob.egg-info/dependency_links.txt +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob.egg-info/requires.txt +0 -0
- {frob-0.0.0 → frob-0.0.2}/src/frob.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "frob"
|
|
7
|
-
version = "0.0.
|
|
7
|
+
version = "0.0.2"
|
|
8
8
|
description = "These are tools that I use in my development workflow."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -35,6 +35,7 @@ dev = [
|
|
|
35
35
|
"packaging",
|
|
36
36
|
"pytest>=8",
|
|
37
37
|
"pytest-testmon>=2",
|
|
38
|
+
"pytest-xdist>=3",
|
|
38
39
|
"ruff>=0.8",
|
|
39
40
|
"ty>=0.0.1a8",
|
|
40
41
|
]
|
|
@@ -61,5 +62,5 @@ line-length = 88
|
|
|
61
62
|
|
|
62
63
|
[tool.pytest.ini_options]
|
|
63
64
|
testpaths = ["tests"]
|
|
64
|
-
addopts = "-q"
|
|
65
|
+
addopts = "-q -n auto"
|
|
65
66
|
pythonpath = ["."]
|
|
@@ -20,6 +20,7 @@ dev = [
|
|
|
20
20
|
"packaging",
|
|
21
21
|
"pytest>=8",
|
|
22
22
|
"pytest-testmon>=2",
|
|
23
|
+
"pytest-xdist>=3",
|
|
23
24
|
"ruff>=0.8",
|
|
24
25
|
"ty>=0.0.1a8",
|
|
25
26
|
]
|
|
@@ -35,7 +36,8 @@ packages = { find = { where = ["src"] } }
|
|
|
35
36
|
|
|
36
37
|
[tool.pytest.ini_options]
|
|
37
38
|
testpaths = ["tests"]
|
|
38
|
-
addopts = "-q"
|
|
39
|
+
addopts = "-q -n auto"
|
|
40
|
+
pythonpath = ["."]
|
|
39
41
|
|
|
40
42
|
[tool.ruff]
|
|
41
43
|
line-length = 88
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Stamp file: uv sync runs only when pyproject.toml changes.
|
|
2
|
+
STAMP := .venv/.install-stamp
|
|
3
|
+
|
|
4
|
+
.PHONY: all check install format lint lint-fix typecheck test test-fast clean upload
|
|
5
|
+
|
|
6
|
+
PYPI_NAME := {{ project.name }}
|
|
7
|
+
SRC := src
|
|
8
|
+
TESTS := tests
|
|
9
|
+
|
|
10
|
+
# ---------- default ----------
|
|
11
|
+
|
|
12
|
+
# Runs each tool exactly once: format, lint, typecheck, test.
|
|
13
|
+
all: $(STAMP)
|
|
14
|
+
uv run black $(SRC)/ $(TESTS)/
|
|
15
|
+
uv run ruff check $(SRC)/ $(TESTS)/ --fix --select I
|
|
16
|
+
uv run ruff format $(SRC)/ $(TESTS)/
|
|
17
|
+
uv run ty check $(SRC)/
|
|
18
|
+
uv run pytest $(TESTS)/ -q -n auto
|
|
19
|
+
|
|
20
|
+
# Read-only gate (no auto-fix). Safe to run in CI.
|
|
21
|
+
check: $(STAMP)
|
|
22
|
+
uv run ruff check $(SRC)/ $(TESTS)/
|
|
23
|
+
uv run ty check $(SRC)/
|
|
24
|
+
uv run pytest $(TESTS)/ -q -n auto
|
|
25
|
+
|
|
26
|
+
# ---------- install (stamp-guarded) ----------
|
|
27
|
+
|
|
28
|
+
$(STAMP): pyproject.toml
|
|
29
|
+
uv sync --all-extras
|
|
30
|
+
@touch $(STAMP)
|
|
31
|
+
|
|
32
|
+
install: $(STAMP)
|
|
33
|
+
|
|
34
|
+
# ---------- formatting & linting ----------
|
|
35
|
+
|
|
36
|
+
format: $(STAMP)
|
|
37
|
+
uv run black $(SRC)/ $(TESTS)/
|
|
38
|
+
uv run ruff check $(SRC)/ $(TESTS)/ --fix --select I
|
|
39
|
+
uv run ruff format $(SRC)/ $(TESTS)/
|
|
40
|
+
|
|
41
|
+
lint: $(STAMP)
|
|
42
|
+
uv run ruff check $(SRC)/ $(TESTS)/
|
|
43
|
+
uv run ty check $(SRC)/
|
|
44
|
+
|
|
45
|
+
lint-fix: $(STAMP)
|
|
46
|
+
uv run ruff check $(SRC)/ $(TESTS)/ --fix
|
|
47
|
+
uv run black $(SRC)/ $(TESTS)/
|
|
48
|
+
uv run ruff format $(SRC)/ $(TESTS)/
|
|
49
|
+
|
|
50
|
+
typecheck: $(STAMP)
|
|
51
|
+
uv run ty check $(SRC)/
|
|
52
|
+
|
|
53
|
+
# ---------- tests ----------
|
|
54
|
+
|
|
55
|
+
test: $(STAMP)
|
|
56
|
+
uv run pytest $(TESTS)/ -q -n auto
|
|
57
|
+
|
|
58
|
+
test-fast: $(STAMP)
|
|
59
|
+
uv run pytest $(TESTS)/ -q --testmon
|
|
60
|
+
|
|
61
|
+
# ---------- build & publish ----------
|
|
62
|
+
|
|
63
|
+
clean:
|
|
64
|
+
rm -rf dist/ build/ .pytest_cache/ .ruff_cache/ .testmondata
|
|
65
|
+
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null; true
|
|
66
|
+
find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null; true
|
|
67
|
+
|
|
68
|
+
upload: clean
|
|
69
|
+
@NEW=$$(uv run python scripts/bump_version.py); \
|
|
70
|
+
git add pyproject.toml; \
|
|
71
|
+
git commit -m "chore: bump version to $$NEW"; \
|
|
72
|
+
git push; \
|
|
73
|
+
uv build && uv publish
|
|
@@ -29,11 +29,8 @@ jobs:
|
|
|
29
29
|
- name: Install dependencies
|
|
30
30
|
run: uv sync --all-extras
|
|
31
31
|
|
|
32
|
-
- name:
|
|
33
|
-
run:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
- name: Test
|
|
39
|
-
run: uv run pytest tests/ -q
|
|
32
|
+
- name: Check
|
|
33
|
+
run: |
|
|
34
|
+
uv run ruff check src/ tests/
|
|
35
|
+
uv run ty check src/
|
|
36
|
+
uv run pytest tests/ -q -n auto
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Bump the patch version in pyproject.toml unconditionally.
|
|
3
|
+
Prints the new version to stdout. Edits pyproject.toml in place.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import re
|
|
7
|
+
import sys
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
|
|
10
|
+
try:
|
|
11
|
+
import tomllib
|
|
12
|
+
except ImportError:
|
|
13
|
+
try:
|
|
14
|
+
import tomli as tomllib # type: ignore[no-redef]
|
|
15
|
+
except ImportError:
|
|
16
|
+
import toml as tomllib # type: ignore[no-redef,import-not-found]
|
|
17
|
+
|
|
18
|
+
PYPROJECT = Path("pyproject.toml")
|
|
19
|
+
|
|
20
|
+
with PYPROJECT.open("rb") as f:
|
|
21
|
+
data = tomllib.load(f)
|
|
22
|
+
|
|
23
|
+
current = data["project"]["version"]
|
|
24
|
+
parts = current.split(".")
|
|
25
|
+
parts[-1] = str(int(parts[-1]) + 1)
|
|
26
|
+
new = ".".join(parts)
|
|
27
|
+
|
|
28
|
+
text = PYPROJECT.read_text()
|
|
29
|
+
text = re.sub(r'^version = "[^"]+"', f'version = "{new}"', text, flags=re.M)
|
|
30
|
+
PYPROJECT.write_text(text)
|
|
31
|
+
|
|
32
|
+
print(f"bumped {current} -> {new}", file=sys.stderr)
|
|
33
|
+
print(new)
|
|
@@ -32,6 +32,9 @@ _MANIFESTS: dict[str, list[_ManifestEntry]] = {
|
|
|
32
32
|
_ManifestEntry("README.md.j2", "README.md"),
|
|
33
33
|
_ManifestEntry("python_shared.gitignore.j2", ".gitignore"),
|
|
34
34
|
_ManifestEntry("python_shared.Makefile.j2", "Makefile"),
|
|
35
|
+
_ManifestEntry(
|
|
36
|
+
"python_shared.scripts.bump_version.py.j2", "scripts/bump_version.py"
|
|
37
|
+
),
|
|
35
38
|
_ManifestEntry("pyproject.toml.j2", "pyproject.toml"),
|
|
36
39
|
_ManifestEntry(
|
|
37
40
|
"python_lib.__init__.py.j2", "src/{{ project.name }}/__init__.py"
|
|
@@ -75,6 +78,9 @@ _MANIFESTS: dict[str, list[_ManifestEntry]] = {
|
|
|
75
78
|
_ManifestEntry("README.md.j2", "README.md"),
|
|
76
79
|
_ManifestEntry("python_shared.gitignore.j2", ".gitignore"),
|
|
77
80
|
_ManifestEntry("python_shared.Makefile.j2", "Makefile"),
|
|
81
|
+
_ManifestEntry(
|
|
82
|
+
"python_shared.scripts.bump_version.py.j2", "scripts/bump_version.py"
|
|
83
|
+
),
|
|
78
84
|
_ManifestEntry("pyproject.toml.j2", "pyproject.toml"),
|
|
79
85
|
_ManifestEntry(
|
|
80
86
|
"python_tool.__init__.py.j2", "src/{{ project.name }}/__init__.py"
|
|
@@ -91,6 +91,7 @@ src/frob/init/data/python_shared.logging.config.toml.j2
|
|
|
91
91
|
src/frob/init/data/python_shared.logging.filter.py.j2
|
|
92
92
|
src/frob/init/data/python_shared.logging.formatter.py.j2
|
|
93
93
|
src/frob/init/data/python_shared.logging.logger.py.j2
|
|
94
|
+
src/frob/init/data/python_shared.scripts.bump_version.py.j2
|
|
94
95
|
src/frob/init/data/python_shared.tests.conftest.py.j2
|
|
95
96
|
src/frob/init/data/python_shared.tests.system.test_build.py.j2
|
|
96
97
|
src/frob/init/data/python_shared.tests.unit.test_placeholder.py.j2
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
.PHONY: all install build lint lint-fix format typecheck test test-fast clean upload
|
|
2
|
-
|
|
3
|
-
PYPI_NAME := {{ project.name }}
|
|
4
|
-
SRC := src
|
|
5
|
-
TESTS := tests
|
|
6
|
-
|
|
7
|
-
all: format lint typecheck test
|
|
8
|
-
|
|
9
|
-
install:
|
|
10
|
-
uv sync --all-extras
|
|
11
|
-
|
|
12
|
-
# ---------- formatting & linting ----------
|
|
13
|
-
|
|
14
|
-
format: install
|
|
15
|
-
uv run black $(SRC)/ $(TESTS)/
|
|
16
|
-
uv run ruff check $(SRC)/ $(TESTS)/ --fix --select I
|
|
17
|
-
uv run ruff format $(SRC)/ $(TESTS)/
|
|
18
|
-
|
|
19
|
-
lint: install
|
|
20
|
-
uv run ruff check $(SRC)/ $(TESTS)/
|
|
21
|
-
uv run ty check $(SRC)/
|
|
22
|
-
|
|
23
|
-
lint-fix: install
|
|
24
|
-
uv run ruff check $(SRC)/ $(TESTS)/ --fix
|
|
25
|
-
uv run black $(SRC)/ $(TESTS)/
|
|
26
|
-
uv run ruff format $(SRC)/ $(TESTS)/
|
|
27
|
-
|
|
28
|
-
typecheck: install
|
|
29
|
-
uv run ty check $(SRC)/
|
|
30
|
-
|
|
31
|
-
# ---------- tests ----------
|
|
32
|
-
|
|
33
|
-
test: install
|
|
34
|
-
uv run pytest $(TESTS)/ -q
|
|
35
|
-
|
|
36
|
-
test-fast: install
|
|
37
|
-
uv run pytest $(TESTS)/ -q --testmon
|
|
38
|
-
|
|
39
|
-
# ---------- build & publish ----------
|
|
40
|
-
|
|
41
|
-
clean:
|
|
42
|
-
rm -rf dist/ build/ .pytest_cache/ .ruff_cache/
|
|
43
|
-
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null; true
|
|
44
|
-
find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null; true
|
|
45
|
-
|
|
46
|
-
upload: clean
|
|
47
|
-
@LOCAL=$$(python -c "import tomllib; t=tomllib.load(open('pyproject.toml','rb')); print(t['project']['version'])"); \
|
|
48
|
-
PYPI=$$(curl -s https://pypi.org/pypi/$(PYPI_NAME)/json 2>/dev/null \
|
|
49
|
-
| python -c "import sys,json; print(json.load(sys.stdin)['info']['version'])" 2>/dev/null \
|
|
50
|
-
|| echo "0.0.0"); \
|
|
51
|
-
BUMP=$$(python -c " \
|
|
52
|
-
from packaging.version import Version; \
|
|
53
|
-
l, p = Version('$$LOCAL'), Version('$$PYPI'); \
|
|
54
|
-
print('yes' if l <= p else 'no')"); \
|
|
55
|
-
if [ "$$BUMP" = "yes" ]; then \
|
|
56
|
-
NEW=$$(python -c " \
|
|
57
|
-
v = '$$LOCAL'.split('.'); v[-1] = str(int(v[-1])+1); print('.'.join(v))"); \
|
|
58
|
-
python -c " \
|
|
59
|
-
import re, pathlib; \
|
|
60
|
-
p = pathlib.Path('pyproject.toml'); \
|
|
61
|
-
p.write_text(re.sub(r'^version = .+', 'version = \"$$NEW\"', p.read_text(), flags=re.M))"; \
|
|
62
|
-
echo "Bumped $$LOCAL -> $$NEW"; \
|
|
63
|
-
git add pyproject.toml; \
|
|
64
|
-
git commit -m "chore: bump version to $$NEW"; \
|
|
65
|
-
git push; \
|
|
66
|
-
fi; \
|
|
67
|
-
uv build && uv publish
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frob-0.0.0 → frob-0.0.2}/src/frob/init/data/cpp_shared.cmake.toolchain-linux-arm64.cmake.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frob-0.0.0 → frob-0.0.2}/src/frob/init/data/python_shared.tests.unit.test_placeholder.py.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|