ramtable 0.3.1__tar.gz → 0.3.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.
@@ -26,10 +26,11 @@ jobs:
26
26
  fail-fast: false
27
27
  matrix:
28
28
  python-version:
29
- - "3.10"
30
29
  - "3.11"
31
30
  - "3.12"
32
31
  - "3.13"
32
+ - "3.14"
33
+ - "3.15"
33
34
 
34
35
  steps:
35
36
  - name: Check out repository
@@ -3,6 +3,23 @@
3
3
  Notable changes to RAMTable are documented in this file. The history starts
4
4
  with the project's first version.
5
5
 
6
+ ## [0.3.2]
7
+
8
+ Raises the minimum supported Python version, expands the tested versions,
9
+ and centralizes the package version.
10
+
11
+ ### Added
12
+
13
+ - `ramtable.__version__` exposes the installed distribution version, read
14
+ from package metadata.
15
+
16
+ ### Changed
17
+
18
+ - Python 3.11 or later is now required; support for Python 3.10 was removed.
19
+ - Added Python 3.14 and 3.15 to the test matrix and package classifiers.
20
+ - `pyproject.toml` is the single source of truth for the version; the README
21
+ uses a dynamic PyPI badge instead of a hardcoded number.
22
+
6
23
  ## [0.3.1]
7
24
 
8
25
  Publishes RAMTable to the official PyPI index alongside TestPyPI.
@@ -19,7 +36,6 @@ Publishes RAMTable to the official PyPI index alongside TestPyPI.
19
36
 
20
37
  - Installation documentation covers stable releases from PyPI and
21
38
  pre-releases from TestPyPI.
22
- - `pyproject.toml` reports version `0.3.1rc0`.
23
39
 
24
40
  ## [0.3.0]
25
41
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: ramtable
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: A lightweight in-memory table library for Python.
5
5
  Author: Thiago Valentín Stilo Limarino
6
6
  License-Expression: MIT
@@ -10,19 +10,20 @@ Classifier: Development Status :: 3 - Alpha
10
10
  Classifier: Intended Audience :: Developers
11
11
  Classifier: License :: OSI Approved :: MIT License
12
12
  Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.10
14
13
  Classifier: Programming Language :: Python :: 3.11
15
14
  Classifier: Programming Language :: Python :: 3.12
16
15
  Classifier: Programming Language :: Python :: 3.13
17
- Requires-Python: >=3.10
16
+ Classifier: Programming Language :: Python :: 3.14
17
+ Classifier: Programming Language :: Python :: 3.15
18
+ Requires-Python: >=3.11
18
19
  Description-Content-Type: text/markdown
19
20
 
20
21
  # RAMTable
21
22
 
