oaknut 0.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.
oaknut-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,88 @@
1
+ Metadata-Version: 2.4
2
+ Name: oaknut
3
+ Version: 0.1.0
4
+ Summary: Oaknut family meta-distribution — tools for Acorn computer filesystems, files, and formats.
5
+ Author-email: Robert Smallshire <robert@smallshire.org.uk>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/rob-smallshire/oaknut
8
+ Project-URL: Repository, https://github.com/rob-smallshire/oaknut
9
+ Project-URL: Issues, https://github.com/rob-smallshire/oaknut/issues
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3 :: Only
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Requires-Python: >=3.11
21
+ Description-Content-Type: text/markdown
22
+ Requires-Dist: oaknut-file>=1.0
23
+ Requires-Dist: oaknut-dfs>=4.0
24
+ Requires-Dist: oaknut-zip>=2.0
25
+
26
+ # oaknut
27
+
28
+ Python tools for Acorn computer filesystems, files, and formats — the BBC Micro, Electron, Archimedes, and their descendants.
29
+
30
+ This repository is a `uv` workspace monorepo containing the `oaknut-*` family of packages. Each package is independently published to PyPI, but they all contribute to a shared `oaknut.` Python namespace so that imports read naturally:
31
+
32
+ ```python
33
+ from oaknut.file import AcornMeta, MetaFormat
34
+ from oaknut.dfs import DFS, DFSPath
35
+ from oaknut.zip import extract_archive
36
+ ```
37
+
38
+ ## Packages
39
+
40
+ | PyPI distribution | Import path | Scope |
41
+ |---|---|---|
42
+ | [`oaknut-file`](packages/oaknut-file/) | `oaknut.file` | Acorn file metadata — INF sidecars (traditional + PiEconetBridge), filename encoding, xattr namespaces, access flags, host bridge |
43
+ | [`oaknut-dfs`](packages/oaknut-dfs/) | `oaknut.dfs` | Acorn DFS / Watford DDFS disc images (SSD, DSD), and ADFS disc images (pending extraction into a dedicated `oaknut-adfs` package) |
44
+ | [`oaknut-zip`](packages/oaknut-zip/) | `oaknut.zip` | ZIP archives containing Acorn files — SparkFS extras, INF resolution, RISC OS filetype decoding |
45
+
46
+ Planned additional packages (see `docs/monorepo.md`):
47
+
48
+ - `oaknut-fs` — universal filesystem abstractions (catalogue ABC, Acorn codec, boot options)
49
+ - `oaknut-image` — disc-image abstractions (sector access, geometry, free-space maps)
50
+ - `oaknut-adfs` — ADFS (extracted from the current `oaknut-dfs`)
51
+ - `oaknut-basic` — BBC BASIC tokeniser / detokeniser
52
+ - `oaknut-disc` — the `disc` CLI binary
53
+
54
+ ## Quick start
55
+
56
+ ```sh
57
+ git clone https://github.com/rob-smallshire/oaknut.git
58
+ cd oaknut
59
+ uv sync
60
+ uv run pytest
61
+ ```
62
+
63
+ The workspace uses [uv](https://github.com/astral-sh/uv) for dependency management. Sibling packages are wired together as path dependencies during development via `[tool.uv.sources]` in the workspace-root `pyproject.toml`, so any change in one package is immediately visible to the others without a publish round-trip.
64
+
65
+ ## Installing from PyPI
66
+
67
+ Each library package is independently installable:
68
+
69
+ ```sh
70
+ pip install oaknut-file
71
+ pip install oaknut-dfs
72
+ pip install oaknut-zip
73
+ ```
74
+
75
+ Or install the whole family via the meta-distribution:
76
+
77
+ ```sh
78
+ pip install oaknut
79
+ ```
80
+
81
+ ## Documentation
82
+
83
+ - [`docs/monorepo.md`](docs/monorepo.md) — monorepo design, architectural target, package layering
84
+ - [`docs/cli-design.md`](docs/cli-design.md) — design of the forthcoming `disc` CLI
85
+
86
+ ## Licence
87
+
88
+ MIT. See each package's `LICENSE` file.
oaknut-0.1.0/README.md ADDED
@@ -0,0 +1,63 @@
1
+ # oaknut
2
+
3
+ Python tools for Acorn computer filesystems, files, and formats — the BBC Micro, Electron, Archimedes, and their descendants.
4
+
5
+ This repository is a `uv` workspace monorepo containing the `oaknut-*` family of packages. Each package is independently published to PyPI, but they all contribute to a shared `oaknut.` Python namespace so that imports read naturally:
6
+
7
+ ```python
8
+ from oaknut.file import AcornMeta, MetaFormat
9
+ from oaknut.dfs import DFS, DFSPath
10
+ from oaknut.zip import extract_archive
11
+ ```
12
+
13
+ ## Packages
14
+
15
+ | PyPI distribution | Import path | Scope |
16
+ |---|---|---|
17
+ | [`oaknut-file`](packages/oaknut-file/) | `oaknut.file` | Acorn file metadata — INF sidecars (traditional + PiEconetBridge), filename encoding, xattr namespaces, access flags, host bridge |
18
+ | [`oaknut-dfs`](packages/oaknut-dfs/) | `oaknut.dfs` | Acorn DFS / Watford DDFS disc images (SSD, DSD), and ADFS disc images (pending extraction into a dedicated `oaknut-adfs` package) |
19
+ | [`oaknut-zip`](packages/oaknut-zip/) | `oaknut.zip` | ZIP archives containing Acorn files — SparkFS extras, INF resolution, RISC OS filetype decoding |
20
+
21
+ Planned additional packages (see `docs/monorepo.md`):
22
+
23
+ - `oaknut-fs` — universal filesystem abstractions (catalogue ABC, Acorn codec, boot options)
24
+ - `oaknut-image` — disc-image abstractions (sector access, geometry, free-space maps)
25
+ - `oaknut-adfs` — ADFS (extracted from the current `oaknut-dfs`)
26
+ - `oaknut-basic` — BBC BASIC tokeniser / detokeniser
27
+ - `oaknut-disc` — the `disc` CLI binary
28
+
29
+ ## Quick start
30
+
31
+ ```sh
32
+ git clone https://github.com/rob-smallshire/oaknut.git
33
+ cd oaknut
34
+ uv sync
35
+ uv run pytest
36
+ ```
37
+
38
+ The workspace uses [uv](https://github.com/astral-sh/uv) for dependency management. Sibling packages are wired together as path dependencies during development via `[tool.uv.sources]` in the workspace-root `pyproject.toml`, so any change in one package is immediately visible to the others without a publish round-trip.
39
+
40
+ ## Installing from PyPI
41
+
42
+ Each library package is independently installable:
43
+
44
+ ```sh
45
+ pip install oaknut-file
46
+ pip install oaknut-dfs
47
+ pip install oaknut-zip
48
+ ```
49
+
50
+ Or install the whole family via the meta-distribution:
51
+
52
+ ```sh
53
+ pip install oaknut
54
+ ```
55
+
56
+ ## Documentation
57
+
58
+ - [`docs/monorepo.md`](docs/monorepo.md) — monorepo design, architectural target, package layering
59
+ - [`docs/cli-design.md`](docs/cli-design.md) — design of the forthcoming `disc` CLI
60
+
61
+ ## Licence
62
+
63
+ MIT. See each package's `LICENSE` file.
@@ -0,0 +1,88 @@
1
+ Metadata-Version: 2.4
2
+ Name: oaknut
3
+ Version: 0.1.0
4
+ Summary: Oaknut family meta-distribution — tools for Acorn computer filesystems, files, and formats.
5
+ Author-email: Robert Smallshire <robert@smallshire.org.uk>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/rob-smallshire/oaknut
8
+ Project-URL: Repository, https://github.com/rob-smallshire/oaknut
9
+ Project-URL: Issues, https://github.com/rob-smallshire/oaknut/issues
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3 :: Only
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Requires-Python: >=3.11
21
+ Description-Content-Type: text/markdown
22
+ Requires-Dist: oaknut-file>=1.0
23
+ Requires-Dist: oaknut-dfs>=4.0
24
+ Requires-Dist: oaknut-zip>=2.0
25
+
26
+ # oaknut
27
+
28
+ Python tools for Acorn computer filesystems, files, and formats — the BBC Micro, Electron, Archimedes, and their descendants.
29
+
30
+ This repository is a `uv` workspace monorepo containing the `oaknut-*` family of packages. Each package is independently published to PyPI, but they all contribute to a shared `oaknut.` Python namespace so that imports read naturally:
31
+
32
+ ```python
33
+ from oaknut.file import AcornMeta, MetaFormat
34
+ from oaknut.dfs import DFS, DFSPath
35
+ from oaknut.zip import extract_archive
36
+ ```
37
+
38
+ ## Packages
39
+
40
+ | PyPI distribution | Import path | Scope |
41
+ |---|---|---|
42
+ | [`oaknut-file`](packages/oaknut-file/) | `oaknut.file` | Acorn file metadata — INF sidecars (traditional + PiEconetBridge), filename encoding, xattr namespaces, access flags, host bridge |
43
+ | [`oaknut-dfs`](packages/oaknut-dfs/) | `oaknut.dfs` | Acorn DFS / Watford DDFS disc images (SSD, DSD), and ADFS disc images (pending extraction into a dedicated `oaknut-adfs` package) |
44
+ | [`oaknut-zip`](packages/oaknut-zip/) | `oaknut.zip` | ZIP archives containing Acorn files — SparkFS extras, INF resolution, RISC OS filetype decoding |
45
+
46
+ Planned additional packages (see `docs/monorepo.md`):
47
+
48
+ - `oaknut-fs` — universal filesystem abstractions (catalogue ABC, Acorn codec, boot options)
49
+ - `oaknut-image` — disc-image abstractions (sector access, geometry, free-space maps)
50
+ - `oaknut-adfs` — ADFS (extracted from the current `oaknut-dfs`)
51
+ - `oaknut-basic` — BBC BASIC tokeniser / detokeniser
52
+ - `oaknut-disc` — the `disc` CLI binary
53
+
54
+ ## Quick start
55
+
56
+ ```sh
57
+ git clone https://github.com/rob-smallshire/oaknut.git
58
+ cd oaknut
59
+ uv sync
60
+ uv run pytest
61
+ ```
62
+
63
+ The workspace uses [uv](https://github.com/astral-sh/uv) for dependency management. Sibling packages are wired together as path dependencies during development via `[tool.uv.sources]` in the workspace-root `pyproject.toml`, so any change in one package is immediately visible to the others without a publish round-trip.
64
+
65
+ ## Installing from PyPI
66
+
67
+ Each library package is independently installable:
68
+
69
+ ```sh
70
+ pip install oaknut-file
71
+ pip install oaknut-dfs
72
+ pip install oaknut-zip
73
+ ```
74
+
75
+ Or install the whole family via the meta-distribution:
76
+
77
+ ```sh
78
+ pip install oaknut
79
+ ```
80
+
81
+ ## Documentation
82
+
83
+ - [`docs/monorepo.md`](docs/monorepo.md) — monorepo design, architectural target, package layering
84
+ - [`docs/cli-design.md`](docs/cli-design.md) — design of the forthcoming `disc` CLI
85
+
86
+ ## Licence
87
+
88
+ MIT. See each package's `LICENSE` file.
@@ -0,0 +1,7 @@
1
+ README.md
2
+ pyproject.toml
3
+ oaknut.egg-info/PKG-INFO
4
+ oaknut.egg-info/SOURCES.txt
5
+ oaknut.egg-info/dependency_links.txt
6
+ oaknut.egg-info/requires.txt
7
+ oaknut.egg-info/top_level.txt
@@ -0,0 +1,3 @@
1
+ oaknut-file>=1.0
2
+ oaknut-dfs>=4.0
3
+ oaknut-zip>=2.0
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,98 @@
1
+ # oaknut — workspace root.
2
+ #
3
+ # This pyproject.toml serves two purposes:
4
+ #
5
+ # 1. It declares the uv workspace that stitches together the
6
+ # packages/oaknut-* members into a single development environment.
7
+ #
8
+ # 2. It defines an optional `oaknut` meta-distribution on PyPI whose
9
+ # only job is to depend on every family member, so `pip install
10
+ # oaknut` is a one-shot install of the whole suite. Publishing it
11
+ # also claims the bare `oaknut` name on PyPI before anyone else.
12
+ #
13
+ # All packages in packages/ contribute to a single PEP 420 implicit
14
+ # namespace package (`oaknut`). No package ever ships
15
+ # src/oaknut/__init__.py — that is enforced by scripts/check_no_namespace_init.sh
16
+ # which runs both locally via pre-commit and in CI.
17
+
18
+ [build-system]
19
+ requires = ["setuptools>=68"]
20
+ build-backend = "setuptools.build_meta"
21
+
22
+ [project]
23
+ name = "oaknut"
24
+ version = "0.1.0"
25
+ requires-python = ">=3.11"
26
+ description = "Oaknut family meta-distribution — tools for Acorn computer filesystems, files, and formats."
27
+ readme = "README.md"
28
+ license = "MIT"
29
+ authors = [{ name = "Robert Smallshire", email = "robert@smallshire.org.uk" }]
30
+ classifiers = [
31
+ "Development Status :: 3 - Alpha",
32
+ "Environment :: Console",
33
+ "Intended Audience :: Developers",
34
+ "Operating System :: OS Independent",
35
+ "Programming Language :: Python",
36
+ "Programming Language :: Python :: 3",
37
+ "Programming Language :: Python :: 3 :: Only",
38
+ "Programming Language :: Python :: 3.11",
39
+ "Programming Language :: Python :: 3.12",
40
+ "Programming Language :: Python :: 3.13",
41
+ ]
42
+ dependencies = [
43
+ "oaknut-file>=1.0",
44
+ "oaknut-dfs>=4.0",
45
+ "oaknut-zip>=2.0",
46
+ ]
47
+
48
+ [project.urls]
49
+ Homepage = "https://github.com/rob-smallshire/oaknut"
50
+ Repository = "https://github.com/rob-smallshire/oaknut"
51
+ Issues = "https://github.com/rob-smallshire/oaknut/issues"
52
+
53
+ [tool.setuptools]
54
+ # The meta-distribution itself ships no code — only dependencies.
55
+ packages = []
56
+
57
+ [tool.uv.workspace]
58
+ members = ["packages/oaknut-*"]
59
+
60
+ [tool.uv.sources]
61
+ oaknut-file = { workspace = true }
62
+ oaknut-dfs = { workspace = true }
63
+ oaknut-zip = { workspace = true }
64
+
65
+ [tool.uv]
66
+ default-groups = ["test", "lint", "dev"]
67
+
68
+ [dependency-groups]
69
+ test = [
70
+ "pytest>=8.3",
71
+ "pytest-cov>=5",
72
+ ]
73
+ lint = [
74
+ "ruff>=0.9",
75
+ ]
76
+ dev = [
77
+ "pre-commit>=3",
78
+ "bump-my-version>=0.28",
79
+ ]
80
+
81
+ [tool.pytest.ini_options]
82
+ # importlib mode is required for PEP 420 namespace packages. The
83
+ # default prepend mode collides with sibling packages that contribute
84
+ # to the same namespace — they stop resolving each other.
85
+ minversion = "8.0"
86
+ addopts = ["--import-mode=importlib"]
87
+ testpaths = [
88
+ "packages/oaknut-file/tests",
89
+ "packages/oaknut-dfs/tests",
90
+ "packages/oaknut-zip/tests",
91
+ ]
92
+
93
+ [tool.ruff]
94
+ line-length = 100
95
+ target-version = "py311"
96
+
97
+ [tool.ruff.lint]
98
+ select = ["E", "F", "W", "I"]
oaknut-0.1.0/setup.cfg ADDED
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+