Skip to content

Commit 1facf1e

Browse files
build: drop support for Python 3.8 and 3.9 (#8)
Co-authored-by: Claude Haiku 4.5 <[email protected]>
1 parent 8d4c300 commit 1facf1e

File tree

3 files changed

+57
-8
lines changed

3 files changed

+57
-8
lines changed

.python-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.8
1+
3.10

CLAUDE.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# CLAUDE.md
2+
3+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4+
5+
## Project Overview
6+
7+
ossin is a Python CLI utility that displays system information (OS, Python environment, platform) using Rich for terminal output. Built with Typer, it supports table, panel, and JSON output formats.
8+
9+
## Development Commands
10+
11+
```bash
12+
uv sync # Install dependencies
13+
uv run ossin # Run the CLI
14+
uv run ossin --format json # Run with JSON output
15+
uv run pytest # Run tests
16+
```
17+
18+
### Linting & Type Checking (CI runs these on Ubuntu only)
19+
20+
```bash
21+
uv run ruff check src tests # Lint
22+
uv run ruff format --check . # Format check
23+
uv run mypy # Type check (strict mode)
24+
uv run ty check # Type check with ty
25+
uv run pyrefly check # Type check with pyrefly
26+
uv run pyright # Type check with pyright
27+
uv run vulture src tests # Dead code detection
28+
uv run validate-pyproject pyproject.toml
29+
```
30+
31+
## Architecture
32+
33+
- `src/ossin/core.py``SystemInfo` TypedDict and `get_system_info()` function (stdlib only: `platform`, `sys`)
34+
- `src/ossin/cli.py` — Typer app with three output renderers (table, panels, JSON) using Rich
35+
- `src/ossin/__main__.py` — Entry point, imports and runs `cli.app`
36+
- Version is dynamic from VCS via hatch-vcs, generated into `src/ossin/_version.py` at build time
37+
38+
## Code Style
39+
40+
- **Ruff** with ALL rules selected, preview mode, unsafe fixes enabled. Ignored rules: B008, COM812, FBT001, FBT003
41+
- No relative imports allowed (`ban-relative-imports = "all"`)
42+
- McCabe complexity limit: 4
43+
- Docstring convention: PEP 257
44+
- All type checkers run in strict/error-on-warning mode
45+
- Target Python version: 3.10
46+
47+
## CI/CD
48+
49+
- PR titles must follow **Conventional Commits** format (enforced by check-pr-title workflow)
50+
- CI runs linters/type-checkers on Ubuntu only; runs the CLI on all three platforms (Ubuntu, macOS, Windows)
51+
- CD publishes to PyPI via trusted publishing on GitHub release, then triggers Homebrew and Scoop manifest updates

pyproject.toml

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ classifiers = [
3434
"Programming Language :: Python :: 3.12",
3535
"Programming Language :: Python :: 3.13",
3636
"Programming Language :: Python :: 3.14",
37-
"Programming Language :: Python :: 3.8",
38-
"Programming Language :: Python :: 3.9",
3937
"Programming Language :: Python :: Implementation :: CPython",
4038
"Programming Language :: Python :: Implementation :: PyPy",
4139
"Programming Language :: Python",
@@ -45,7 +43,7 @@ classifiers = [
4543
"Topic :: Terminals",
4644
"Typing :: Typed",
4745
]
48-
requires-python = ">=3.8"
46+
requires-python = ">=3.10"
4947
dependencies = [
5048
"typer>=0.16.0",
5149
]
@@ -123,7 +121,7 @@ output-format = "full"
123121
preview = true
124122
show-fixes = true
125123
src = ["src", "tests", "examples"]
126-
target-version = "py38"
124+
target-version = "py310"
127125
unsafe-fixes = true
128126

129127

@@ -177,7 +175,7 @@ max-complexity = 4
177175
[tool.mypy]
178176
files = ["src"]
179177
pretty = true
180-
python_version = "3.8"
178+
python_version = "3.10"
181179
show_error_codes = true
182180
strict = true
183181

@@ -192,13 +190,13 @@ respect-ignore-files = false
192190

193191

194192
[tool.ty.environment]
195-
python-version = "3.8"
193+
python-version = "3.10"
196194

197195

198196
[tool.ty.terminal]
199197
error-on-warning = true
200198

201199

202200
[tool.pyrefly]
203-
python-version = "3.8"
201+
python-version = "3.10"
204202
project-includes = ["src"]

0 commit comments

Comments
 (0)