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.
- {internetdata-1.1.0 → internetdata-1.2.0}/PKG-INFO +2 -2
- {internetdata-1.1.0 → internetdata-1.2.0}/README.md +1 -1
- {internetdata-1.1.0 → internetdata-1.2.0}/spec/openapi.yaml +19 -2
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/__init__.py +3 -3
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database.py +66 -1
- {internetdata-1.1.0 → internetdata-1.2.0}/.gitignore +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/LICENSE +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/pyproject.toml +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/scripts/download-spec.sh +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/scripts/generate.sh +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/scripts/publish.sh +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/scripts/v2_subset.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_core.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/__init__.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/api/__init__.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/api/database_v_2/__init__.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/api/database_v_2/database_checksum_v2.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/api/database_v_2/database_metadata_v2.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/api/database_v_2/download_database_v2.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/api/database_v_2/list_databases.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/api/database_v_2/list_downloads.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/client.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/errors.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/__init__.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_checksum_v2_format.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_checksum_v2_response_200.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_checksum_v2_response_200_format.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_license_type_type_1.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_license_type_type_2_type_1.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_license_type_type_3_type_1.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_metadata.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_metadata_column.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_metadata_sample.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_metadata_sample_additional_property_item.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_metadata_schema.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_metadata_size.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_standing.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_version.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_version_formats_item.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/db_checksums.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/download.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/download_database_v2_format.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/download_outcome.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/error.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/list_databases_response_200.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/list_downloads_response_200.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/types.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/aio.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/client.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/errors.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/models.py +1 -1
- {internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/py.typed +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/testdata/testdata.json +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/tests/conftest.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/tests/helpers.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/tests/test_client.py +0 -0
- {internetdata-1.1.0 → internetdata-1.2.0}/tests/test_conformance.py +0 -0
- {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.
|
|
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`, `
|
|
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`, `
|
|
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.
|
|
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:
|
|
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.
|
|
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,
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/api/database_v_2/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_metadata.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_standing.py
RENAMED
|
File without changes
|
{internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/database_version.py
RENAMED
|
File without changes
|
|
File without changes
|
{internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/db_checksums.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{internetdata-1.1.0 → internetdata-1.2.0}/src/internetdata/_generated/models/download_outcome.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|