osslag 1.0.0__tar.gz → 1.0.1__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.
- osslag-1.0.1/.github/workflows/publish-pypi.yml +54 -0
- osslag-1.0.1/.gitignore +42 -0
- osslag-1.0.1/.python-version +1 -0
- osslag-1.0.1/.vscode/launch.json +17 -0
- osslag-1.0.1/.vscode/settings.json +25 -0
- osslag-1.0.1/LICENSE +21 -0
- osslag-1.0.1/Makefile +52 -0
- {osslag-1.0.0 → osslag-1.0.1}/PKG-INFO +14 -8
- {osslag-1.0.0 → osslag-1.0.1}/README.md +4 -0
- osslag-1.0.1/docs/RELEASING.md +95 -0
- osslag-1.0.1/env.template +13 -0
- {osslag-1.0.0 → osslag-1.0.1}/pyproject.toml +12 -4
- osslag-1.0.1/setup.cfg +4 -0
- osslag-1.0.1/src/osslag/__init__.py +9 -0
- {osslag-1.0.0 → osslag-1.0.1}/src/osslag/cli.py +100 -243
- {osslag-1.0.0 → osslag-1.0.1}/src/osslag/distro/debian.py +13 -41
- {osslag-1.0.0 → osslag-1.0.1}/src/osslag/distro/fedora.py +1 -3
- osslag-1.0.1/src/osslag/metrics/malta.py +872 -0
- {osslag-1.0.0 → osslag-1.0.1}/src/osslag/metrics/pvac.py +2 -6
- {osslag-1.0.0 → osslag-1.0.1}/src/osslag/utils/github_helper.py +7 -23
- {osslag-1.0.0 → osslag-1.0.1}/src/osslag/utils/vcs.py +16 -49
- osslag-1.0.1/src/osslag.egg-info/PKG-INFO +52 -0
- osslag-1.0.1/src/osslag.egg-info/SOURCES.txt +35 -0
- osslag-1.0.1/src/osslag.egg-info/dependency_links.txt +1 -0
- osslag-1.0.1/src/osslag.egg-info/entry_points.txt +2 -0
- osslag-1.0.1/src/osslag.egg-info/requires.txt +10 -0
- osslag-1.0.1/src/osslag.egg-info/top_level.txt +1 -0
- osslag-1.0.1/tests/distro/test_debian.py +265 -0
- osslag-1.0.1/tests/metrics/__init__.py +0 -0
- osslag-1.0.1/tests/metrics/test_malta.py +1053 -0
- osslag-1.0.1/tests/utils/__init__.py +0 -0
- osslag-1.0.1/tests/utils/test_vcs.py +822 -0
- osslag-1.0.1/uv.lock +712 -0
- osslag-1.0.0/src/osslag/metrics/malta.py +0 -585
- {osslag-1.0.0/src/osslag → osslag-1.0.1/src/osslag/distro}/__init__.py +0 -0
- {osslag-1.0.0/src/osslag/distro → osslag-1.0.1/src/osslag/metrics}/__init__.py +0 -0
- {osslag-1.0.0/src/osslag/metrics → osslag-1.0.1/src/osslag/utils}/__init__.py +0 -0
- {osslag-1.0.0/src/osslag/utils → osslag-1.0.1/tests/distro}/__init__.py +0 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: Upload Python Package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
release-build:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
|
|
17
|
+
- uses: actions/setup-python@v5
|
|
18
|
+
with:
|
|
19
|
+
python-version: "3.x"
|
|
20
|
+
|
|
21
|
+
- name: Install uv
|
|
22
|
+
uses: astral-sh/setup-uv@v7
|
|
23
|
+
|
|
24
|
+
- name: Build release distributions
|
|
25
|
+
run: make build
|
|
26
|
+
|
|
27
|
+
- name: Upload distributions
|
|
28
|
+
uses: actions/upload-artifact@v4
|
|
29
|
+
with:
|
|
30
|
+
name: release-dists
|
|
31
|
+
path: dist/
|
|
32
|
+
|
|
33
|
+
pypi-publish:
|
|
34
|
+
runs-on: ubuntu-latest
|
|
35
|
+
needs:
|
|
36
|
+
- release-build
|
|
37
|
+
permissions:
|
|
38
|
+
id-token: write
|
|
39
|
+
|
|
40
|
+
environment:
|
|
41
|
+
name: pypi
|
|
42
|
+
url: https://pypi.org/p/osslag
|
|
43
|
+
|
|
44
|
+
steps:
|
|
45
|
+
- name: Retrieve release distributions
|
|
46
|
+
uses: actions/download-artifact@v4
|
|
47
|
+
with:
|
|
48
|
+
name: release-dists
|
|
49
|
+
path: dist/
|
|
50
|
+
|
|
51
|
+
- name: Publish release distributions to PyPI
|
|
52
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
53
|
+
with:
|
|
54
|
+
packages-dir: dist/
|
osslag-1.0.1/.gitignore
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
.Python
|
|
7
|
+
build/
|
|
8
|
+
develop-eggs/
|
|
9
|
+
dist/
|
|
10
|
+
downloads/
|
|
11
|
+
eggs/
|
|
12
|
+
.eggs/
|
|
13
|
+
lib/
|
|
14
|
+
lib64/
|
|
15
|
+
parts/
|
|
16
|
+
sdist/
|
|
17
|
+
var/
|
|
18
|
+
wheels/
|
|
19
|
+
*.egg-info/
|
|
20
|
+
.installed.cfg
|
|
21
|
+
*.egg
|
|
22
|
+
|
|
23
|
+
# Virtual environments
|
|
24
|
+
venv/
|
|
25
|
+
env/
|
|
26
|
+
ENV/
|
|
27
|
+
.venv/
|
|
28
|
+
|
|
29
|
+
# Project specific
|
|
30
|
+
cache/
|
|
31
|
+
*.log.*
|
|
32
|
+
|
|
33
|
+
# Environment variables
|
|
34
|
+
.env
|
|
35
|
+
.env.local
|
|
36
|
+
|
|
37
|
+
# OS
|
|
38
|
+
.DS_Store
|
|
39
|
+
Thumbs.db
|
|
40
|
+
github_debug.log
|
|
41
|
+
osslag.log
|
|
42
|
+
CLAUDE.md
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.14
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.2.0",
|
|
3
|
+
"configurations": [
|
|
4
|
+
{
|
|
5
|
+
"name": "Python: My Module with Args",
|
|
6
|
+
"type": "debugpy",
|
|
7
|
+
"request": "launch",
|
|
8
|
+
"module": "osslag.cli",
|
|
9
|
+
"console": "integratedTerminal",
|
|
10
|
+
"justMyCode": false,
|
|
11
|
+
"args": [
|
|
12
|
+
"get-metadata",
|
|
13
|
+
"https://github.com/shanep/demo"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"python.testing.pytestEnabled": true,
|
|
3
|
+
"python.testing.unittestEnabled": false,
|
|
4
|
+
"cSpell.words": [
|
|
5
|
+
"checkpointed",
|
|
6
|
+
"creds",
|
|
7
|
+
"dateutil",
|
|
8
|
+
"dotenv",
|
|
9
|
+
"mrsc",
|
|
10
|
+
"osslag",
|
|
11
|
+
"relativedelta",
|
|
12
|
+
"revparse",
|
|
13
|
+
"rmvconstants",
|
|
14
|
+
"rmvs",
|
|
15
|
+
"sboudrias",
|
|
16
|
+
"snoyberg",
|
|
17
|
+
"trixie",
|
|
18
|
+
"venv"
|
|
19
|
+
],
|
|
20
|
+
"outline.collapseItems": "alwaysCollapse",
|
|
21
|
+
"outline.problems.enabled": true,
|
|
22
|
+
"python.testing.pytestArgs": [
|
|
23
|
+
"tests"
|
|
24
|
+
],
|
|
25
|
+
}
|
osslag-1.0.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Shane K. Panter
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
osslag-1.0.1/Makefile
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
VENV ?= .venv
|
|
2
|
+
|
|
3
|
+
.PHONY: bootstrap install lint fmt typecheck test clean help
|
|
4
|
+
|
|
5
|
+
help:
|
|
6
|
+
@echo "Makefile commands:"
|
|
7
|
+
@echo " bootstrap - Check uv installation and sync dependencies"
|
|
8
|
+
@echo " install - Install the package in editable mode"
|
|
9
|
+
@echo " lint - Lint the code using ruff"
|
|
10
|
+
@echo " fmt - Format the code using ruff"
|
|
11
|
+
@echo " typecheck - Type check the code using pyright"
|
|
12
|
+
@echo " test - Run tests using pytest"
|
|
13
|
+
@echo " clean - Clean up build artifacts and caches"
|
|
14
|
+
|
|
15
|
+
bootstrap:
|
|
16
|
+
@echo "check the uv installation..."
|
|
17
|
+
@if ! command -v uv >/dev/null 2>&1; then \
|
|
18
|
+
echo "uv not found."; \
|
|
19
|
+
echo "Check https://github.com/astral-sh/uv for installation instructions."; \
|
|
20
|
+
exit 1; \
|
|
21
|
+
else \
|
|
22
|
+
echo "uv is installed: $$(uv --version)"; \
|
|
23
|
+
fi
|
|
24
|
+
@echo "Syncing dependencies using uv..."
|
|
25
|
+
@uv sync
|
|
26
|
+
|
|
27
|
+
lint:
|
|
28
|
+
uv run ruff check .
|
|
29
|
+
|
|
30
|
+
fmt:
|
|
31
|
+
uv run ruff format .
|
|
32
|
+
|
|
33
|
+
typecheck:
|
|
34
|
+
uv run pyright src tests
|
|
35
|
+
|
|
36
|
+
test:
|
|
37
|
+
uv run pytest
|
|
38
|
+
|
|
39
|
+
install:
|
|
40
|
+
uv tool install . -e
|
|
41
|
+
|
|
42
|
+
build:
|
|
43
|
+
uv build
|
|
44
|
+
|
|
45
|
+
clean:
|
|
46
|
+
uv cache clean
|
|
47
|
+
rm -rf $(VENV)
|
|
48
|
+
rm -rf *.egg-info
|
|
49
|
+
find . -type d -name "__pycache__" -exec rm -rf {} +
|
|
50
|
+
find . -type d -name ".ruff_cache" -exec rm -rf {} +
|
|
51
|
+
find . -type d -name ".uv" -exec rm -rf {} +
|
|
52
|
+
find . -type d -name ".pytest_cache" -exec rm -rf {} +
|
|
@@ -1,16 +1,21 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: osslag
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.1
|
|
4
4
|
Summary: Technical Lag tools for Open Source Software Projects
|
|
5
|
-
Keywords: oss,open source,technical lag,software lag,software maintenance
|
|
6
|
-
Author: Shane Panter
|
|
7
5
|
Author-email: Shane Panter <shanepanter@boisestate.edu>
|
|
8
6
|
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/shanep/osslag
|
|
8
|
+
Project-URL: Issues, https://github.com/shanep/osslag/issues
|
|
9
|
+
Keywords: oss,open source,technical lag,software lag,software maintenance
|
|
9
10
|
Classifier: Intended Audience :: Science/Research
|
|
10
11
|
Classifier: License :: OSI Approved :: MIT License
|
|
11
12
|
Classifier: Programming Language :: Python :: 3.14
|
|
13
|
+
Requires-Python: >=3.14
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
License-File: LICENSE
|
|
12
16
|
Requires-Dist: dotenv>=0.9.9
|
|
13
17
|
Requires-Dist: pandas>=3.0.0
|
|
18
|
+
Requires-Dist: pyarrow>=23.0.0
|
|
14
19
|
Requires-Dist: pygit2>=1.19.1
|
|
15
20
|
Requires-Dist: pygithub>=2.8.1
|
|
16
21
|
Requires-Dist: python-dateutil>=2.9.0.post0
|
|
@@ -18,16 +23,17 @@ Requires-Dist: python-debian>=1.0.1
|
|
|
18
23
|
Requires-Dist: requests>=2.32.5
|
|
19
24
|
Requires-Dist: rich>=14.3.1
|
|
20
25
|
Requires-Dist: typer>=0.21.1
|
|
21
|
-
|
|
22
|
-
Project-URL: Homepage, https://github.com/shanep/osslag
|
|
23
|
-
Project-URL: Issues, https://github.com/shanep/osslag/issues
|
|
24
|
-
Description-Content-Type: text/markdown
|
|
26
|
+
Dynamic: license-file
|
|
25
27
|
|
|
26
28
|
# OSS-Lag: Open Source Software Lag Dataset
|
|
27
29
|
|
|
28
30
|
This repository contains code to build a dataset measuring technical lag and
|
|
29
31
|
abandonment of open source packages across multiple Linux distributions.
|
|
30
32
|
|
|
33
|
+
The algorithms implemented here are described in the following paper:
|
|
34
|
+
|
|
35
|
+
- [docs/Paper.pdf](docs/Paper.pdf)
|
|
36
|
+
|
|
31
37
|
|
|
32
38
|
## Installation
|
|
33
39
|
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
This repository contains code to build a dataset measuring technical lag and
|
|
4
4
|
abandonment of open source packages across multiple Linux distributions.
|
|
5
5
|
|
|
6
|
+
The algorithms implemented here are described in the following paper:
|
|
7
|
+
|
|
8
|
+
- [docs/Paper.pdf](docs/Paper.pdf)
|
|
9
|
+
|
|
6
10
|
|
|
7
11
|
## Installation
|
|
8
12
|
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Releasing osslag
|
|
2
|
+
|
|
3
|
+
This document describes how to release a new version of osslag.
|
|
4
|
+
|
|
5
|
+
## Versioning
|
|
6
|
+
|
|
7
|
+
This project uses [setuptools-scm](https://github.com/pypa/setuptools-scm) for automatic versioning based on git tags. The version is derived directly from git tags at build time.
|
|
8
|
+
|
|
9
|
+
### Version Format
|
|
10
|
+
|
|
11
|
+
- **Release versions**: `1.0.0`, `1.1.0`, `2.0.0` (from tags like `v1.0.0`)
|
|
12
|
+
- **Development versions**: `1.0.1.dev6+gde04e13` (6 commits after v1.0.0, at commit de04e13)
|
|
13
|
+
- **Dirty versions**: `1.0.1.dev6+gde04e13.d20260204` (uncommitted changes present)
|
|
14
|
+
|
|
15
|
+
## Release Process
|
|
16
|
+
|
|
17
|
+
### 1. Prepare the Release
|
|
18
|
+
|
|
19
|
+
Ensure all changes are committed and tests pass:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Run tests
|
|
23
|
+
uv run pytest
|
|
24
|
+
|
|
25
|
+
# Run linting
|
|
26
|
+
uv run ruff check src/ tests/
|
|
27
|
+
|
|
28
|
+
# Run type checking
|
|
29
|
+
uv run pyright
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 2. Create the Release
|
|
33
|
+
|
|
34
|
+
Choose the appropriate version number following [Semantic Versioning](https://semver.org/):
|
|
35
|
+
|
|
36
|
+
- **MAJOR** (1.0.0 → 2.0.0): Breaking API changes
|
|
37
|
+
- **MINOR** (1.0.0 → 1.1.0): New features, backwards compatible
|
|
38
|
+
- **PATCH** (1.0.0 → 1.0.1): Bug fixes, backwards compatible
|
|
39
|
+
|
|
40
|
+
Create and push the tag:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Create an annotated tag
|
|
44
|
+
git tag -a v1.1.0 -m "Release v1.1.0"
|
|
45
|
+
|
|
46
|
+
# Push the tag
|
|
47
|
+
git push origin v1.1.0
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 3. Create GitHub Release
|
|
51
|
+
|
|
52
|
+
1. Go to the [GitHub Releases page](https://github.com/shanep/osslag/releases)
|
|
53
|
+
2. Click "Draft a new release"
|
|
54
|
+
3. Select the tag you just created (e.g., `v1.1.0`)
|
|
55
|
+
4. Set the release title (e.g., "v1.1.0")
|
|
56
|
+
5. Add release notes describing changes
|
|
57
|
+
6. Click "Publish release"
|
|
58
|
+
|
|
59
|
+
## Verifying the Release
|
|
60
|
+
|
|
61
|
+
After releasing, verify the version is correct:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Install the released version
|
|
65
|
+
pip install osslag==1.1.0
|
|
66
|
+
|
|
67
|
+
# Check the version
|
|
68
|
+
python -c "from osslag import get_version; print(get_version())"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Troubleshooting
|
|
72
|
+
|
|
73
|
+
### Version shows `.dev` suffix after tagging
|
|
74
|
+
|
|
75
|
+
Make sure you're on the tagged commit:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
git checkout v1.1.0
|
|
79
|
+
uv pip install -e .
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Version not updating
|
|
83
|
+
|
|
84
|
+
Reinstall the package to pick up the new version:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
uv pip install -e . --force-reinstall
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Checking what version will be generated
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# See what version setuptools-scm will generate
|
|
94
|
+
python -m setuptools_scm
|
|
95
|
+
```
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
[build-system]
|
|
2
|
-
requires = ["
|
|
3
|
-
build-backend = "
|
|
2
|
+
requires = ["setuptools>=64", "setuptools-scm>=8"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
4
|
|
|
5
5
|
[project.scripts]
|
|
6
6
|
osslag = "osslag.cli:main"
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "osslag"
|
|
10
|
-
|
|
10
|
+
dynamic = ["version"]
|
|
11
11
|
description = "Technical Lag tools for Open Source Software Projects"
|
|
12
12
|
readme = "README.md"
|
|
13
13
|
authors = [
|
|
@@ -25,6 +25,7 @@ classifiers = [
|
|
|
25
25
|
dependencies = [
|
|
26
26
|
"dotenv>=0.9.9",
|
|
27
27
|
"pandas>=3.0.0",
|
|
28
|
+
"pyarrow>=23.0.0",
|
|
28
29
|
"pygit2>=1.19.1",
|
|
29
30
|
"pygithub>=2.8.1",
|
|
30
31
|
"python-dateutil>=2.9.0.post0",
|
|
@@ -63,8 +64,15 @@ dev = [
|
|
|
63
64
|
]
|
|
64
65
|
|
|
65
66
|
|
|
67
|
+
[tool.setuptools_scm]
|
|
68
|
+
# Version is derived from git tags (e.g., v1.0.2 -> 1.0.2)
|
|
69
|
+
# For development builds, adds .devN+gHASH suffix
|
|
70
|
+
|
|
71
|
+
[tool.setuptools.packages.find]
|
|
72
|
+
where = ["src"]
|
|
73
|
+
|
|
66
74
|
[tool.ruff]
|
|
67
|
-
line-length =
|
|
75
|
+
line-length = 120
|
|
68
76
|
indent-width = 4
|
|
69
77
|
|
|
70
78
|
|
osslag-1.0.1/setup.cfg
ADDED