Skip to content

Commit a859972

Browse files
authored
Merge branch 'main' into dependabot/pip/ruff-0.14.3
2 parents 9ea18bd + 1b77686 commit a859972

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+1213
-210
lines changed

.github/workflows/validate.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
strategy:
2626
fail-fast: false
2727
matrix:
28-
python-version: ["3.9", "3.10", "3.11", "3.12"]
28+
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
2929
os: [ubuntu-latest, macos-latest, windows-latest]
3030
# This is used for injecting additional tests for a specific python
3131
# version and OS.

CHANGELOG.md

Lines changed: 70 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,68 @@
1+
## 2025-10-30 RELEASE 7.4.0
2+
3+
This release addresses a couple of bugs and improves the testing matrix by adding python 3.12, 3.13 and 3.14 to the test matrix.
4+
5+
This is also the first RDFLib release to use MkDocs for documentation.
6+
7+
Pull requests merged:
8+
9+
- chore(v7): upgrade ci and dev/test deps by @edmondchuc in [#3288](https://github.com/RDFLib/rdflib/pull/3288)
10+
- feat: v7 mkdocs by @edmondchuc in [#3287](https://github.com/RDFLib/rdflib/pull/3287)
11+
- fix: set changed size when iterating the store's graphs by @edmondchuc in [#3281](https://github.com/RDFLib/rdflib/pull/3281)
12+
- lazy fix of issue pytest failure on python 3.13.8 - Removing of xfail raise restriction by @WhiteGobo in [#3275](https://github.com/RDFLib/rdflib/pull/3275)
13+
14+
## 2025-10-24 RELEASE 7.3.0
15+
16+
This release delivers several important fixes and enhancements to RDFLib’s Dataset implementation, resolving long-standing issues and improving consistency across serialization and SPARQL operations. It also introduces new deprecation notices for certain Dataset methods and attributes, which will be removed in the next major release. In addition, this version includes a range of improvements to SPARQL result parsing, typing, and literal handling.
17+
18+
### Features
19+
20+
- Added `Dataset.__iadd__` support
21+
- Dataset's default serialize format is now `trig`
22+
- Datasets can now add graphs backed by different stores
23+
24+
### Fixes and Improvements
25+
26+
- Fixed an issue where the `RecursiveSerializer` would output undeclared prefixes for predicates that contained the base as a substring
27+
- Prevented prefix generation for predicates corresponding to the base namespace
28+
- SPARQL Update now correctly inserts into the default graph
29+
- Dataset.parse now returns Self
30+
- N-Quads serialization no longer includes the RDFLib internal default graph identifier
31+
- Static type checkers can now infer the type of `Term.__new__`
32+
- Removed automatic date conversion for gYear and gYearMonth literals
33+
- Optional clauses in SPARQL queries can now bind variables
34+
- Fixed reevaluation logic in SPARQL Update between update loops
35+
36+
### Maintenance
37+
38+
- Added deprecation notices to certain Dataset methods and attributes
39+
- Use Dataset.graphs instead of Dataset.contexts method
40+
- Use Dataset.default_graph instead of Dataset.default_context
41+
- Deprecate Dataset.identifier entirely.
42+
- Updated type hints for Graph.open() with SPARQLUpdateStore configuration
43+
- SPARQL Result Parsing Improvements
44+
- Simplified and modernized the SPARQL result parsing system:
45+
- These changes maintain backward compatibility while making the SPARQL API more flexible and extensible.
46+
47+
Pull requests merged:
48+
49+
- feat: add Dataset `__iadd__` support by @edmondchuc in [#3268](https://github.com/RDFLib/rdflib/pull/3268)
50+
- fix: RecursiveSerializer- outputs undeclared prefix for predicates that contains the base as a substring by @edmondchuc in [#3267](https://github.com/RDFLib/rdflib/pull/3267)
51+
- fix: allow static type checkers to infer term's `__new__` type by @edmondchuc in [#3266](https://github.com/RDFLib/rdflib/pull/3266)
52+
- fix: SPARQL Update inserts into the default graph by @edmondchuc in [#3265](https://github.com/RDFLib/rdflib/pull/3265)
53+
- chore: add deprecation notice to Dataset methods and attributes by @edmondchuc in [#3264](https://github.com/RDFLib/rdflib/pull/3264)
54+
- fix: Dataset.parse now returns Self by @edmondchuc in [#3263](https://github.com/RDFLib/rdflib/pull/3263)
55+
- fix: dataset nquads serialization including RDFLib internal default graph identifier by @edmondchuc in [#3262](https://github.com/RDFLib/rdflib/pull/3262)
56+
- patch for reevaluation in sparql modify between update loops. with test by @WhiteGobo in [#3261](https://github.com/RDFLib/rdflib/pull/3261)
57+
- feat: change dataset's default serialize format to trig by @edmondchuc in [#3260](https://github.com/RDFLib/rdflib/pull/3260)
58+
- feat: allow adding graphs backed by different stores to the same dataset by @edmondchuc in [#3259](https://github.com/RDFLib/rdflib/pull/3259)
59+
- fix(v7): remove Literal.toPython date conversion for gYear/gYearMonth (#3115) by @edmondchuc in [#3258](https://github.com/RDFLib/rdflib/pull/3258)
60+
- sparqls optionals clause can now bind variables. with test. issue 2957 by @WhiteGobo in [#3247](https://github.com/RDFLib/rdflib/pull/3247)
61+
- fix: skip prefix generation for predicates corresponding to base namespace by @edmondchuc in [#3244](https://github.com/RDFLib/rdflib/pull/3244)
62+
- Run the example queries agains the local fuseki by @white-gecko in [#3240](https://github.com/RDFLib/rdflib/pull/3240)
63+
- Adjust the type hint for Graph open to reflect a SPARQLUpdateStore configuration by @white-gecko in [#3239](https://github.com/RDFLib/rdflib/pull/3239)
64+
- SPARQL result parsing by @white-gecko in [#2796](https://github.com/RDFLib/rdflib/pull/2796)
65+
166
## 2025-09-19 RELEASE 7.2.1
267

368
A tiny clean up release.
@@ -169,26 +234,12 @@ For the full list of included PRs, see the preparatory PR:
169234

170235
## 2025-01-10 RELEASE 7.1.2
171236

172-
A minor release that bumped up a few dev dependencies and achieved a few small but notable improvements, particularly with longturtle sorting:
173-
174-
Feature PRs:
175-
176-
* [PR #2963](https://github.com/RDFLib/rdflib/pull/2963) Big typing updates
177-
* [PR #2964](https://github.com/RDFLib/rdflib/pull/2964) Defined Namesapce warnings fix
178-
* [PR #2971](https://github.com/RDFLib/rdflib/pull/2971) convert uses of Optional and some Union usage to union operator |
179-
* [PR #2989](https://github.com/RDFLib/rdflib/pull/2989) Fixed incorrect ASK behaviour for dataset with one element
180-
* [PR #2997](https://github.com/RDFLib/rdflib/pull/2997) sort longturtle blank nodes
181-
* [PR #3008](https://github.com/RDFLib/rdflib/pull/3008) deterministic longturtle serialisation using RDF canonicalization + n-triples sort
182-
* [PR #3012](https://github.com/RDFLib/rdflib/pull/3012) Dataset documentation improvements
183-
184-
Dependency bumps:
237+
A minor release that inadvertently removed support for Python 3.8. This release
238+
how now been deleted.
185239

186-
* ruff from 0.71 -> 0.8.6
187-
* orjson 3.10.10 ->
188-
* pytest-cov to 6.0.0
189-
* coverage to 7.6.10
190-
* pytest to 8.3.4
191-
* poetry to 2.0.0
240+
All the improved features initially made available in this release that were
241+
compatible with Python 3.8 have been preserved in the 7.1.3 release. The main
242+
additions to 7.1.2 not preserved in 7.1.3 are updated type hints.
192243

193244
## 2024-10-17 RELEASE 7.1.1
194245

CITATION.cff

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ authors:
7272
- family-names: "Stuart"
7373
given-names: "Veyndan"
7474
title: "RDFLib"
75-
version: 7.2.1
76-
date-released: 2025-09-19
75+
version: 7.4.0
76+
date-released: 2025-10-30
7777
url: "https://github.com/RDFLib/rdflib"
7878
doi: 10.5281/zenodo.6845245

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ Help with maintenance of all of the RDFLib family of packages is always welcome
4545
## Versions & Releases
4646

4747
* `main` branch in this repository is the current unstable release - version 8 alpha
48+
* `7.4.0` a few small fixes, add test matrix for active python versions, and move v7 documentation to MkDocs
49+
* `7.3.0` many fixes and usability improvements, particularly for the Dataset class. See changelog for details
4850
* `7.2.1` tiny clean up release, relaxes Python version requirement
4951
* `7.2.0` general fixes and usability improvements, see changelog for details
5052
* `7.1.4` tidy-up release, possibly last 7.x release

Taskfile.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ tasks:
272272

273273
pip-compile:
274274
cmds:
275-
- cmd: "{{.PIP_COMPILE}} --quiet --annotate --emit-options --no-strip-extras --resolver=backtracking {{.CLI_ARGS}}"
275+
- cmd: "{{.PIP_COMPILE}} --quiet --annotate --emit-options --resolver=backtracking --no-strip-extras {{.CLI_ARGS}}"
276276

277277
docker:prepare:
278278
cmds:

admin/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,11 @@
33
Tools to assist with RDFlib releases, like extracting all merged PRs from GitHub since last release and printing them into MArkdown lists.
44

55
To make a release of RDFLib, see the [Developer's Guide](https://rdflib.readthedocs.io/en/latest/developers.html).
6+
7+
## PR Changelog Summary
8+
9+
An alternative to the `get_merged_prs.py` script is to use the GitHub CL to get the list of PRs and pipe it into the `pr_markdown.py` script. The following command retrieves the list of PRs merged since the last release (`2025-09-19`) from a particular branch (`7.x`).
10+
11+
```bash
12+
gh api '/search/issues?q=repo:rdflib/rdflib+is:pr+is:merged+base:7.x+merged:>2025-10-24&per_page=100' | jq '{total_count, incomplete_results, items: [.items[] | {number, title, pull_request_merged_at: .pull_request.merged_at, pull_request_url: .pull_request.html_url, username: .user.login}]}' | poetry run python admin/pr_markdown.py
13+
```

admin/pr_markdown.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import json
2+
import sys
3+
from dataclasses import dataclass
4+
5+
6+
@dataclass
7+
class PR:
8+
number: int
9+
title: str
10+
pull_request_merged_at: str
11+
pull_request_url: str
12+
username: str
13+
14+
def __repr__(self):
15+
return f"{self.title} by @{self.username} in [#{self.number}]({self.pull_request_url})"
16+
17+
18+
try:
19+
json_data = json.load(sys.stdin)
20+
prs = [PR(**pr) for pr in json_data["items"]]
21+
for pr in prs:
22+
print(f"- {pr}")
23+
except json.JSONDecodeError as e:
24+
print(f"Error parsing JSON: {e}")
25+
sys.exit(1)
26+
except Exception as e:
27+
print(f"Error: {e}")
28+
sys.exit(1)

docs/CONTRIBUTING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ Some ways in which you can contribute to RDFLib are:
8888

8989
## Technical contributions
9090

91-
If you would like to make technical contributions to RDFLIb, the _main_ way to do
92-
this is via creating Pull Requests to fix bugs or add features.
91+
Contributions that involve changes to the RDFLib repository have to be made with
92+
pull requests and should follow the [RDFLib developers guide](./developers.md).
9393

9494
Please read the [RDFLib developers guide](./developers.md) for this.
9595

docs/developers.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -430,13 +430,13 @@ RDFLib 5.0.0 maintained compatibility with Python versions 2.7, 3.4, 3.5, 3.6, 3
430430

431431
Create a release-preparation pull request with the following changes:
432432

433-
* Updated version and date in `CITATION.cff`.
434-
* Updated copyright year in the `LICENSE` file.
435-
* Updated copyright year in the `docs/conf.py` file.
436-
* Updated main branch version and current version in the `README.md` file.
437-
* Updated version in the `pyproject.toml` file.
438-
* Updated `__date__` in the `rdflib/__init__.py` file.
439-
* Accurate `CHANGELOG.md` entry for the release.
433+
* Updated version and date in [`CITATION.cff`](../CITATION.cff).
434+
* Updated copyright year in the [`LICENSE`](../LICENSE) file.
435+
* Updated copyright year in the [`mkdocs.yml`](../mkdocs.yml) file.
436+
* Updated main branch version and current version in the [`README.md`](../README.md) file.
437+
* Updated version in the [`pyproject.toml`](../pyproject.toml) file.
438+
* Updated `__date__` in the [`rdflib/__init__.py`](../rdflib/__init__.py) file.
439+
* Updated [`CHANGELOG.md`](../CHANGELOG.md) entry for the release with admin tools as described in [`admin/README.md`](../admin/README.md).
440440

441441
Once the PR is merged, switch to the main branch, build the release and upload it to PyPI:
442442

docs/index.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ If you are familiar with RDF and are looking for details on how RDFLib handles i
5656
* [Upgrade 6 to 7](upgrade6to7.md)
5757
* [Upgrade 5 to 6](upgrade5to6.md)
5858
* [Upgrade 4 to 5](upgrade4to5.md)
59+
* [Security Considerations](security_considerations.md)
5960

6061
## Versioning
6162

@@ -73,6 +74,8 @@ Given a version number `MAJOR.MINOR.PATCH`, increment the:
7374
* [Developers guide](developers.md)
7475
* [Documentation guide](docs.md)
7576
* [Code of Conduct](CODE_OF_CONDUCT.md)
77+
* [Persisting N3 Terms](persisting_n3_terms.md)
78+
* [Type Hints](type_hints.md)
7679
* [Decisions](decisions.md)
7780

7881
## Source Code

0 commit comments

Comments
 (0)