internetdata 1.1.1__tar.gz → 1.2.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.
Files changed (58) hide show
  1. {internetdata-1.1.1 → internetdata-1.2.2}/PKG-INFO +1 -1
  2. {internetdata-1.1.1 → internetdata-1.2.2}/spec/openapi.yaml +21 -2
  3. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/__init__.py +3 -3
  4. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/database.py +55 -1
  5. {internetdata-1.1.1 → internetdata-1.2.2}/tests/helpers.py +2 -0
  6. {internetdata-1.1.1 → internetdata-1.2.2}/.gitignore +0 -0
  7. {internetdata-1.1.1 → internetdata-1.2.2}/LICENSE +0 -0
  8. {internetdata-1.1.1 → internetdata-1.2.2}/README.md +0 -0
  9. {internetdata-1.1.1 → internetdata-1.2.2}/pyproject.toml +0 -0
  10. {internetdata-1.1.1 → internetdata-1.2.2}/scripts/download-spec.sh +0 -0
  11. {internetdata-1.1.1 → internetdata-1.2.2}/scripts/generate.sh +0 -0
  12. {internetdata-1.1.1 → internetdata-1.2.2}/scripts/publish.sh +0 -0
  13. {internetdata-1.1.1 → internetdata-1.2.2}/scripts/v2_subset.py +0 -0
  14. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_core.py +0 -0
  15. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/__init__.py +0 -0
  16. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/api/__init__.py +0 -0
  17. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/api/database_v_2/__init__.py +0 -0
  18. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/api/database_v_2/database_checksum_v2.py +0 -0
  19. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/api/database_v_2/database_metadata_v2.py +0 -0
  20. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/api/database_v_2/download_database_v2.py +0 -0
  21. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/api/database_v_2/list_databases.py +0 -0
  22. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/api/database_v_2/list_downloads.py +0 -0
  23. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/client.py +0 -0
  24. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/errors.py +0 -0
  25. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/__init__.py +0 -0
  26. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/database_checksum_v2_format.py +0 -0
  27. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/database_checksum_v2_response_200.py +0 -0
  28. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/database_checksum_v2_response_200_format.py +0 -0
  29. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/database_license_type_type_1.py +0 -0
  30. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/database_license_type_type_2_type_1.py +0 -0
  31. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/database_license_type_type_3_type_1.py +0 -0
  32. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/database_metadata.py +0 -0
  33. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/database_metadata_column.py +0 -0
  34. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/database_metadata_sample.py +0 -0
  35. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/database_metadata_sample_additional_property_item.py +0 -0
  36. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/database_metadata_schema.py +0 -0
  37. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/database_metadata_size.py +0 -0
  38. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/database_standing.py +0 -0
  39. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/database_version.py +0 -0
  40. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/database_version_formats_item.py +0 -0
  41. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/db_checksums.py +0 -0
  42. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/download.py +0 -0
  43. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/download_database_v2_format.py +0 -0
  44. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/download_outcome.py +0 -0
  45. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/error.py +0 -0
  46. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/list_databases_response_200.py +0 -0
  47. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/models/list_downloads_response_200.py +0 -0
  48. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/_generated/types.py +0 -0
  49. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/aio.py +0 -0
  50. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/client.py +0 -0
  51. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/errors.py +0 -0
  52. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/models.py +1 -1
  53. {internetdata-1.1.1 → internetdata-1.2.2}/src/internetdata/py.typed +0 -0
  54. {internetdata-1.1.1 → internetdata-1.2.2}/testdata/testdata.json +0 -0
  55. {internetdata-1.1.1 → internetdata-1.2.2}/tests/conftest.py +0 -0
  56. {internetdata-1.1.1 → internetdata-1.2.2}/tests/test_client.py +0 -0
  57. {internetdata-1.1.1 → internetdata-1.2.2}/tests/test_conformance.py +0 -0
  58. {internetdata-1.1.1 → internetdata-1.2.2}/tests/test_download.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: internetdata
