From a78ea6c654f137296f0c8cb1acc568c8ee8acae8 Mon Sep 17 00:00:00 2001 From: James McKinney <26463+jpmckinney@users.noreply.github.com> Date: Wed, 21 Oct 2026 21:21:40 -0400 Subject: [PATCH 1/4] build: Run ./manage.py update Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01URnebT7zPp92dzdcDT7PoD --- docs/reference/codelists.md | 16 + schema/patched/codelists/coveredBy.csv | 1 + .../codelists/foreignSubsidyMeasures.csv | 8 + .../codelists/itemClassificationScheme.csv | 7 +- .../codelists/relatedProcessScheme.csv | 3 +- schema/patched/codelists/sources.csv | 4 + schema/patched/codelists/statistic.csv | 1 + schema/patched/release-schema.json | 199 ++++++-- .../codelists/+itemClassificationScheme.csv | 7 +- .../codelists/+relatedProcessScheme.csv | 3 +- schema/profile/codelists/coveredBy.csv | 1 + .../codelists/foreignSubsidyMeasures.csv | 8 + schema/profile/codelists/sources.csv | 4 + schema/profile/codelists/statistic.csv | 1 + schema/profile/extension.json | 2 + schema/profile/release-schema.json | 433 +++++++++++------- 16 files changed, 487 insertions(+), 211 deletions(-) create mode 100644 schema/patched/codelists/foreignSubsidyMeasures.csv create mode 100644 schema/patched/codelists/sources.csv create mode 100644 schema/profile/codelists/foreignSubsidyMeasures.csv create mode 100644 schema/profile/codelists/sources.csv diff --git a/docs/reference/codelists.md b/docs/reference/codelists.md index f06e59b..9f2a225 100644 --- a/docs/reference/codelists.md +++ b/docs/reference/codelists.md @@ -176,6 +176,14 @@ The codelists can be downloaded as CSV files from Date: Wed, 21 Oct 2026 21:23:27 -0400 Subject: [PATCH 2/4] build: Add itemAttributes Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01URnebT7zPp92dzdcDT7PoD --- docs/extension_versions.json | 1 + docs/reference/index.md | 1 + schema/patched/release-schema.json | 48 ++++++++++++++++++++++++++++++ schema/profile/release-schema.json | 48 ++++++++++++++++++++++++++++++ 4 files changed, 98 insertions(+) diff --git a/docs/extension_versions.json b/docs/extension_versions.json index 5174196..db3b447 100644 --- a/docs/extension_versions.json +++ b/docs/extension_versions.json @@ -18,6 +18,7 @@ "eu": "1.1", "exclusionGrounds": "master", "finance": "master", + "itemAttributes": "master", "legalBasis": "1.1", "location": "master", "lots": "master", diff --git a/docs/reference/index.md b/docs/reference/index.md index 747f3ee..3d605ed 100644 --- a/docs/reference/index.md +++ b/docs/reference/index.md @@ -41,6 +41,7 @@ This profile makes use of the extensions below. Instead of declaring each extens * [European Union](https://extensions.open-contracting.org/en/extensions/eu/1.1/) * [Exclusion grounds](https://extensions.open-contracting.org/en/extensions/exclusionGrounds/master/) * [Finance](https://extensions.open-contracting.org/en/extensions/finance/master/) +* [Item attributes](https://extensions.open-contracting.org/en/extensions/itemAttributes/master/) * [Legal basis](https://extensions.open-contracting.org/en/extensions/legalBasis/1.1/) * [Location](https://extensions.open-contracting.org/en/extensions/location/master/) * [Lots](https://extensions.open-contracting.org/en/extensions/lots/master/) diff --git a/schema/patched/release-schema.json b/schema/patched/release-schema.json index e0e8ea3..c7a3709 100644 --- a/schema/patched/release-schema.json +++ b/schema/patched/release-schema.json @@ -2232,6 +2232,16 @@ } } }, + "attributes": { + "title": "Attributes", + "description": "The attributes of the item.", + "type": "array", + "items": { + "$ref": "#/definitions/Attribute" + }, + "uniqueItems": true, + "minItems": 1 + }, "deliveryLocations": { "title": "Delivery Locations", "description": "The locations where activity related to this tender, contract or license will be delivered.", @@ -6059,6 +6069,44 @@ }, "minProperties": 1 }, + "Attribute": { + "type": "object", + "title": "Attribute", + "description": "An attribute, including its name and value.", + "required": [ + "id" + ], + "properties": { + "name": { + "title": "Name", + "description": "The name of the attribute, such as 'brand', 'manufacturer', and similar.", + "type": [ + "string", + "null" + ], + "minLength": 1 + }, + "value": { + "title": "Value", + "description": "The value of the attribute.", + "type": [ + "string", + "number", + "null" + ], + "minLength": 1 + }, + "id": { + "title": "Id", + "description": "A local identifier for the attribute.", + "type": [ + "string" + ], + "minLength": 1 + } + }, + "minProperties": 1 + }, "Location": { "title": "Location", "description": "A physical or virtual location.", diff --git a/schema/profile/release-schema.json b/schema/profile/release-schema.json index 5e76f83..9b8206a 100644 --- a/schema/profile/release-schema.json +++ b/schema/profile/release-schema.json @@ -3853,8 +3853,56 @@ }, "minProperties": 1 }, + "Attribute": { + "type": "object", + "title": "Attribute", + "description": "An attribute, including its name and value.", + "required": [ + "id" + ], + "properties": { + "name": { + "title": "Name", + "description": "The name of the attribute, such as 'brand', 'manufacturer', and similar.", + "type": [ + "string", + "null" + ], + "minLength": 1 + }, + "value": { + "title": "Value", + "description": "The value of the attribute.", + "type": [ + "string", + "number", + "null" + ], + "minLength": 1 + }, + "id": { + "title": "Id", + "description": "A local identifier for the attribute.", + "type": [ + "string" + ], + "minLength": 1 + } + }, + "minProperties": 1 + }, "Item": { "properties": { + "attributes": { + "title": "Attributes", + "description": "The attributes of the item.", + "type": "array", + "items": { + "$ref": "#/definitions/Attribute" + }, + "uniqueItems": true, + "minItems": 1 + }, "deliveryLocations": { "title": "Delivery Locations", "description": "The locations where activity related to this tender, contract or license will be delivered.", From b65a866754e01d898862494cda57bb67d47bc1ce Mon Sep 17 00:00:00 2001 From: James McKinney <26463+jpmckinney@users.noreply.github.com> Date: Wed, 21 Oct 2026 21:39:07 -0400 Subject: [PATCH 3/4] build: Run ./manage.py update, for EU-EED and the EED classification schemes Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01URnebT7zPp92dzdcDT7PoD --- schema/patched/codelists/coveredBy.csv | 1 + schema/patched/codelists/itemClassificationScheme.csv | 3 +++ schema/profile/codelists/+itemClassificationScheme.csv | 3 +++ schema/profile/codelists/coveredBy.csv | 1 + 4 files changed, 8 insertions(+) diff --git a/schema/patched/codelists/coveredBy.csv b/schema/patched/codelists/coveredBy.csv index 576905b..0afe002 100644 --- a/schema/patched/codelists/coveredBy.csv +++ b/schema/patched/codelists/coveredBy.csv @@ -1,5 +1,6 @@ Code,Title,Extension CPTPP,Comprehensive and Progressive Agreement for Trans-Pacific Partnership,Covered By EU-CVD,European Parliament and Council 2009/33/EC (Clean Vehicles Directive),Covered By +EU-EED,European Parliament and Council 2023/1791 (Energy Efficiency Directive),Covered By EU-FSR,European Parliament and Council 2022/2560 (Foreign Subsidies Regulation),Covered By GPA,Agreement on Government Procurement,Covered By diff --git a/schema/patched/codelists/itemClassificationScheme.csv b/schema/patched/codelists/itemClassificationScheme.csv index 17acd82..1d5d965 100644 --- a/schema/patched/codelists/itemClassificationScheme.csv +++ b/schema/patched/codelists/itemClassificationScheme.csv @@ -15,6 +15,9 @@ eu-modification-justification,EU modification justification,The main reasons for eu-vehicles,European Union vehicle type,The type of vehicle specified in eForms.,European Union eu-vehicle-category,European Union Clean Vehicle Directive vehicle category,The category of vehicle falling within the scope of the EU Clean Vehicles Directive 2009/33/EC.,European Union eu-cvd-contract-type,European Union Clean Vehicle Directive contract type,The category of contract according to the EU Clean Vehicles Directive 2009/33/EC.,European Union +eu-energy-efficiency-basis,European Union Energy Efficiency Directive basis,"The legal framework that applies to a product, service, work or building within the scope of the EU Energy Efficiency Directive (EU) 2023/1791, like the Energy Label or Ecodesign rules.",European Union +eu-energy-efficiency-item,European Union Energy Efficiency Directive item,"The kind of product, service, work or building within the scope of the EU Energy Efficiency Directive (EU) 2023/1791.",European Union +eu-energy-efficiency-label,European Union energy efficiency label,"The energy efficiency class of a product, according to its EU energy label.",European Union CELEX,CELEX number,Identifier scheme for EUR-Lex documents,Legal basis ELI,European Legislation Identifier,Identifier scheme for European legislation,Legal basis LEXML,LexML URN,Identifier scheme for BR-Lex documents,Legal basis diff --git a/schema/profile/codelists/+itemClassificationScheme.csv b/schema/profile/codelists/+itemClassificationScheme.csv index c83bb06..226d14f 100644 --- a/schema/profile/codelists/+itemClassificationScheme.csv +++ b/schema/profile/codelists/+itemClassificationScheme.csv @@ -4,6 +4,9 @@ eu-modification-justification,EU modification justification,The main reasons for eu-vehicles,European Union vehicle type,The type of vehicle specified in eForms.,https://docs.ted.europa.eu/eforms/latest/reference/code-lists/vehicles.html, eu-vehicle-category,European Union Clean Vehicle Directive vehicle category,The category of vehicle falling within the scope of the EU Clean Vehicles Directive 2009/33/EC.,https://op.europa.eu/en/web/eu-vocabularies/concept-scheme/-/resource?uri=http://publications.europa.eu/resource/authority/vehicle-category, eu-cvd-contract-type,European Union Clean Vehicle Directive contract type,The category of contract according to the EU Clean Vehicles Directive 2009/33/EC.,https://op.europa.eu/en/web/eu-vocabularies/concept-scheme/-/resource?uri=http://publications.europa.eu/resource/authority/cvd-contract-type, +eu-energy-efficiency-basis,European Union Energy Efficiency Directive basis,"The legal framework that applies to a product, service, work or building within the scope of the EU Energy Efficiency Directive (EU) 2023/1791, like the Energy Label or Ecodesign rules.",https://op.europa.eu/en/web/eu-vocabularies/concept-scheme/-/resource?uri=http://publications.europa.eu/resource/authority/energy-efficiency-basis, +eu-energy-efficiency-item,European Union Energy Efficiency Directive item,"The kind of product, service, work or building within the scope of the EU Energy Efficiency Directive (EU) 2023/1791.",https://op.europa.eu/en/web/eu-vocabularies/concept-scheme/-/resource?uri=http://publications.europa.eu/resource/authority/energy-efficiency-item, +eu-energy-efficiency-label,European Union energy efficiency label,"The energy efficiency class of a product, according to its EU energy label.",https://op.europa.eu/en/web/eu-vocabularies/concept-scheme/-/resource?uri=http://publications.europa.eu/resource/authority/energy-efficiency-label, CELEX,CELEX number,Identifier scheme for EUR-Lex documents,https://eur-lex.europa.eu/content/help/faq/intro.html#help8,legalBasis ELI,European Legislation Identifier,Identifier scheme for European legislation,https://eur-lex.europa.eu/eli-register/about.html,legalBasis LEXML,LexML URN,Identifier scheme for BR-Lex documents,https://projeto.lexml.gov.br/,legalBasis diff --git a/schema/profile/codelists/coveredBy.csv b/schema/profile/codelists/coveredBy.csv index d90140e..70dca6e 100644 --- a/schema/profile/codelists/coveredBy.csv +++ b/schema/profile/codelists/coveredBy.csv @@ -1,5 +1,6 @@ Code,Title CPTPP,Comprehensive and Progressive Agreement for Trans-Pacific Partnership EU-CVD,European Parliament and Council 2009/33/EC (Clean Vehicles Directive) +EU-EED,European Parliament and Council 2023/1791 (Energy Efficiency Directive) EU-FSR,European Parliament and Council 2022/2560 (Foreign Subsidies Regulation) GPA,Agreement on Government Procurement From f3f8acf3194780af0778865593556afd604683eb Mon Sep 17 00:00:00 2001 From: James McKinney <26463+jpmckinney@users.noreply.github.com> Date: Wed, 21 Oct 2026 21:41:46 -0400 Subject: [PATCH 4/4] test: Match the theme's reworded search results count (open-contracting/standard_theme@70b19d6) Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01URnebT7zPp92dzdcDT7PoD --- tests/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/__init__.py b/tests/__init__.py index 8506547..2b1f1d3 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -7,5 +7,5 @@ } test_search_params = [ - ("en", r"found \d+ page\(s\) matching"), + ("en", r"Found (?:one page|\d+ pages) matching"), ]