python-package-folder 0.1.0__tar.gz → 1.1.0__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.
- python_package_folder-1.1.0/.github/workflows/ci.yml +126 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/.vscode/settings.json +1 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/PKG-INFO +349 -98
- python_package_folder-1.1.0/README.md +775 -0
- python_package_folder-1.1.0/coverage.svg +20 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/pyproject.toml +2 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/src/python_package_folder/__init__.py +5 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/src/python_package_folder/finder.py +41 -11
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/src/python_package_folder/manager.py +141 -12
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/src/python_package_folder/publisher.py +63 -6
- python_package_folder-1.1.0/src/python_package_folder/python_package_folder.py +237 -0
- python_package_folder-1.1.0/src/python_package_folder/subfolder_build.py +466 -0
- python_package_folder-1.1.0/src/python_package_folder/utils.py +107 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/src/python_package_folder/version.py +1 -2
- python_package_folder-1.1.0/tests/folder_structure/subfolder_to_build/README.md +3 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/tests/test_build_with_external_deps.py +2 -2
- python_package_folder-1.1.0/tests/test_publisher.py +203 -0
- python_package_folder-1.1.0/tests/test_subfolder_build.py +360 -0
- python_package_folder-1.1.0/tests/test_utils.py +159 -0
- python_package_folder-1.1.0/tests/test_version_manager.py +148 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/tests/tests.py +2 -2
- python_package_folder-1.1.0/uv.lock +840 -0
- python_package_folder-0.1.0/.github/workflows/ci.yml +0 -63
- python_package_folder-0.1.0/README.md +0 -524
- python_package_folder-0.1.0/src/python_package_folder/python_package_folder.py +0 -151
- python_package_folder-0.1.0/uv.lock +0 -231
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/.copier-answers.yml +0 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/.cursor/rules/general.mdc +0 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/.cursor/rules/python.mdc +0 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/.github/workflows/publish.yml +0 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/.gitignore +0 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/LICENSE +0 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/Makefile +0 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/development.md +0 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/installation.md +0 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/publishing.md +0 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/src/python_package_folder/__main__.py +0 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/src/python_package_folder/analyzer.py +0 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/src/python_package_folder/py.typed +0 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/src/python_package_folder/types.py +0 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/tests/folder_structure/some_globals.py +0 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/tests/folder_structure/subfolder_to_build/some_function.py +0 -0
- {python_package_folder-0.1.0 → python_package_folder-1.1.0}/tests/folder_structure/utility_folder/some_utility.py +0 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# This workflow will install Python dependencies, run tests and lint with a single version of Python
|
|
2
|
+
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
|
|
3
|
+
|
|
4
|
+
name: CI
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
# Use ["main", "master"] for CI only on the default branch.
|
|
9
|
+
# Use ["**"] for CI on all branches.
|
|
10
|
+
branches: ["main", "master"]
|
|
11
|
+
pull_request:
|
|
12
|
+
branches: ["main", "master"]
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: write
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
build:
|
|
19
|
+
strategy:
|
|
20
|
+
matrix:
|
|
21
|
+
# Update this as needed:
|
|
22
|
+
# Common platforms: ["ubuntu-latest", "macos-latest", "windows-latest"]
|
|
23
|
+
os: ["ubuntu-latest"]
|
|
24
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
25
|
+
|
|
26
|
+
# Linux only by default. Use ${{ matrix.os }} for other OSes.
|
|
27
|
+
runs-on: ${{ matrix.os }}
|
|
28
|
+
|
|
29
|
+
steps:
|
|
30
|
+
# Generally following uv docs:
|
|
31
|
+
# https://docs.astral.sh/uv/guides/integration/github/
|
|
32
|
+
|
|
33
|
+
- name: Checkout (official GitHub action)
|
|
34
|
+
uses: actions/checkout@v4
|
|
35
|
+
with:
|
|
36
|
+
# Important for versioning plugins:
|
|
37
|
+
fetch-depth: 0
|
|
38
|
+
|
|
39
|
+
- name: Install uv (official Astral action)
|
|
40
|
+
uses: astral-sh/setup-uv@v5
|
|
41
|
+
with:
|
|
42
|
+
# Update this as needed:
|
|
43
|
+
version: "0.9.5"
|
|
44
|
+
enable-cache: true
|
|
45
|
+
python-version: ${{ matrix.python-version }}
|
|
46
|
+
|
|
47
|
+
- name: Set up Python (using uv)
|
|
48
|
+
run: uv python install
|
|
49
|
+
|
|
50
|
+
# Alternately can use the official Python action:
|
|
51
|
+
# - name: Set up Python (using actions/setup-python)
|
|
52
|
+
# uses: actions/setup-python@v5
|
|
53
|
+
# with:
|
|
54
|
+
# python-version: ${{ matrix.python-version }}
|
|
55
|
+
|
|
56
|
+
- name: Install all dependencies
|
|
57
|
+
run: uv sync --all-extras
|
|
58
|
+
|
|
59
|
+
- name: Run linting
|
|
60
|
+
run: uv run ruff check .
|
|
61
|
+
|
|
62
|
+
- name: Run type checking
|
|
63
|
+
run: uv run basedpyright src/ || true
|
|
64
|
+
|
|
65
|
+
- name: Run tests with coverage
|
|
66
|
+
run: uv run pytest --cov=src/python_package_folder --cov-report=xml --cov-report=term tests/
|
|
67
|
+
|
|
68
|
+
- name: Generate coverage badge
|
|
69
|
+
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master'
|
|
70
|
+
run: |
|
|
71
|
+
python -c "
|
|
72
|
+
import xml.etree.ElementTree as ET
|
|
73
|
+
import re
|
|
74
|
+
|
|
75
|
+
# Parse coverage.xml
|
|
76
|
+
tree = ET.parse('coverage.xml')
|
|
77
|
+
root = tree.getroot()
|
|
78
|
+
|
|
79
|
+
# Get coverage percentage
|
|
80
|
+
line_rate = float(root.get('line-rate', 0))
|
|
81
|
+
coverage_percent = int(line_rate * 100)
|
|
82
|
+
|
|
83
|
+
# Determine color based on coverage
|
|
84
|
+
if coverage_percent >= 80:
|
|
85
|
+
color = '44cc11'
|
|
86
|
+
elif coverage_percent >= 60:
|
|
87
|
+
color = 'dfb317'
|
|
88
|
+
elif coverage_percent >= 40:
|
|
89
|
+
color = 'fe7d37'
|
|
90
|
+
else:
|
|
91
|
+
color = 'e05d44'
|
|
92
|
+
|
|
93
|
+
# Generate SVG badge
|
|
94
|
+
svg = f'''<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"99\" height=\"20\">
|
|
95
|
+
<linearGradient id=\"b\" x2=\"0\" y2=\"100%\">
|
|
96
|
+
<stop offset=\"0\" stop-color=\"#bbb\" stop-opacity=\".1\"/>
|
|
97
|
+
<stop offset=\"1\" stop-opacity=\".1\"/>
|
|
98
|
+
</linearGradient>
|
|
99
|
+
<mask id=\"a\">
|
|
100
|
+
<rect width=\"99\" height=\"20\" rx=\"3\" fill=\"#fff\"/>
|
|
101
|
+
</mask>
|
|
102
|
+
<g mask=\"url(#a)\">
|
|
103
|
+
<path fill=\"#555\" d=\"M0 0h63v20H0z\"/>
|
|
104
|
+
<path fill=\"#{color}\" d=\"M63 0h36v20H63z\"/>
|
|
105
|
+
<path fill=\"url(#b)\" d=\"M0 0h99v20H0z\"/>
|
|
106
|
+
</g>
|
|
107
|
+
<g fill=\"#fff\" text-anchor=\"middle\" font-family=\"DejaVu Sans,Verdana,Geneva,sans-serif\" font-size=\"11\">
|
|
108
|
+
<text x=\"31.5\" y=\"15\" fill=\"#010101\" fill-opacity=\".3\">coverage</text>
|
|
109
|
+
<text x=\"31.5\" y=\"14\">coverage</text>
|
|
110
|
+
<text x=\"81\" y=\"15\" fill=\"#010101\" fill-opacity=\".3\">{coverage_percent}%</text>
|
|
111
|
+
<text x=\"81\" y=\"14\">{coverage_percent}%</text>
|
|
112
|
+
</g>
|
|
113
|
+
</svg>'''
|
|
114
|
+
|
|
115
|
+
with open('coverage.svg', 'w') as f:
|
|
116
|
+
f.write(svg)
|
|
117
|
+
"
|
|
118
|
+
|
|
119
|
+
- name: Commit coverage badge
|
|
120
|
+
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master'
|
|
121
|
+
run: |
|
|
122
|
+
git config --local user.email "action@github.com"
|
|
123
|
+
git config --local user.name "GitHub Action"
|
|
124
|
+
git add coverage.svg || true
|
|
125
|
+
git diff --staged --quiet || git commit -m "Update coverage badge [skip ci]"
|
|
126
|
+
git push || true
|