3
- Version: 1.1.1
3
+ Version: 1.2.2
4
4
  Summary: Official Python client library for the InternetData API. Download and verify licensed IP datasets.
5
5
  Project-URL: Homepage, https://internetdata.io
6
6
  Project-URL: Documentation, https://docs.internetdata.io
@@ -8,7 +8,7 @@ info:
8
8
  email: dev@internetdata.io
9
9
  url: https://internetdata.io
10
10
  termsOfService: https://internetdata.io/terms-of-service/
11
- version: 2026.09.05
11
+ version: 2026.09.09
12
12
  servers:
13
13
  - url: https://internetdata.io
14
14
  security:
@@ -392,6 +392,8 @@ components:
392
392
  - license_type
393
393
  - starts
394
394
  - expires
395
+ - renews_at
396
+ - notice_due_at
395
397
  - versions
396
398
  properties:
397
399
  base:
@@ -432,7 +434,24 @@ components:
432
434
  type: string
433
435
  format: date-time
434
436
  nullable: true
435
- description: Null when the licence has no end date, or when there is none.
437
+ description: >-
438
+ A hard stop. Null when the licence has no end date, which is the normal case for a
439
+ rolling agreement, and when there is no licence. A rolling licence reports its turnover
440
+ date in renews_at instead.
441
+ renews_at:
442
+ type: string
443
+ format: date-time
444
+ nullable: true
445
+ description: >-
446
+ When a rolling licence next renews. Null when the licence has no defined term, when
447
+ expires sets a hard stop instead, and when there is no licence.
448
+ notice_due_at:
449
+ type: string
450
+ format: date-time
451
+ nullable: true
452
+ description: >-
453
+ The last day notice of non-renewal can be given for the term ending at renews_at. Null
454
+ whenever renews_at is, and when the agreement records no notice period.
436
455
  versions:
437
456
  type: array
438
457
  description: |
@@ -20,13 +20,13 @@ from .models import (
20
20
  DatabaseVersion,
21
21
  Download,
22
22
  Format,
23
+ LicenseType,
23
24
  MetadataColumn,
24
25
  Outcome,
25
- LicenseType,
26
26
  Standing,
27
27
  )
28
28
 
29
- __version__ = "1.1.1"
29
+ __version__ = "1.2.2"
30
30
 
31
31
  __all__ = [
32
32
  "DEFAULT_BASE_URL",
@@ -41,9 +41,9 @@ __all__ = [
41
41
  "Format",
42
42
  "InternetData",
43
43
  "InternetDataError",
44
+ "LicenseType",
44
45
  "MetadataColumn",
45
46
  "Outcome",
46
- "LicenseType",
47
47
  "Standing",
48
48
  "__version__",
49
49
  ]
@@ -35,7 +35,13 @@ class Database:
35
35
  What your licence permits you to do with the data. Null when there
36
36
  is no licence.
37
37
  starts (datetime.datetime | None):
38
- expires (datetime.datetime | None): Null when the licence has no end date, or when there is none.
38
+ expires (datetime.datetime | None): A hard stop. Null when the licence has no end date, which is the normal case
39
+ for a rolling agreement, and when there is no licence. A rolling licence reports its turnover date in renews_at
40
+ instead.
41
+ renews_at (datetime.datetime | None): When a rolling licence next renews. Null when the licence has no defined
42
+ term, when expires sets a hard stop instead, and when there is no licence.
43
+ notice_due_at (datetime.datetime | None): The last day notice of non-renewal can be given for the term ending at
44
+ renews_at. Null whenever renews_at is, and when the agreement records no notice period.
39
45
  versions (list[DatabaseVersion]): Every published version of this family, oldest first. Old versions
40
46
  are frozen rather than migrated, so both stay downloadable.
41
47
  """
@@ -52,6 +58,8 @@ class Database:
52
58
  )
53
59
  starts: datetime.datetime | None
54
60
  expires: datetime.datetime | None
61
+ renews_at: datetime.datetime | None
62
+ notice_due_at: datetime.datetime | None
55
63
  versions: list[DatabaseVersion]
56
64
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
57
65
 
@@ -86,6 +94,18 @@ class Database:
86
94
  else:
87
95
  expires = self.expires
88
96
 
97
+ renews_at: None | str
98
+ if isinstance(self.renews_at, datetime.datetime):
99
+ renews_at = self.renews_at.isoformat()
100
+ else:
101
+ renews_at = self.renews_at
102
+
103
+ notice_due_at: None | str
104
+ if isinstance(self.notice_due_at, datetime.datetime):
105
+ notice_due_at = self.notice_due_at.isoformat()
106
+ else:
107
+ notice_due_at = self.notice_due_at
108
+
89
109
  versions = []
90
110
  for versions_item_data in self.versions:
91
111
  versions_item = versions_item_data.to_dict()
@@ -102,6 +122,8 @@ class Database:
102
122
  "license_type": license_type,
103
123
  "starts": starts,
104
124
  "expires": expires,
125
+ "renews_at": renews_at,
126
+ "notice_due_at": notice_due_at,
105
127
  "versions": versions,
106
128
  }
107
129
  )
@@ -195,6 +217,36 @@ class Database:
195
217
 
196
218
  expires = _parse_expires(d.pop("expires"))
197
219
 
220
+ def _parse_renews_at(data: object) -> datetime.datetime | None:
221
+ if data is None:
222
+ return data
223
+ try:
224
+ if not isinstance(data, str):
225
+ raise TypeError()
226
+ renews_at_type_0 = datetime.datetime.fromisoformat(data)
227
+
228
+ return renews_at_type_0
229
+ except (TypeError, ValueError, AttributeError, KeyError):
230
+ pass
231
+ return cast(datetime.datetime | None, data)
232
+
233
+ renews_at = _parse_renews_at(d.pop("renews_at"))
234
+
235
+ def _parse_notice_due_at(data: object) -> datetime.datetime | None:
236
+ if data is None:
237
+ return data
238
+ try:
239
+ if not isinstance(data, str):
240
+ raise TypeError()
241
+ notice_due_at_type_0 = datetime.datetime.fromisoformat(data)
242
+
243
+ return notice_due_at_type_0
244
+ except (TypeError, ValueError, AttributeError, KeyError):
245
+ pass
246
+ return cast(datetime.datetime | None, data)
247
+
248
+ notice_due_at = _parse_notice_due_at(d.pop("notice_due_at"))
249
+
198
250
  versions = []
199
251
  _versions = d.pop("versions")
200
252
  for versions_item_data in _versions:
@@ -210,6 +262,8 @@ class Database:
210
262
  license_type=license_type,
211
263
  starts=starts,
212
264
  expires=expires,
265
+ renews_at=renews_at,
266
+ notice_due_at=notice_due_at,
213
267
  versions=versions,
214
268
  )
215
269
 
@@ -162,6 +162,8 @@ def database(base: str, **overrides: Any) -> dict[str, Any]:
162
162
  "license_type": "standard",
163
163
  "starts": "2026-01-01T00:00:00.000Z",
164
164
  "expires": None,
165
+ "renews_at": None,
166
+ "notice_due_at": None,
165
167
  "versions": [
166
168
  {
167
169
  "id": f"{base}_v1",
File without changes
File without changes
File without changes
@@ -19,9 +19,9 @@ __all__ = [
19
19
  "DatabaseVersion",
20
20
  "Download",
21
21
  "Format",
22
+ "LicenseType",
22
23
  "MetadataColumn",
23
24
  "Outcome",
24
- "LicenseType",
25
25
  "Standing",
26
26
  ]
27
27