cardog 2.2.0__tar.gz → 2.3.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.
- {cardog-2.2.0 → cardog-2.3.0}/CHANGELOG.md +34 -0
- {cardog-2.2.0 → cardog-2.3.0}/PKG-INFO +2 -2
- {cardog-2.2.0 → cardog-2.3.0}/README.md +1 -1
- {cardog-2.2.0 → cardog-2.3.0}/openapi/openapi.v2.json +847 -419
- {cardog-2.2.0 → cardog-2.3.0}/pyproject.toml +1 -1
- {cardog-2.2.0 → cardog-2.3.0}/scripts/generate.py +41 -1
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/__init__.py +3 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/_async_client.py +12 -1
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/_base_client.py +38 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/_client.py +12 -1
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/_constants.py +1 -1
- cardog-2.3.0/src/cardog/_versioning.py +63 -0
- cardog-2.3.0/src/cardog/v2/_api_version.py +15 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/v2/recalls.py +4 -4
- cardog-2.3.0/src/cardog/v2/specs.py +71 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/v2/types.py +68 -41
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/v2/vin.py +2 -2
- {cardog-2.2.0 → cardog-2.3.0}/tests/v2/test_v2_urls.py +4 -2
- cardog-2.3.0/tests/v2/test_v2_version.py +121 -0
- cardog-2.2.0/src/cardog/v2/specs.py +0 -71
- {cardog-2.2.0 → cardog-2.3.0}/.gitignore +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/Makefile +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/_credits.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/_exceptions.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/py.typed +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/resources/__init__.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/resources/charging.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/resources/complaints.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/resources/efficiency.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/resources/fuel.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/resources/history.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/resources/listings.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/resources/locations.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/resources/market.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/resources/recalls.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/resources/research.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/resources/safety.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/resources/vin.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/types/__init__.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/types/charging.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/types/common.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/types/complaints.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/types/efficiency.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/types/fuel.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/types/history.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/types/listings.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/types/locations.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/types/market.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/types/recalls.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/types/research.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/types/safety.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/types/vin.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/v2/__init__.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/v2/_support.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/v2/charging.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/v2/entities.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/v2/feedback.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/v2/feeds.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/v2/instruments.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/v2/listings.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/v2/platform.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/v2/quotes.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/v2/safety.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/src/cardog/v2/tape.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/__init__.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/conftest.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/test_client.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/test_contracts_async.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/test_contracts_charging.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/test_contracts_complaints.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/test_contracts_efficiency.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/test_contracts_fuel.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/test_contracts_listings.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/test_contracts_locations.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/test_contracts_market.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/test_contracts_recalls.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/test_contracts_research.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/test_contracts_safety.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/test_contracts_vin.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/v2/__init__.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/v2/spec_fixtures.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/v2/test_v2_async.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/v2/test_v2_credits.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/v2/test_v2_errors.py +0 -0
- {cardog-2.2.0 → cardog-2.3.0}/tests/v2/test_v2_live_smoke.py +0 -0
|
@@ -8,6 +8,40 @@ pre-release it tracks. 3.0.0, published to PyPI on 2026-09-28, broke that
|
|
|
8
8
|
rule and is yanked: `pip install cardog` no longer resolves to it, and a
|
|
9
9
|
pin on `==3.0.0` still installs. Everything it carried is in 2.1.0.
|
|
10
10
|
|
|
11
|
+
## [2.3.0] - 2026-10-15
|
|
12
|
+
|
|
13
|
+
Tracks API 2.0.0-rc.8. Breaking on `client.v2.specs` (CRDG-4535, CRDG-4563).
|
|
14
|
+
The SDK also pins an
|
|
15
|
+
API contract version (CRDG-4353); nothing on the wire changes for that until
|
|
16
|
+
the API's general availability.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- `SpecSheet` and `SpecSheetBuild` keep their root and gain `refs`
|
|
21
|
+
(`SpecRefs`, the same keys as the VIN identity card).
|
|
22
|
+
- A value in `sections` is a `SpecValue`: `value`, `unit` on every number
|
|
23
|
+
(metric; `HP` and `IN` kept), and `stated` (`SpecStated`) with the
|
|
24
|
+
source's own number when it published another unit.
|
|
25
|
+
- New `markets` (`SpecMarkets`: `us` / `ca`, each a `SpecMarket` with
|
|
26
|
+
`currency`, `pricing.msrp` as a list of `SpecPrice` (`trim`, `style`,
|
|
27
|
+
`msrp`, `source`) and `colors` as lists of `SpecColor` (`name`, `rgb`,
|
|
28
|
+
`hex`)). Markets are never merged.
|
|
29
|
+
- `trim_dependent`, `trims`, `unmapped` and the per-value `source`, `region`
|
|
30
|
+
and `disagreement` are gone.
|
|
31
|
+
- 2.2.x validates the old sheet on the way in and raises against rc.8;
|
|
32
|
+
2.3.0 raises against rc.7. Upgrade when rc.8 is live, not before.
|
|
33
|
+
|
|
34
|
+
### Added
|
|
35
|
+
|
|
36
|
+
- `cardog.PINNED_API_VERSION`: generated from the vendored OpenAPI
|
|
37
|
+
document and sent as `Cardog-Version` on every v2 request. `None` until
|
|
38
|
+
general availability, so no header is sent yet.
|
|
39
|
+
- `api_version=` on `Cardog` and `AsyncCardog` to speak another version.
|
|
40
|
+
- `client.last_version`: a `LastVersion(requested, latest)` read off the
|
|
41
|
+
`Cardog-Version` / `Cardog-Latest-Version` response headers.
|
|
42
|
+
- A request pinned past its support window raises `CardogAPIError` with
|
|
43
|
+
`code == "version_sunset"` and the migration link in `hint`.
|
|
44
|
+
|
|
11
45
|
## [2.2.0] - 2026-09-30
|
|
12
46
|
|
|
13
47
|
Tracks API 2.0.0-rc.6. The SDK ergonomics batch (CRDG-3286). Nothing on the
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: cardog
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.0
|
|
4
4
|
Summary: Python SDK for the Cardog API — Canadian VIN decode, vehicle specs, live listings, market quotes, and Transport Canada + NHTSA recalls.
|
|
5
5
|
Project-URL: Homepage, https://cardog.app
|
|
6
6
|
Project-URL: Documentation, https://cardog.app/docs
|
|
@@ -159,7 +159,7 @@ asyncio.run(main())
|
|
|
159
159
|
|-------|---------|
|
|
160
160
|
| `client.v2.entities` | `browse(domain, ...)` · `resolve(q, ...)` · `get_by_ref(ref)` |
|
|
161
161
|
| `client.v2.vin` | `get_by_vin(vin)` · `batch(vins)` · `recalls(vin)` · `listings(vin)` · `instrument(vin)` |
|
|
162
|
-
| `client.v2.specs` | `catalog()` · `sheet(ref, trim=...)` |
|
|
162
|
+
| `client.v2.specs` | `catalog()` · `sheet(ref, trim=...)` · `sheet_by_build(code)` |
|
|
163
163
|
| `client.v2.listings` | `search(...)` · `count(...)` · `facets(...)` · `by_vin(vin)` · `by_id(id)` |
|
|
164
164
|
| `client.v2.instruments` | `search(q=..., limit=...)` · `get_by_ref(ref, window=...)` |
|
|
165
165
|
| `client.v2.quotes` | `get_by_ref(ref)` · `get_many(refs)` |
|
|
@@ -125,7 +125,7 @@ asyncio.run(main())
|
|
|
125
125
|
|-------|---------|
|
|
126
126
|
| `client.v2.entities` | `browse(domain, ...)` · `resolve(q, ...)` · `get_by_ref(ref)` |
|
|
127
127
|
| `client.v2.vin` | `get_by_vin(vin)` · `batch(vins)` · `recalls(vin)` · `listings(vin)` · `instrument(vin)` |
|
|
128
|
-
| `client.v2.specs` | `catalog()` · `sheet(ref, trim=...)` |
|
|
128
|
+
| `client.v2.specs` | `catalog()` · `sheet(ref, trim=...)` · `sheet_by_build(code)` |
|
|
129
129
|
| `client.v2.listings` | `search(...)` · `count(...)` · `facets(...)` · `by_vin(vin)` · `by_id(id)` |
|
|
130
130
|
| `client.v2.instruments` | `search(q=..., limit=...)` · `get_by_ref(ref, window=...)` |
|
|
131
131
|
| `client.v2.quotes` | `get_by_ref(ref)` · `get_many(refs)` |
|