22
- ![Python](https://img.shields.io/badge/python-3.10%2B-blue)
23
+ ![Python](https://img.shields.io/badge/python-3.11%2B-blue)
23
24
  ![License](https://img.shields.io/badge/license-MIT-green)
24
- [![PyPI](https://img.shields.io/badge/PyPI-ramtable-blue)](https://pypi.org/project/ramtable/)
25
- [![TestPyPI](https://img.shields.io/badge/TestPyPI-ramtable-orange)](https://test.pypi.org/project/ramtable/)
25
+ [![PyPI](https://img.shields.io/pypi/v/ramtable)](https://pypi.org/project/ramtable/)
26
+ [![TestPyPI](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Ftest.pypi.org%2Fpypi%2Framtable%2Fjson&label=TestPyPI&query=%24.info.version&color=blue)](https://test.pypi.org/project/ramtable/)
26
27
 
27
28
  RAMTable provides typed in-memory tables for data that only needs to live
28
29
  while a program is running. It gives records an explicit schema and common
@@ -62,7 +63,7 @@ temporary storage, not analytics.
62
63
 
63
64
  ## Installation
64
65
 
65
- RAMTable requires Python 3.10 or later.
66
+ RAMTable requires Python 3.11 or later.
66
67
 
67
68
  Install the latest stable release from PyPI:
68
69
 
@@ -218,10 +219,12 @@ writes to disk: records disappear when the process ends.
218
219
 
219
220
  ## Project status
220
221
 
221
- The current development version is **0.3.1rc0**. RAMTable is published as
222
- `ramtable` on both [PyPI](https://pypi.org/project/ramtable/) and
222
+ RAMTable is published as `ramtable` on
223
+ [PyPI](https://pypi.org/project/ramtable/) and
223
224
  [TestPyPI](https://test.pypi.org/project/ramtable/). Use PyPI for stable
224
- releases and TestPyPI to try release candidates and other pre-releases.
225
+ releases and TestPyPI to try release candidates and other pre-releases. The
226
+ PyPI badge above shows the latest published version; the
227
+ [CHANGELOG](CHANGELOG.md) records the full release history.
225
228
 
226
229
  The project is at an early stage and will continue to evolve. See the
227
230
  [CHANGELOG](CHANGELOG.md) for release history.
@@ -1,9 +1,9 @@
1
1
  # RAMTable
2
2
 
3
- ![Python](https://img.shields.io/badge/python-3.10%2B-blue)
3
+ ![Python](https://img.shields.io/badge/python-3.11%2B-blue)
4
4
  ![License](https://img.shields.io/badge/license-MIT-green)
5
- [![PyPI](https://img.shields.io/badge/PyPI-ramtable-blue)](https://pypi.org/project/ramtable/)
6
- [![TestPyPI](https://img.shields.io/badge/TestPyPI-ramtable-orange)](https://test.pypi.org/project/ramtable/)
5
+ [![PyPI](https://img.shields.io/pypi/v/ramtable)](https://pypi.org/project/ramtable/)
6
+ [![TestPyPI](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Ftest.pypi.org%2Fpypi%2Framtable%2Fjson&label=TestPyPI&query=%24.info.version&color=blue)](https://test.pypi.org/project/ramtable/)
7
7
 
8
8
  RAMTable provides typed in-memory tables for data that only needs to live
9
9
  while a program is running. It gives records an explicit schema and common
@@ -43,7 +43,7 @@ temporary storage, not analytics.
43
43
 
44
44
  ## Installation
45
45
 
46
- RAMTable requires Python 3.10 or later.
46
+ RAMTable requires Python 3.11 or later.
47
47
 
48
48
  Install the latest stable release from PyPI:
49
49
 
@@ -199,10 +199,12 @@ writes to disk: records disappear when the process ends.
199
199
 
200
200
  ## Project status
201
201
 
202
- The current development version is **0.3.1rc0**. RAMTable is published as
203
- `ramtable` on both [PyPI](https://pypi.org/project/ramtable/) and
202
+ RAMTable is published as `ramtable` on
203
+ [PyPI](https://pypi.org/project/ramtable/) and
204
204
  [TestPyPI](https://test.pypi.org/project/ramtable/). Use PyPI for stable
205
- releases and TestPyPI to try release candidates and other pre-releases.
205
+ releases and TestPyPI to try release candidates and other pre-releases. The
206
+ PyPI badge above shows the latest published version; the
207
+ [CHANGELOG](CHANGELOG.md) records the full release history.
206
208
 
207
209
  The project is at an early stage and will continue to evolve. See the
208
210
  [CHANGELOG](CHANGELOG.md) for release history.
@@ -1,11 +1,12 @@
1
1
  # API reference
2
2
 
3
3
  This reference covers every public symbol RAMTable exposes: the `Table`,
4
- `Columns`, and `Rows` classes, and the optional `TypeValidator`. For an
5
- example-driven introduction, read the [user guide](guide.md) first.
4
+ `Columns`, and `Rows` classes, the optional `TypeValidator`, and the package
5
+ version. For an example-driven introduction, read the
6
+ [user guide](guide.md) first.
6
7
 
7
8
  ```python
8
- from ramtable import Columns, Rows, Table
9
+ from ramtable import Columns, Rows, Table, __version__
9
10
  from ramtable.types import TypeValidator
10
11
  ```
11
12
 
@@ -18,9 +19,21 @@ In normal use you only create a `Table`; it constructs the coordinated
18
19
  - [`Columns`](#columns)
19
20
  - [`Rows`](#rows)
20
21
  - [`TypeValidator`](#typevalidator)
22
+ - [Package version](#package-version)
21
23
  - [Internal helpers](#internal-helpers)
22
24
  - [Copying behavior](#copying-behavior)
23
25
 
26
+ ## Package version
27
+
28
+ ```python
29
+ from ramtable import __version__
30
+ ```
31
+
32
+ `__version__` is the version of the installed distribution, read from its
33
+ package metadata. It matches `project.version` in `pyproject.toml` and the
34
+ artifact built from it. In a source checkout that has not been installed,
35
+ it is `"0+unknown"`.
36
+
24
37
  ## `Table`
25
38
 
26
39
  ```python
@@ -47,7 +47,7 @@ how to prepare a release. It does not change or extend the RAMTable API.
47
47
 
48
48
  ## Set up a local environment
49
49
 
50
- Python 3.10 or later is required. Install the project in editable mode:
50
+ Python 3.11 or later is required. Install the project in editable mode:
51
51
 
52
52
  ```bash
53
53
  python -m pip install --editable .
@@ -91,7 +91,7 @@ the branch:
91
91
 
92
92
  | Branch | Version form | Example | Published to |
93
93
  |---|---|---|---|
94
- | `dev` | `X.Y.Z.devN` | `0.3.1.dev1` | nothing |
94
+ | `dev` | `X.Y.Z.devN` | `0.3.2.dev0` | nothing |
95
95
  | `test_pypi` | `X.Y.ZrcN` or `X.Y.Z` | `0.3.1rc0`, `0.3.1` | TestPyPI |
96
96
  | `main` | `X.Y.Z` | `0.3.1` | PyPI |
97
97
 
@@ -101,15 +101,24 @@ the branch:
101
101
  - `MINOR` for compatible functionality;
102
102
  - `MAJOR` for breaking API or behavior changes.
103
103
 
104
+ `pyproject.toml` is the single source of truth for the current version. The
105
+ build backend reads it, the GitHub Actions workflows read it, and the
106
+ installed package exposes it as `ramtable.__version__` through its
107
+ distribution metadata. The README uses a dynamic PyPI badge instead of a
108
+ hardcoded number. `CHANGELOG.md` is the only other file with version
109
+ numbers, because it is a historical record of releases.
110
+
104
111
  Development versions are never published. TestPyPI accepts release
105
112
  candidates and stable versions, so the final stable release can be tested
106
113
  there before it reaches PyPI. PyPI accepts stable versions only.
107
114
 
108
115
  ## Preparing a release
109
116
 
110
- 1. On `dev`, update `project.version` in `pyproject.toml` and add the
111
- corresponding section to `CHANGELOG.md`.
112
- 2. Check that the README and documentation describe current behavior.
117
+ 1. On `dev`, update `project.version` in `pyproject.toml`. This is the only
118
+ place where the current version is defined. Add the corresponding
119
+ section to `CHANGELOG.md`.
120
+ 2. Check that the README and documentation describe current behavior. The
121
+ README must not contain a hardcoded version.
113
122
  3. Run the example and all available build/test checks.
114
123
  4. Build and inspect the wheel and source distribution.
115
124
  5. Open a pull request from `dev` to `test_pypi`. The pull request validates
@@ -4,10 +4,10 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "ramtable"
7
- version = "0.3.1"
7
+ version = "0.3.2"
8
8
  description = "A lightweight in-memory table library for Python."
9
9
  readme = "README.md"
10
- requires-python = ">=3.10"
10
+ requires-python = ">=3.11"
11
11
  license = "MIT"
12
12
  authors = [
13
13
  { name = "Thiago Valentín Stilo Limarino" }
@@ -22,10 +22,11 @@ classifiers = [
22
22
  "Development Status :: 3 - Alpha",
23
23
  "Intended Audience :: Developers",
24
24
  "Programming Language :: Python :: 3",
25
- "Programming Language :: Python :: 3.10",
26
25
  "Programming Language :: Python :: 3.11",
27
26
  "Programming Language :: Python :: 3.12",
28
27
  "Programming Language :: Python :: 3.13",
28
+ "Programming Language :: Python :: 3.14",
29
+ "Programming Language :: Python :: 3.15",
29
30
  "License :: OSI Approved :: MIT License",
30
31
  ]
31
32
 
@@ -0,0 +1,24 @@
1
+ """Public RAMTable API.
2
+
3
+ Expose :class:`Columns`, :class:`Rows`, and :class:`Table` from the
4
+ ``ramtable`` package as a concise, stable import path, along with the
5
+ installed package version.
6
+ """
7
+
8
+ from importlib.metadata import PackageNotFoundError, version
9
+
10
+ from .columns import Columns
11
+ from .rows import Rows
12
+ from .table import Table
13
+
14
+ try:
15
+ __version__ = version("ramtable")
16
+ except PackageNotFoundError: # pragma: no cover - source checkout without install
17
+ __version__ = "0+unknown"
18
+
19
+ __all__ = [
20
+ "__version__",
21
+ "Columns",
22
+ "Rows",
23
+ "Table",
24
+ ]
@@ -1,15 +0,0 @@
1
- """Public RAMTable API.
2
-
3
- Expose :class:`Columns`, :class:`Rows`, and :class:`Table` from the
4
- ``ramtable`` package as a concise, stable import path.
5
- """
6
-
7
- from .columns import Columns
8
- from .rows import Rows
9
- from .table import Table
10
-
11
- __all__ = [
12
- "Columns",
13
- "Rows",
14
- "Table",
15
- ]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes