internetdata 1.1.0__tar.gz → 1.2.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.
Files changed (58) hide show
  1. {internetdata-1.1.0 → internetdata-1.2.0}/PKG-INFO +2 -2
  2. {internetdata-1.1.0 → internetdata-1.2.0}/README.md +1 -1
  3. {internetdata-1.1.0 → internetdata-1.2.0}/spec/openapi.yaml +19 -2
  4. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/__init__.py +3 -3
  5. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database.py +66 -1
  6. {internetdata-1.1.0 → internetdata-1.2.0}/.gitignore +0 -0
  7. {internetdata-1.1.0 → internetdata-1.2.0}/LICENSE +0 -0
  8. {internetdata-1.1.0 → internetdata-1.2.0}/pyproject.toml +0 -0
  9. {internetdata-1.1.0 → internetdata-1.2.0}/scripts/download-spec.sh +0 -0
  10. {internetdata-1.1.0 → internetdata-1.2.0}/scripts/generate.sh +0 -0
  11. {internetdata-1.1.0 → internetdata-1.2.0}/scripts/publish.sh +0 -0
  12. {internetdata-1.1.0 → internetdata-1.2.0}/scripts/v2_subset.py +0 -0
  13. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_core.py +0 -0
  14. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/__init__.py +0 -0
  15. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/api/__init__.py +0 -0
  16. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/api/database_v_2/__init__.py +0 -0
  17. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/api/database_v_2/database_checksum_v2.py +0 -0
  18. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/api/database_v_2/database_metadata_v2.py +0 -0
  19. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/api/database_v_2/download_database_v2.py +0 -0
  20. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/api/database_v_2/list_databases.py +0 -0
  21. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/api/database_v_2/list_downloads.py +0 -0
  22. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/client.py +0 -0
  23. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/errors.py +0 -0
  24. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/__init__.py +0 -0
  25. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_checksum_v2_format.py +0 -0
  26. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_checksum_v2_response_200.py +0 -0
  27. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_checksum_v2_response_200_format.py +0 -0
  28. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_license_type_type_1.py +0 -0
  29. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_license_type_type_2_type_1.py +0 -0
  30. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_license_type_type_3_type_1.py +0 -0
  31. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_metadata.py +0 -0
  32. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_metadata_column.py +0 -0
  33. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_metadata_sample.py +0 -0
  34. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_metadata_sample_additional_property_item.py +0 -0
  35. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_metadata_schema.py +0 -0
  36. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_metadata_size.py +0 -0
  37. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_standing.py +0 -0
  38. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_version.py +0 -0
  39. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_version_formats_item.py +0 -0
  40. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/db_checksums.py +0 -0
  41. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/download.py +0 -0
  42. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/download_database_v2_format.py +0 -0
  43. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/download_outcome.py +0 -0
  44. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/error.py +0 -0
  45. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/list_databases_response_200.py +0 -0
  46. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/list_downloads_response_200.py +0 -0
  47. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/types.py +0 -0
  48. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/aio.py +0 -0
  49. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/client.py +0 -0
  50. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/errors.py +0 -0
  51. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/models.py +1 -1
  52. {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/py.typed +0 -0
  53. {internetdata-1.1.0 → internetdata-1.2.0}/testdata/testdata.json +0 -0
  54. {internetdata-1.1.0 → internetdata-1.2.0}/tests/conftest.py +0 -0
  55. {internetdata-1.1.0 → internetdata-1.2.0}/tests/helpers.py +0 -0
  56. {internetdata-1.1.0 → internetdata-1.2.0}/tests/test_client.py +0 -0
  57. {internetdata-1.1.0 → internetdata-1.2.0}/tests/test_conformance.py +0 -0
  58. {internetdata-1.1.0 → internetdata-1.2.0}/tests/test_download.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: internetdata
3
- Version: 1.1.0
3
+ Version: 1.2.0
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
@@ -82,7 +82,7 @@ for family in client.database.list():
82
82
  print(version.id, version.formats) # 'bogon_ip_v1' ('csvgz', 'mmdb')
83
83
  ```
84
84
 
85
- `standing` is `licensed`, `expired` or `unlicensed`, and `license_type` is what your licence lets you do with the data (`evaluation`, `internal`, `redistribute`, or `None` when there is no licence). A family you have never bought is still listed, as `unlicensed`, so you can see what else exists.
85
+ `standing` is `licensed`, `expired` or `unlicensed`, and `license_type` is what your licence lets you do with the data (`evaluation`, `standard`, `redistribute`, or `None` when there is no licence). A family you have never bought is still listed, as `unlicensed`, so you can see what else exists.
86
86
 
87
87
  ### What is inside a build
88
88
 
@@ -48,7 +48,7 @@ for family in client.database.list():
48
48
  print(version.id, version.formats) # 'bogon_ip_v1' ('csvgz', 'mmdb')
49
49
  ```
50
50
 
51
- `standing` is `licensed`, `expired` or `unlicensed`, and `license_type` is what your licence lets you do with the data (`evaluation`, `internal`, `redistribute`, or `None` when there is no licence). A family you have never bought is still listed, as `unlicensed`, so you can see what else exists.
51
+ `standing` is `licensed`, `expired` or `unlicensed`, and `license_type` is what your licence lets you do with the data (`evaluation`, `standard`, `redistribute`, or `None` when there is no licence). A family you have never bought is still listed, as `unlicensed`, so you can see what else exists.
52
52
 
53
53
  ### What is inside a build
54
54
 
@@ -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:
@@ -432,7 +432,24 @@ components:
432
432
  type: string
433
433
  format: date-time
434
434
  nullable: true
435
- description: Null when the licence has no end date, or when there is none.
435
+ description: >-
436
+ A hard stop. Null when the licence has no end date, which is the normal case for a
437
+ rolling agreement, and when there is no licence. A rolling licence reports its turnover
438
+ date in renews_at instead.
439
+ renews_at:
440
+ type: string
441
+ format: date-time
442
+ nullable: true
443
+ description: >-
444
+ When a rolling licence next renews. Null when the licence has no defined term, when
445
+ expires sets a hard stop instead, and when there is no licence.
446
+ notice_due_at:
447
+ type: string
448
+ format: date-time
449
+ nullable: true
450
+ description: >-
451
+ The last day notice of non-renewal can be given for the term ending at renews_at. Null
452
+ whenever renews_at is, and when the agreement records no notice period.
436
453
  versions:
437
454
  type: array
438
455
  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.0"
29
+ __version__ = "1.2.0"
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
  ]
@@ -11,6 +11,7 @@ from ..models.database_license_type_type_1 import DatabaseLicenseTypeType1
11
11
  from ..models.database_license_type_type_2_type_1 import DatabaseLicenseTypeType2Type1
12
12
  from ..models.database_license_type_type_3_type_1 import DatabaseLicenseTypeType3Type1
13
13
  from ..models.database_standing import DatabaseStanding
14
+ from ..types import UNSET, Unset
14
15
 
15
16
  if TYPE_CHECKING:
16
17
  from ..models.database_version import DatabaseVersion
@@ -35,9 +36,15 @@ class Database:
35
36
  What your licence permits you to do with the data. Null when there
36
37
  is no licence.
37
38
  starts (datetime.datetime | None):
38
- expires (datetime.datetime | None): Null when the licence has no end date, or when there is none.
39
+ expires (datetime.datetime | None): A hard stop. Null when the licence has no end date, which is the normal case
40
+ for a rolling agreement, and when there is no licence. A rolling licence reports its turnover date in renews_at
41
+ instead.
39
42
  versions (list[DatabaseVersion]): Every published version of this family, oldest first. Old versions
40
43
  are frozen rather than migrated, so both stay downloadable.
44
+ renews_at (datetime.datetime | None | Unset): When a rolling licence next renews. Null when the licence has no
45
+ defined term, when expires sets a hard stop instead, and when there is no licence.
46
+ notice_due_at (datetime.datetime | None | Unset): The last day notice of non-renewal can be given for the term
47
+ ending at renews_at. Null whenever renews_at is, and when the agreement records no notice period.
41
48
  """
42
49
 
43
50
  base: str
@@ -53,6 +60,8 @@ class Database:
53
60
  starts: datetime.datetime | None
54
61
  expires: datetime.datetime | None
55
62
  versions: list[DatabaseVersion]
63
+ renews_at: datetime.datetime | None | Unset = UNSET
64
+ notice_due_at: datetime.datetime | None | Unset = UNSET
56
65
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
57
66
 
58
67
  def to_dict(self) -> dict[str, Any]:
@@ -91,6 +100,22 @@ class Database:
91
100
  versions_item = versions_item_data.to_dict()
92
101
  versions.append(versions_item)
93
102
 
103
+ renews_at: None | str | Unset
104
+ if isinstance(self.renews_at, Unset):
105
+ renews_at = UNSET
106
+ elif isinstance(self.renews_at, datetime.datetime):
107
+ renews_at = self.renews_at.isoformat()
108
+ else:
109
+ renews_at = self.renews_at
110
+
111
+ notice_due_at: None | str | Unset
112
+ if isinstance(self.notice_due_at, Unset):
113
+ notice_due_at = UNSET
114
+ elif isinstance(self.notice_due_at, datetime.datetime):
115
+ notice_due_at = self.notice_due_at.isoformat()
116
+ else:
117
+ notice_due_at = self.notice_due_at
118
+
94
119
  field_dict: dict[str, Any] = {}
95
120
  field_dict.update(self.additional_properties)
96
121
  field_dict.update(
@@ -105,6 +130,10 @@ class Database:
105
130
  "versions": versions,
106
131
  }
107
132
  )
133
+ if renews_at is not UNSET:
134
+ field_dict["renews_at"] = renews_at
135
+ if notice_due_at is not UNSET:
136
+ field_dict["notice_due_at"] = notice_due_at
108
137
 
109
138
  return field_dict
110
139
 
@@ -202,6 +231,40 @@ class Database:
202
231
 
203
232
  versions.append(versions_item)
204
233
 
234
+ def _parse_renews_at(data: object) -> datetime.datetime | None | Unset:
235
+ if data is None:
236
+ return data
237
+ if isinstance(data, Unset):
238
+ return data
239
+ try:
240
+ if not isinstance(data, str):
241
+ raise TypeError()
242
+ renews_at_type_0 = datetime.datetime.fromisoformat(data)
243
+
244
+ return renews_at_type_0
245
+ except (TypeError, ValueError, AttributeError, KeyError):
246
+ pass
247
+ return cast(datetime.datetime | None | Unset, data)
248
+
249
+ renews_at = _parse_renews_at(d.pop("renews_at", UNSET))
250
+
251
+ def _parse_notice_due_at(data: object) -> datetime.datetime | None | Unset:
252
+ if data is None:
253
+ return data
254
+ if isinstance(data, Unset):
255
+ return data
256
+ try:
257
+ if not isinstance(data, str):
258
+ raise TypeError()
259
+ notice_due_at_type_0 = datetime.datetime.fromisoformat(data)
260
+
261
+ return notice_due_at_type_0
262
+ except (TypeError, ValueError, AttributeError, KeyError):
263
+ pass
264
+ return cast(datetime.datetime | None | Unset, data)
265
+
266
+ notice_due_at = _parse_notice_due_at(d.pop("notice_due_at", UNSET))
267
+
205
268
  database = cls(
206
269
  base=base,
207
270
  name=name,
@@ -211,6 +274,8 @@ class Database:
211
274
  starts=starts,
212
275
  expires=expires,
213
276
  versions=versions,
277
+ renews_at=renews_at,
278
+ notice_due_at=notice_due_at,
214
279
  )
215
280
 
216
281
  database.additional_properties = d
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