vehicles 0.4.1 → 0.8.0
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.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +164 -0
- data/CHANGELOG.md +321 -0
- data/README.md +88 -15
- data/data/PROVENANCE-vehicles.md +12 -0
- data/data/plates/PROVENANCE.md +10 -0
- data/data/plates/_decode/at-districts.yml +287 -0
- data/data/plates/_decode/ch-cantons.yml +110 -0
- data/data/plates/_decode/cn-issuing-offices.yml +463 -0
- data/data/plates/_decode/cn-provinces.yml +614 -0
- data/data/plates/_decode/cz-kraj.yml +159 -0
- data/data/plates/_decode/dk-serial-blocks.yml +327 -0
- data/data/plates/_decode/es-provinces.yml +116 -0
- data/data/plates/_decode/fr-departements.yml +191 -0
- data/data/plates/_decode/gb-age-identifiers.yml +170 -0
- data/data/plates/_decode/gb-memory-tags.yml +202 -0
- data/data/plates/_decode/gr-prefectures.yml +1408 -0
- data/data/plates/_decode/hr-cities.yml +315 -0
- data/data/plates/_decode/ie-counties.yml +227 -0
- data/data/plates/_decode/in-state-codes.yml +169 -0
- data/data/plates/_decode/is-districts-1938.yml +116 -0
- data/data/plates/_decode/it-provinces.yml +348 -0
- data/data/plates/_decode/jp-office-marks.yml +960 -0
- data/data/plates/_decode/jp-use-marks.yml +205 -0
- data/data/plates/_decode/kr-authority-marks.yml +146 -0
- data/data/plates/_decode/kr-use-syllables.yml +194 -0
- data/data/plates/_decode/lu-series-order.yml +638 -0
- data/data/plates/_decode/mx-entity-series.yml +380 -0
- data/data/plates/_decode/my-index-marks.yml +271 -0
- data/data/plates/_decode/no-counties-1913.yml +148 -0
- data/data/plates/_decode/no-districts.yml +901 -0
- data/data/plates/_decode/pl-powiats.yml +567 -0
- data/data/plates/_decode/pt-trailer-services.yml +96 -0
- data/data/plates/_decode/ro-counties.yml +213 -0
- data/data/plates/_decode/se-diplomatic.yml +220 -0
- data/data/plates/_decode/si-regions.yml +123 -0
- data/data/plates/_decode/sk-districts.yml +314 -0
- data/data/plates/_decode/th-registration-elements.yml +208 -0
- data/data/plates/_decode/ua-regions.yml +393 -0
- data/data/plates/_decode/za-licence-marks.yml +215 -0
- data/data/plates/_meta/classes.yml +26 -0
- data/data/plates/_meta/separators.yml +102 -0
- data/data/plates/ad.yml +961 -0
- data/data/plates/ar.yml +762 -0
- data/data/plates/at.yml +1424 -0
- data/data/plates/au-act.yml +472 -0
- data/data/plates/au-nsw.yml +282 -0
- data/data/plates/au-nt.yml +431 -0
- data/data/plates/au-qld.yml +272 -0
- data/data/plates/au-sa.yml +248 -0
- data/data/plates/au-tas.yml +302 -0
- data/data/plates/au-vic.yml +215 -0
- data/data/plates/au-wa.yml +309 -0
- data/data/plates/be.yml +1840 -0
- data/data/plates/br.yml +1152 -0
- data/data/plates/ca-ab.yml +430 -0
- data/data/plates/ca-bc.yml +697 -0
- data/data/plates/ca-mb.yml +499 -0
- data/data/plates/ca-nb.yml +537 -0
- data/data/plates/ca-nl.yml +743 -0
- data/data/plates/ca-ns.yml +808 -0
- data/data/plates/ca-nt.yml +610 -0
- data/data/plates/ca-nu.yml +280 -0
- data/data/plates/ca-on.yml +881 -0
- data/data/plates/ca-pe.yml +592 -0
- data/data/plates/ca-qc.yml +1036 -0
- data/data/plates/ca-sk.yml +256 -0
- data/data/plates/ca-yt.yml +656 -0
- data/data/plates/ch.yml +1273 -0
- data/data/plates/cn.yml +1431 -0
- data/data/plates/cy.yml +688 -0
- data/data/plates/cz.yml +1179 -0
- data/data/plates/de.yml +1107 -0
- data/data/plates/dk.yml +1647 -0
- data/data/plates/ee.yml +1275 -0
- data/data/plates/es.yml +888 -0
- data/data/plates/fi.yml +1271 -0
- data/data/plates/fr.yml +1265 -0
- data/data/plates/gb.yml +1188 -0
- data/data/plates/gr.yml +721 -0
- data/data/plates/hr.yml +860 -0
- data/data/plates/hu.yml +959 -0
- data/data/plates/ie.yml +775 -0
- data/data/plates/in.yml +1172 -0
- data/data/plates/is.yml +667 -0
- data/data/plates/it.yml +1317 -0
- data/data/plates/jp.yml +3650 -0
- data/data/plates/kr.yml +1375 -0
- data/data/plates/li.yml +1010 -0
- data/data/plates/lt.yml +879 -0
- data/data/plates/lu.yml +842 -0
- data/data/plates/lv.yml +924 -0
- data/data/plates/mc.yml +1024 -0
- data/data/plates/mt.yml +854 -0
- data/data/plates/mx.yml +1372 -0
- data/data/plates/my.yml +685 -0
- data/data/plates/nl.yml +1016 -0
- data/data/plates/no.yml +1018 -0
- data/data/plates/nz.yml +1699 -0
- data/data/plates/pl.yml +1296 -0
- data/data/plates/pt.yml +847 -0
- data/data/plates/ro.yml +785 -0
- data/data/plates/se.yml +1091 -0
- data/data/plates/si.yml +1105 -0
- data/data/plates/sk.yml +1439 -0
- data/data/plates/sm.yml +1119 -0
- data/data/plates/th.yml +1150 -0
- data/data/plates/ua.yml +1672 -0
- data/data/plates/us-ak.yml +763 -0
- data/data/plates/us-al.yml +457 -0
- data/data/plates/us-ar.yml +427 -0
- data/data/plates/us-as.yml +454 -0
- data/data/plates/us-az.yml +430 -0
- data/data/plates/us-ca.yml +892 -0
- data/data/plates/us-co.yml +452 -0
- data/data/plates/us-ct.yml +427 -0
- data/data/plates/us-dc.yml +614 -0
- data/data/plates/us-de.yml +551 -0
- data/data/plates/us-fl.yml +741 -0
- data/data/plates/us-ga.yml +644 -0
- data/data/plates/us-gu.yml +658 -0
- data/data/plates/us-hi.yml +585 -0
- data/data/plates/us-ia.yml +438 -0
- data/data/plates/us-id.yml +531 -0
- data/data/plates/us-il.yml +516 -0
- data/data/plates/us-in.yml +324 -0
- data/data/plates/us-ks.yml +351 -0
- data/data/plates/us-ky.yml +770 -0
- data/data/plates/us-la.yml +568 -0
- data/data/plates/us-ma.yml +379 -0
- data/data/plates/us-md.yml +536 -0
- data/data/plates/us-me.yml +445 -0
- data/data/plates/us-mi.yml +408 -0
- data/data/plates/us-mn.yml +411 -0
- data/data/plates/us-mo.yml +356 -0
- data/data/plates/us-mp.yml +402 -0
- data/data/plates/us-ms.yml +432 -0
- data/data/plates/us-mt.yml +619 -0
- data/data/plates/us-nc.yml +602 -0
- data/data/plates/us-nd.yml +419 -0
- data/data/plates/us-ne.yml +483 -0
- data/data/plates/us-nh.yml +394 -0
- data/data/plates/us-nj.yml +547 -0
- data/data/plates/us-nm.yml +574 -0
- data/data/plates/us-nv.yml +655 -0
- data/data/plates/us-ny.yml +592 -0
- data/data/plates/us-oh.yml +404 -0
- data/data/plates/us-ok.yml +513 -0
- data/data/plates/us-or.yml +392 -0
- data/data/plates/us-pa.yml +506 -0
- data/data/plates/us-pr.yml +507 -0
- data/data/plates/us-ri.yml +445 -0
- data/data/plates/us-sc.yml +605 -0
- data/data/plates/us-sd.yml +428 -0
- data/data/plates/us-tn.yml +471 -0
- data/data/plates/us-tx.yml +535 -0
- data/data/plates/us-ut.yml +384 -0
- data/data/plates/us-va.yml +567 -0
- data/data/plates/us-vi.yml +489 -0
- data/data/plates/us-vt.yml +458 -0
- data/data/plates/us-wa.yml +484 -0
- data/data/plates/us-wi.yml +509 -0
- data/data/plates/us-wv.yml +446 -0
- data/data/plates/us-wy.yml +523 -0
- data/data/plates/va.yml +604 -0
- data/data/plates/za.yml +1141 -0
- data/data/vehicles.json +160653 -105090
- data/lib/vehicles/configuration.rb +18 -2
- data/lib/vehicles/dataset.rb +73 -18
- data/lib/vehicles/fuzzy.rb +115 -0
- data/lib/vehicles/http.rb +48 -0
- data/lib/vehicles/make.rb +36 -6
- data/lib/vehicles/mcp_server.rb +5 -5
- data/lib/vehicles/model.rb +42 -6
- data/lib/vehicles/plates/jurisdiction.rb +32 -0
- data/lib/vehicles/plates/series.rb +291 -0
- data/lib/vehicles/plates/template_fill.rb +188 -0
- data/lib/vehicles/plates/templates.rb +162 -0
- data/lib/vehicles/plates.rb +122 -0
- data/lib/vehicles/providers/hosted_provider.rb +49 -58
- data/lib/vehicles/providers/local_provider.rb +4 -3
- data/lib/vehicles/validators/vehicle_make_validator.rb +3 -1
- data/lib/vehicles/validators/vehicle_model_validator.rb +1 -1
- data/lib/vehicles/version.rb +1 -1
- data/lib/vehicles.rb +53 -16
- data/rakelib/data_refresh.rake +109 -0
- data/rakelib/plates_refresh.rake +29 -0
- data/sig/vehicles.rbs +18 -0
- metadata +174 -2
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# plates/_decode/in-state-codes.yml — the Indian State / Union Territory
|
|
2
|
+
# registration codes. DRAFT for human verification, and READ THE NEXT
|
|
3
|
+
# PARAGRAPH BEFORE USING ANY ROW.
|
|
4
|
+
#
|
|
5
|
+
# THE SOURCE FINDING, and it is the least comfortable one in this jurisdiction:
|
|
6
|
+
# this table IS a closed statutory list, its instrument IS identified, and the
|
|
7
|
+
# instrument's text was NOT reached.
|
|
8
|
+
#
|
|
9
|
+
# * The enabling statute is MVA 1988 § 41(6): the registration mark consists
|
|
10
|
+
# of "one of the groups of such of those letters ... as are ALLOTTED TO THE
|
|
11
|
+
# STATE BY THE CENTRAL GOVERNMENT from time to time BY NOTIFICATION IN THE
|
|
12
|
+
# OFFICIAL GAZETTE". So the codes are neither in the Act nor in the Central
|
|
13
|
+
# Motor Vehicles Rules — they are a gazette allotment, exactly as the German
|
|
14
|
+
# district codes are a Bundesanzeiger publication and the British memory
|
|
15
|
+
# tags are a DVLA leaflet. Every chapter of MoRTH's own consolidated CMVR
|
|
16
|
+
# was fetched and searched: the word "Andhra" does not appear in any of
|
|
17
|
+
# them. The codes are not in the rules.
|
|
18
|
+
# * The notification is S.O. 444(E), dated the 12th June, 1989, Gazette of
|
|
19
|
+
# India, Extraordinary, Part II, Section 3, Sub-section (ii). That
|
|
20
|
+
# identification is not inferred: it is quoted, in terms, in two later
|
|
21
|
+
# notifications fetched verbatim for this pass, each of which amends "the
|
|
22
|
+
# TABLE" of that notification.
|
|
23
|
+
# * S.O. 444(E) itself predates e-Gazette's digital archive (which begins in
|
|
24
|
+
# the 2000s), and morth.nic.in was rebuilt as a single-page application
|
|
25
|
+
# whose legacy document paths now return the app shell rather than a file.
|
|
26
|
+
# The table was not reached. It is not on Wikipedia either — the
|
|
27
|
+
# en-wikipedia RTO-districts article carries no government citation for the
|
|
28
|
+
# state codes at all, which is why this file exists rather than a copy.
|
|
29
|
+
#
|
|
30
|
+
# CONSEQUENCE, STATED ONCE AND ENFORCED PER ROW: exactly TWO rows below are
|
|
31
|
+
# instrument-evidenced (LA and TG, from the amendments in hand). Every other
|
|
32
|
+
# row carries `evidence: corroboration-only` and `verify: true`. The codes are
|
|
33
|
+
# universally used and are not in serious doubt as facts about the world; they
|
|
34
|
+
# are simply not sourced to the standard this dataset holds itself to, and a
|
|
35
|
+
# dataset that cites a source per claim must say so rather than quietly ship
|
|
36
|
+
# thirty-eight unsourced rows. PINNING S.O. 444(E) IS THE SINGLE HIGHEST-VALUE
|
|
37
|
+
# VERIFIER TASK FOR INDIA.
|
|
38
|
+
#
|
|
39
|
+
# A NOTE ON THE SERIAL NUMBERS, for whoever pins it. The two amendments in hand
|
|
40
|
+
# reveal the table's shape: S.O. 4262(E) inserts Ladakh at "17A" (i.e. after
|
|
41
|
+
# entry 17) and S.O. 1306(E) substitutes Telangana at "29A" (i.e. an entry
|
|
42
|
+
# already inserted after entry 29). Both are consistent with a single list of
|
|
43
|
+
# States AND Union Territories in one alphabetical sequence, in which new
|
|
44
|
+
# entities are inserted with a letter suffix rather than renumbering — under
|
|
45
|
+
# that reading entry 29 is Tamil Nadu, which places Telangana at 29A exactly.
|
|
46
|
+
# That reading is written here as a NAVIGATION AID for the verifier and is
|
|
47
|
+
# emphatically NOT data: no row below is justified by it.
|
|
48
|
+
#
|
|
49
|
+
# Referenced by: in-standard-1989, in-standard-hsrp-2004, in-transport-1989,
|
|
50
|
+
# in-transport-hsrp-2004, in-electric-green-2018, in-temporary-2021,
|
|
51
|
+
# in-dealer-1989, in-dealer-2022, in-vintage-2021 (plates/in.yml) via
|
|
52
|
+
# region_encoding. NOT referenced by in-bh-2021 or by any diplomatic series:
|
|
53
|
+
# those marks contain no state code (see their region_encoding_note).
|
|
54
|
+
jurisdiction: in
|
|
55
|
+
topic: state-codes
|
|
56
|
+
authority:
|
|
57
|
+
name: "Central Government (Ministry of Road Transport and Highways), by notification under section 41(6) of the Motor Vehicles Act, 1988 — principal notification S.O. 444(E) dated 12 June 1989"
|
|
58
|
+
url: "https://morth.nic.in/"
|
|
59
|
+
sources:
|
|
60
|
+
- "https://web.archive.org/web/20250804185944id_/https://www.indiacode.nic.in/bitstream/123456789/1798/1/aA1988-59.pdf # MVA 1988 § 41(6) verbatim — the letters are 'allotted to the State by the Central Government from time to time by notification in the Official Gazette'; accessed 2026-08-02"
|
|
61
|
+
- "https://web.archive.org/web/20210514201915id_/https://morth.nic.in/sites/default/files/notifications_document/S.O.%204262%28E%29%20dated%2025%20th%20November%20Registration%20Mark%20for%20Ladakh%20LA.pdf # S.O. 4262(E), 25 November 2019: 'In the Table to the said notification, after serial number 17 and the entries relating thereto, the following serial number and entities shall be inserted, namely:- “17A. Ladakh LA”.' Names the principal notification as S.O.444(E) dated 12 June 1989 and the then-last amendment as S.O.1486(E) dated 9 June 2014; accessed 2026-08-02"
|
|
62
|
+
- "https://web.archive.org/web/20240706034252id_/https://morth.nic.in/sites/default/files/notifications_document/8-SO%201306(E)%2012%20March%202024%20TG%20registration%20mark%20Telangana.pdf # S.O. 1306(E), 12 March 2024: 'In the said notification, in the TABLE, for serial number 29A and the entries relating thereto, the following entries shall be substituted, namely:- “29A. Telangana TG”.' Names the then-last amendment as S.O. 2339(E) dated 14 July 2020; accessed 2026-08-02"
|
|
63
|
+
- "https://web.archive.org/web/20211130113450id_/https://morth.nic.in/sites/default/files/CMVR-chapter3.pdf # CMVR rule 50(3) ('the State code and registering authority code forming the first line') and rule 35(1)/(3) ('AB—Represent State Code'), the rules that consume this table; accessed 2026-08-02"
|
|
64
|
+
period: { start: 1989 }
|
|
65
|
+
period_evidence: enabling-instrument
|
|
66
|
+
period_note: >-
|
|
67
|
+
1989 is the date of the principal notification, S.O. 444(E) of 12 June 1989,
|
|
68
|
+
made three weeks before the Motor Vehicles Act 1988 came into force on
|
|
69
|
+
1 July 1989. It is NOT the date the two-letter codes came into use: codes of
|
|
70
|
+
this shape were carried on Indian plates under the Motor Vehicles Act 1939
|
|
71
|
+
regime as well, and the pre-1989 allotment instrument was not reached and is
|
|
72
|
+
not claimed here. A plate older than 1989 must be treated as unresolved
|
|
73
|
+
rather than decoded through this table.
|
|
74
|
+
|
|
75
|
+
# ---------------------------------------------------------------------------
|
|
76
|
+
# THE TRAPS a parse API must carry. Each is a real, dated change of meaning.
|
|
77
|
+
# ---------------------------------------------------------------------------
|
|
78
|
+
cautions:
|
|
79
|
+
dd_changed_meaning: >-
|
|
80
|
+
DD meant DAMAN AND DIU (a Union Territory) before 26 January 2020 and means
|
|
81
|
+
DADRA AND NAGAR HAVELI AND DAMAN AND DIU (the merged Union Territory) after
|
|
82
|
+
it. Same two letters, different territory, and plates issued under both
|
|
83
|
+
meanings are on the road. The merger notification is reported as S.O. 295(E)
|
|
84
|
+
of 25 January 2020 and was NOT reached; the DN row below (Dadra and Nagar
|
|
85
|
+
Haveli, the pre-merger UT) is what makes the change visible in the data.
|
|
86
|
+
ch_is_not_chhattisgarh: >-
|
|
87
|
+
CH is CHANDIGARH. Chhattisgarh is CG. The ISO 3166-2 code for Chhattisgarh
|
|
88
|
+
is IN-CT, which matches NEITHER — a consumer joining this table to ISO
|
|
89
|
+
3166-2 must map, not assume.
|
|
90
|
+
renamed_states_kept_issuing_the_old_code: >-
|
|
91
|
+
OR (Odisha, before the State's 2011 rename took effect on plates) and UA
|
|
92
|
+
(Uttaranchal, before the 2007 rename to Uttarakhand) are historic codes on
|
|
93
|
+
live plates, not errors. So is TS (Telangana, 2014 to 2024), which S.O.
|
|
94
|
+
1306(E) replaced with TG in March 2024 — the newest code change in India and
|
|
95
|
+
the one most likely to be wrong in every competing dataset.
|
|
96
|
+
the_district_is_not_here: >-
|
|
97
|
+
This table decodes the FIRST TWO LETTERS only. The two digits that follow
|
|
98
|
+
are the registering authority (RTO district) code, which no central
|
|
99
|
+
instrument enumerates and which each State creates, merges and renumbers on
|
|
100
|
+
its own. There are well over a thousand of them. They are deliberately not
|
|
101
|
+
tabled (PRD-PLATES § 2.4 mechanism-note rule) and a decode must not guess.
|
|
102
|
+
|
|
103
|
+
# ---------------------------------------------------------------------------
|
|
104
|
+
# CODES. `evidence: instrument` = the row is quoted verbatim in a gazette
|
|
105
|
+
# notification held for this pass. `evidence: corroboration-only` = the code is
|
|
106
|
+
# in universal use and is consistent with the amendment chain, but no primary
|
|
107
|
+
# was reached for it; `verify: true` marks it for the human pass.
|
|
108
|
+
# Ordered alphabetically by code.
|
|
109
|
+
# ---------------------------------------------------------------------------
|
|
110
|
+
codes:
|
|
111
|
+
- { code: "AN", name: "Andaman and Nicobar Islands", type: union-territory, evidence: corroboration-only, verify: true }
|
|
112
|
+
- { code: "AP", name: "Andhra Pradesh", type: state, evidence: corroboration-only, verify: true }
|
|
113
|
+
- { code: "AR", name: "Arunachal Pradesh", type: state, evidence: corroboration-only, verify: true }
|
|
114
|
+
- { code: "AS", name: "Assam", type: state, evidence: corroboration-only, verify: true }
|
|
115
|
+
- { code: "BR", name: "Bihar", type: state, evidence: corroboration-only, verify: true }
|
|
116
|
+
- { code: "CG", name: "Chhattisgarh", type: state, evidence: corroboration-only, verify: true, since: 2000, since_note: "State created 1 November 2000 by the Madhya Pradesh Reorganisation Act, 2000; the allotting amendment to S.O. 444(E) was not reached" }
|
|
117
|
+
- { code: "CH", name: "Chandigarh", type: union-territory, evidence: corroboration-only, verify: true }
|
|
118
|
+
- { code: "DD", name: "Dadra and Nagar Haveli and Daman and Diu", type: union-territory, evidence: corroboration-only, verify: true, meaning_changed: 2020, meaning_note: "before the 2020 merger these letters denoted Daman and Diu alone — see cautions.dd_changed_meaning" }
|
|
119
|
+
- { code: "DL", name: "Delhi (National Capital Territory)", type: union-territory, evidence: corroboration-only, verify: true }
|
|
120
|
+
- { code: "GA", name: "Goa", type: state, evidence: corroboration-only, verify: true }
|
|
121
|
+
- { code: "GJ", name: "Gujarat", type: state, evidence: corroboration-only, verify: true }
|
|
122
|
+
- { code: "HP", name: "Himachal Pradesh", type: state, evidence: corroboration-only, verify: true }
|
|
123
|
+
- { code: "HR", name: "Haryana", type: state, evidence: corroboration-only, verify: true }
|
|
124
|
+
- { code: "JH", name: "Jharkhand", type: state, evidence: corroboration-only, verify: true, since: 2000, since_note: "State created 15 November 2000; allotting amendment not reached" }
|
|
125
|
+
- { code: "JK", name: "Jammu and Kashmir", type: union-territory, evidence: corroboration-only, verify: true, note: "a State until 31 October 2019, a Union Territory since; the code did not change, and Ladakh was carved out with its own code (LA)" }
|
|
126
|
+
- { code: "KA", name: "Karnataka", type: state, evidence: corroboration-only, verify: true }
|
|
127
|
+
- { code: "KL", name: "Kerala", type: state, evidence: corroboration-only, verify: true }
|
|
128
|
+
- { code: "LA", name: "Ladakh", type: union-territory, evidence: instrument, verify: false, since: 2019, source: "S.O. 4262(E), 25 November 2019, inserting '17A. Ladakh LA' into the Table to S.O. 444(E); in force from the date of its publication in the Official Gazette" }
|
|
129
|
+
- { code: "LD", name: "Lakshadweep", type: union-territory, evidence: corroboration-only, verify: true }
|
|
130
|
+
- { code: "MH", name: "Maharashtra", type: state, evidence: corroboration-only, verify: true }
|
|
131
|
+
- { code: "ML", name: "Meghalaya", type: state, evidence: corroboration-only, verify: true }
|
|
132
|
+
- { code: "MN", name: "Manipur", type: state, evidence: corroboration-only, verify: true }
|
|
133
|
+
- { code: "MP", name: "Madhya Pradesh", type: state, evidence: corroboration-only, verify: true }
|
|
134
|
+
- { code: "MZ", name: "Mizoram", type: state, evidence: corroboration-only, verify: true }
|
|
135
|
+
- { code: "NL", name: "Nagaland", type: state, evidence: corroboration-only, verify: true }
|
|
136
|
+
- { code: "OD", name: "Odisha", type: state, evidence: corroboration-only, verify: true, replaced: "OR", replaced_note: "the OR code remained in issue until the change; see the withdrawn block" }
|
|
137
|
+
- { code: "PB", name: "Punjab", type: state, evidence: corroboration-only, verify: true }
|
|
138
|
+
- { code: "PY", name: "Puducherry", type: union-territory, evidence: corroboration-only, verify: true, note: "the territory was renamed from Pondicherry in 2006; the code did not change" }
|
|
139
|
+
- { code: "RJ", name: "Rajasthan", type: state, evidence: corroboration-only, verify: true }
|
|
140
|
+
- { code: "SK", name: "Sikkim", type: state, evidence: corroboration-only, verify: true }
|
|
141
|
+
- { code: "TG", name: "Telangana", type: state, evidence: instrument, verify: false, since: 2024, source: "S.O. 1306(E), 12 March 2024, substituting '29A. Telangana TG' for the previous entry 29A in the Table to S.O. 444(E), with effect from the date of publication in the Official Gazette" }
|
|
142
|
+
- { code: "TN", name: "Tamil Nadu", type: state, evidence: corroboration-only, verify: true }
|
|
143
|
+
- { code: "TR", name: "Tripura", type: state, evidence: corroboration-only, verify: true }
|
|
144
|
+
- { code: "UK", name: "Uttarakhand", type: state, evidence: corroboration-only, verify: true, replaced: "UA" }
|
|
145
|
+
- { code: "UP", name: "Uttar Pradesh", type: state, evidence: corroboration-only, verify: true }
|
|
146
|
+
- { code: "WB", name: "West Bengal", type: state, evidence: corroboration-only, verify: true }
|
|
147
|
+
|
|
148
|
+
# ---------------------------------------------------------------------------
|
|
149
|
+
# WITHDRAWN CODES. Rows are never deleted (PRD-PLATES § 2.4 period discipline):
|
|
150
|
+
# every one of these is still on live, valid plates, because an Indian
|
|
151
|
+
# registration mark is not reissued when a State is renamed or merged.
|
|
152
|
+
# ---------------------------------------------------------------------------
|
|
153
|
+
withdrawn_codes:
|
|
154
|
+
- { code: "OR", name: "Orissa / Odisha", type: state, until: 2012, evidence: corroboration-only, verify: true, note: "superseded by OD; the change is commonly dated to 2012 and no primary was reached for it" }
|
|
155
|
+
- { code: "TS", name: "Telangana", type: state, since: 2014, until: 2024, evidence: instrument-adjacent, verify: true, note: "entry 29A was inserted for Telangana on the State's creation (S.O. 1486(E), 9 June 2014, named as the then-last amendment by S.O. 4262(E)) and SUBSTITUTED with the TG code by S.O. 1306(E) on 12 March 2024. That the superseded code read TS is not quoted by the substituting notification — S.O. 1306(E) prints only the new entry — so the letters themselves are corroboration-only while the entry's existence, position and end date are instrument-evidenced." }
|
|
156
|
+
- { code: "UA", name: "Uttaranchal", type: state, since: 2000, until: 2007, evidence: corroboration-only, verify: true, note: "the State was renamed Uttarakhand on 1 January 2007; superseded by UK" }
|
|
157
|
+
- { code: "DN", name: "Dadra and Nagar Haveli", type: union-territory, until: 2020, evidence: corroboration-only, verify: true, note: "merged with Daman and Diu on 26 January 2020 into the UT that now carries DD; see cautions.dd_changed_meaning" }
|
|
158
|
+
|
|
159
|
+
# ---------------------------------------------------------------------------
|
|
160
|
+
# NOT A CODE. Recorded so that a decoder does not go looking.
|
|
161
|
+
# ---------------------------------------------------------------------------
|
|
162
|
+
not_state_codes:
|
|
163
|
+
- { token: "BH", meaning: "Bharat (India) — the national, geography-free series created by CMVR rule 50(8), G.S.R. 594(E) of 26 August 2021. Position two in the mark, not position one, and preceded by a two-digit YEAR rather than followed by a district.", evidence: instrument }
|
|
164
|
+
- { token: "VA", meaning: "Vintage — CMVR rule 81B, G.S.R. 492(E) of 15 July 2021. Position two, after the state code.", evidence: instrument }
|
|
165
|
+
- { token: "TC", meaning: "Trade certificate — CMVR rule 35(3) as substituted, G.S.R. 703(E) of 14 September 2022. Position five, near the end of the mark.", evidence: instrument }
|
|
166
|
+
- { token: "CD", meaning: "Corps diplomatique — CMVR rule 76(6). Preceded by a Ministry of External Affairs mission number, not a state code.", evidence: instrument }
|
|
167
|
+
- { token: "CC", meaning: "Consular corps — CMVR rule 76(7). Also, and this is the collision worth knowing about, CC is not a State: an Indian string beginning with two digits and then CC is consular, while a string beginning with two letters is an ordinary mark.", evidence: instrument }
|
|
168
|
+
- { token: "UN", meaning: "United Nations organisations — CMVR rule 76-A, G.S.R. 644 of 25 September 1995. Note NL is Nagaland but UN is not a State.", evidence: instrument }
|
|
169
|
+
- { token: "CDP / CCP", meaning: "home-based non-diplomatic officials of missions and consular posts — CMVR rule 76-B, G.S.R. 395(E) of 16 July 1997.", evidence: instrument }
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# plates/_decode/is-districts-1938.yml — the Icelandic DISTRICT-letter index
|
|
2
|
+
# used until the 1 January 1989 cutover.
|
|
3
|
+
#
|
|
4
|
+
# THE PRIMARY IS MISSING AND THAT IS RECORDED, NOT PAPERED OVER. Every row
|
|
5
|
+
# below is `secondary-wikipedia`. The search for a primary was substantial and
|
|
6
|
+
# it failed; the reader is entitled to know exactly how:
|
|
7
|
+
#
|
|
8
|
+
# * reglugerd.is holds NO pre-1988 Icelandic vehicle-registration regulation.
|
|
9
|
+
# Searches on "skráningu ökutækja", "skráningu bifreiða", "skráningarmerki"
|
|
10
|
+
# and "einkennisstafir", plus year filters for 1968, 1987 and 1988, return
|
|
11
|
+
# nothing earlier than reglugerð 523/1988 — and 523/1988's own page carries
|
|
12
|
+
# no text at all ("Texti ekki kominn") and no date fields.
|
|
13
|
+
# * reglugerð 78/1997, which repealed 523/1988, contains no letter index in
|
|
14
|
+
# either its body or its viðauki.
|
|
15
|
+
# * Samgöngustofa's verklagsreglur pages (which en.wikipedia cites for the
|
|
16
|
+
# modern rules) now 302 to a generic island.is landing page — the deep
|
|
17
|
+
# registration-rules pages did not survive the site migration.
|
|
18
|
+
# * THE BEST UNCLOSED LEAD, named here so the next pass starts ahead: Hagtíðindi
|
|
19
|
+
# 1989 (vol. 74 no. 10, p. 360) states that the 1988 regulations replaced an
|
|
20
|
+
# older instrument it cites as "nr. 40 19. ..." — the day and month are cut
|
|
21
|
+
# off at the snippet boundary. That regulation is the most likely home of
|
|
22
|
+
# the letter index. Reaching it needs Stjórnartíðindi B-deild page images:
|
|
23
|
+
# timarit.is serves search results but returns HTTP 403 on /page/, the
|
|
24
|
+
# island.is gazette search is a JavaScript SPA with no server-rendered
|
|
25
|
+
# results, and web.archive.org was unreachable from this pass.
|
|
26
|
+
#
|
|
27
|
+
# WHAT THE LETTERS ACTUALLY MEAN, and why this table is not a "county" table in
|
|
28
|
+
# the Norwegian sense: the letter recorded the district in which the OWNER had
|
|
29
|
+
# his legal domicile, not the vehicle's home. A vehicle sold across district
|
|
30
|
+
# lines was RE-PLATED with a new number, and an owner could keep his number and
|
|
31
|
+
# move it to a new vehicle. That is precisely the property the 1989 reform
|
|
32
|
+
# abolished when it made the fastanúmer permanent to the vehicle — so this
|
|
33
|
+
# table decodes an owner's district at the time of issue, and nothing else.
|
|
34
|
+
#
|
|
35
|
+
# SCOPE OF THE DATE. 1938 is when each district was reduced to a SINGLE letter
|
|
36
|
+
# and the enamel plates appeared; Icelandic vehicles carried district
|
|
37
|
+
# ABBREVIATIONS before that (from 1914, beginning with Bifreiðafélag
|
|
38
|
+
# Reykjavíkur's "Br1"), which this table does not cover. The 1950 change from
|
|
39
|
+
# enamel to struck plates changed the material, not the index.
|
|
40
|
+
jurisdiction: is
|
|
41
|
+
topic: districts
|
|
42
|
+
authority:
|
|
43
|
+
name: Sýslumenn (issuing); Samgöngustofa (successor registry)
|
|
44
|
+
url: "https://www.reglugerd.is/reglugerdir/allar/nr/751-2003"
|
|
45
|
+
period: { start: 1938, end: 1989 }
|
|
46
|
+
period_evidence: statutory-date-end-secondary-start
|
|
47
|
+
period_note: >-
|
|
48
|
+
THE TWO ENDS ARE EVIDENCED VERY DIFFERENTLY, and the difference matters.
|
|
49
|
+
END — 1 JANUARY 1989 is PRIMARY and is stated in two instruments that are
|
|
50
|
+
reachable, even though the instrument that made the change (reglugerð
|
|
51
|
+
523/1988, set 15 December 1988) has no retrievable text: reglugerð 78/1997
|
|
52
|
+
34. gr. provides that "Ökutæki sem skráð voru fyrir 1. janúar 1989 mega áfram
|
|
53
|
+
bera skráningarmerki af eldri gerð", and reglugerð 751/2003 VII. kafli splits
|
|
54
|
+
its transitional articles at exactly that date (28. gr. for vehicles
|
|
55
|
+
registered 1989-2003, 29. gr. for those registered before 1 January 1989).
|
|
56
|
+
START — 1938 is secondary-wikipedia only, and is the year each district was
|
|
57
|
+
cut to one letter; no instrument was retrieved.
|
|
58
|
+
sources:
|
|
59
|
+
- "https://is.wikipedia.org/wiki/N%C3%BAmeraplata # secondary-wikipedia: EVERY letter row below; the 1938 single-letter reform and enamel plates (black ground, white characters); the 1950 change to struck plates; the 1 January 1989 cutover to white plates with blue characters; and the owner-domicile rule that re-plated a vehicle sold between districts. The article cites RÚV (2021-03-08) and fornbill.is. Accessed 2026-08-02"
|
|
60
|
+
- "https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Iceland # secondary-wikipedia (rev. 2026-06-08): corroborates the same index, adds the gloss that plates followed the OWNER and had to be replaced on moving district, and that from 1 January 1989 further use of the old plates was forbidden except on vehicles already carrying them. Accessed 2026-08-02"
|
|
61
|
+
- "https://www.reglugerd.is/reglugerdir/allar/nr/78-1997 # PRIMARY: reglugerð 78/1997 34. gr. 'Notkun eldri skráningarmerkja' — the pre-1989 boundary, and the sunset dates 31 December 1997 (bifhjól, eftirvagnar) and 31 December 1998 (others). Accessed 2026-08-02"
|
|
62
|
+
- "https://www.reglugerd.is/reglugerdir/allar/nr/523-1988 # PRIMARY but EMPTY: the 1989 cutover instrument, 'Reglugerð um skráningu ökutækja', set 15 December 1988, amended by 493/1989 and 312/1996, repealed by 78/1997 — body text absent ('Texti ekki kominn') and no date fields published. Cited to evidence the gap, not the content. Accessed 2026-08-02"
|
|
63
|
+
|
|
64
|
+
# ---------------------------------------------------------------------------
|
|
65
|
+
# THE INDEX, keyed by letter — the decode direction. `district` is the
|
|
66
|
+
# Icelandic name as the source gives it; `kind` separates the genuinely
|
|
67
|
+
# geographic rows from the four that are not places at all.
|
|
68
|
+
# ---------------------------------------------------------------------------
|
|
69
|
+
letters:
|
|
70
|
+
A: { district: "Akureyrarkaupstaður og Eyjafjarðarsýsla", kind: district }
|
|
71
|
+
B: { district: "Barðastrandarsýsla", kind: district }
|
|
72
|
+
D: { district: "Dalasýsla", kind: district }
|
|
73
|
+
E: { district: "Akraneskaupstaður", kind: district }
|
|
74
|
+
F: { district: "Siglufjarðarkaupstaður", kind: district }
|
|
75
|
+
G: { district: "Hafnarfjarðarkaupstaður og Gullbringu- og Kjósarsýsla", kind: district }
|
|
76
|
+
H: { district: "Húnavatnssýsla", kind: district }
|
|
77
|
+
"Í": { district: "Ísafjarðarkaupstaður og Ísafjarðarsýsla", kind: district }
|
|
78
|
+
J: { district: "Íslenskir starfsmenn á Keflavíkurflugvelli", kind: employer, note: "Icelandic staff at Keflavík airport — an employer category, not a place." }
|
|
79
|
+
JO: { district: "Erlendir starfsmenn á Keflavíkurflugvelli", kind: employer, note: "Foreign staff at Keflavík airport. One of the two two-letter codes in the index." }
|
|
80
|
+
K: { district: "Sauðárkrókskaupstaður og Skagafjarðarsýsla", kind: district }
|
|
81
|
+
L: { district: "Rangárvallasýsla", kind: district }
|
|
82
|
+
M: { district: "Mýra- og Borgarfjarðarsýsla", kind: district }
|
|
83
|
+
N: { district: "Neskaupstaður", kind: district }
|
|
84
|
+
"Ó": { district: "Ólafsfjarðarkaupstaður", kind: district }
|
|
85
|
+
P: { district: "Snæfells- og Hnappadalssýsla", kind: district }
|
|
86
|
+
R: { district: "Reykjavík", kind: district, note: "By far the largest series — the default assumption for an unidentified old Icelandic plate." }
|
|
87
|
+
S: { district: "Seyðisfjarðarkaupstaður og Norður-Múlasýsla", kind: district }
|
|
88
|
+
T: { district: "Strandasýsla", kind: district }
|
|
89
|
+
U: { district: "Suður-Múlasýsla", kind: district }
|
|
90
|
+
V: { district: "Vestmannaeyjakaupstaður", kind: district }
|
|
91
|
+
VL: { district: "Varnarliðið", kind: military, note: "The US Defence Force in Iceland. Defunct — the force left in 2006." }
|
|
92
|
+
VLE: { district: "Ökutæki hermanna", kind: military, note: "Vehicles of individual US servicemen. Defunct." }
|
|
93
|
+
X: { district: "Árnessýsla", kind: district }
|
|
94
|
+
Y: { district: "Kópavogur", kind: district }
|
|
95
|
+
Z: { district: "Austur- og Vestur-Skaftafellssýsla", kind: district, note: "en.wikipedia gives the shorter 'Skaftafellssýsla'; is.wikipedia gives both halves. Recorded in the fuller form, with the disagreement noted rather than resolved." }
|
|
96
|
+
"Þ": { district: "Þingeyjarsýsla", kind: district }
|
|
97
|
+
"Ö": { district: "Keflavíkurkaupstaður", kind: district }
|
|
98
|
+
"Ø": { district: "Keflavíkurkaupstaður", kind: district, note: "A VARIANT SPELLING OF Ö, not a separate district — and the only code in the whole index using a letter outside the Icelandic alphabet. Recorded because plates were struck both ways." }
|
|
99
|
+
|
|
100
|
+
letters_never_used: [C, "Á", "Ð", "É", W, "Ý", "Æ"]
|
|
101
|
+
letters_never_used_note: >-
|
|
102
|
+
An observation about the index as published, NOT a sourced rule: no
|
|
103
|
+
instrument stating an Icelandic letter-exclusion policy was retrieved, and
|
|
104
|
+
reglugerð 751/2003 (the modern regulation, which IS readable) contains no
|
|
105
|
+
excluded-letter provision either. Note that four of the codes in use — Í, Ó,
|
|
106
|
+
Þ and Ö — are outside this dataset's serial alphabet (A-Z, 0-9), so a
|
|
107
|
+
consumer matching old Icelandic plates cannot express them in a dataset
|
|
108
|
+
regex. That is a real limitation of the pre-1989 series and is why
|
|
109
|
+
`is-district-1938` in plates/is.yml is `recall-only`.
|
|
110
|
+
|
|
111
|
+
unicode_caveat: >-
|
|
112
|
+
Í, Ó, Þ, Ö and Ø are keys in this table but are NOT members of
|
|
113
|
+
_meta/separators.yml's serial alphabet. This decode file may carry them
|
|
114
|
+
because it is a lookup table, not a pattern; no regex in plates/is.yml
|
|
115
|
+
attempts to match them. A consumer decoding a photographed pre-1989 plate
|
|
116
|
+
must handle those five glyphs outside the regex tier.
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
# plates/_decode/it-provinces.yml — Italy's two province-keyed code tables.
|
|
2
|
+
#
|
|
3
|
+
# THE SOURCE FINDING, and it is the same shape as the Spanish one: this is NOT
|
|
4
|
+
# Wikipedia. Both tables are ENACTED LAW — Appendice XI al Titolo III of the
|
|
5
|
+
# Regolamento di esecuzione e di attuazione del nuovo codice della strada
|
|
6
|
+
# (D.P.R. 16 dicembre 1992, n. 495), read off Normattiva's Akoma-Ntoso export of
|
|
7
|
+
# the consolidated act. Every row below is that appendix, verbatim, in its own
|
|
8
|
+
# printed order, including its typographical defects (see `sic` below).
|
|
9
|
+
#
|
|
10
|
+
# TWO TABLES, NOT ONE, AND THEY DO NOT INTERCHANGE. This is the trap the file
|
|
11
|
+
# exists to prevent:
|
|
12
|
+
#
|
|
13
|
+
# * `mctc_offices` (Appendice XI comma 1) — the sigle of the provincial
|
|
14
|
+
# motorisation offices, a LETTER PLUS A NUMBER (A1 Alessandria, B6 Milano,
|
|
15
|
+
# P4 Roma, X4 Oristano). This is the PREFIX OF THE TARGA PROVVISORIA
|
|
16
|
+
# (art. 255 comma 2 lett. a)). Referenced by: it-temporary-provvisoria.
|
|
17
|
+
# * `province_sigle` (Appendice XI comma 1-bis) — the two-letter sigle of the
|
|
18
|
+
# provinces, which is what the RIGHT-HAND STICKER on a modern plate carries
|
|
19
|
+
# (art. 256 comma 4-bis + art. 260 comma 3), and what the pre-1993 provincial
|
|
20
|
+
# plates carried in the mark itself. Referenced by: it-standard-1999
|
|
21
|
+
# (sticker only), it-provincial-1959, it-provincial-motorcycle-1959.
|
|
22
|
+
#
|
|
23
|
+
# Rome is P4 in the first table and the literal word "Roma" in the second. A
|
|
24
|
+
# decoder that reaches for the wrong table on an Italian string will produce
|
|
25
|
+
# confident nonsense.
|
|
26
|
+
#
|
|
27
|
+
# WHAT THE STICKER ACTUALLY MEANS (art. 260 comma 3, verbatim): the lower
|
|
28
|
+
# sticker "reca in bianco la sigla della PROVINCIA DI RESIDENZA DELL'INTESTATARIO
|
|
29
|
+
# della carta di circolazione", and both stickers "non formano parte integrante
|
|
30
|
+
# della targa e non influiscono ai fini dell'identificazione del veicolo e del
|
|
31
|
+
# relativo intestatario". So on a post-1999 plate the code is (a) removable,
|
|
32
|
+
# (b) about the KEEPER'S RESIDENCE rather than the place of registration, and
|
|
33
|
+
# (c) legally not part of the plate. On a pre-1993 plate the sigla is in the mark
|
|
34
|
+
# and denotes the province OF REGISTRATION (art. 320 D.P.R. 420/1959). Same two
|
|
35
|
+
# letters, opposite semantics, and a parse API must not blend them. This is
|
|
36
|
+
# Italy's version of the French SIV caution recorded in PRD-PLATES §2.4.
|
|
37
|
+
jurisdiction: it
|
|
38
|
+
topic: provinces
|
|
39
|
+
authority:
|
|
40
|
+
name: "D.P.R. 16 dicembre 1992, n. 495 — Appendice XI al Titolo III (introdotta/modificata dal D.P.R. 4 settembre 1998, n. 355, art. 5)"
|
|
41
|
+
url: "https://www.normattiva.it/uri-res/N2Ls?urn:nir:stato:decreto.del.presidente.della.repubblica:1992-12-16;495"
|
|
42
|
+
sources:
|
|
43
|
+
- "https://www.normattiva.it/do/atto/caricaAKN?dataGU=19921228&codiceRedaz=092G0531&dataVigenza=20260802 # Appendice XI al Titolo III, comma 1 (sigle degli uffici provinciali M.C.T.C.) and comma 1-bis (sigle delle province) — every row below, verbatim; accessed 2026-08-02"
|
|
44
|
+
- "https://www.normattiva.it/do/atto/caricaAKN?dataGU=19921228&codiceRedaz=092G0531&dataVigenza=20160101 # the SAME appendix at 1 January 2016, which still carries the four sigle later withdrawn (Carbonia-Iglesias CI, Medio Campidano VS, Ogliastra OG, Olbia-Tempio OT) — the primary for the `withdrawn` rows"
|
|
45
|
+
- "https://www.normattiva.it/uri-res/N2Ls?urn:nir:stato:decreto.del.presidente.della.repubblica:1992-12-16;495~art255 # art. 255 comma 2 lett. a): the office sigla is the first element of a targa provvisoria, and the list 'può essere aggiornato con decreto del Ministro dei trasporti e della navigazione, a seguito dell'istituzione di ulteriori province'"
|
|
46
|
+
- "https://www.normattiva.it/uri-res/N2Ls?urn:nir:stato:decreto.del.presidente.della.repubblica:1992-12-16;495~art260 # art. 260 comma 3: what the two stickers carry and their legal non-status"
|
|
47
|
+
period: { start: 1998 }
|
|
48
|
+
period_evidence: instrument-in-force
|
|
49
|
+
period_note: >-
|
|
50
|
+
Italian province sigle long predate 1998 — they are commonly said to date from
|
|
51
|
+
1927, for which NO PRIMARY was secured and which is therefore recorded as
|
|
52
|
+
folklore rather than as a period claim. 1998 is the date of D.P.R. 4 settembre
|
|
53
|
+
1998, n. 355, the instrument that inserted the list read here (its art. 5
|
|
54
|
+
amended Appendice XI). A physical plate older than 1998 must be decoded
|
|
55
|
+
through this table with care: provinces created in 1992 (Lecco LC, Lodi LO,
|
|
56
|
+
Rimini RN, Prato PO, Crotone KR, Vibo Valentia VV, Verbano-Cusio-Ossola VB) and
|
|
57
|
+
later (Monza-Brianza MB, Fermo FM, Barletta-Andria-Trani BT in 2004-2009, Sud
|
|
58
|
+
Sardegna SU in 2016) never appeared on a provincial-era plate at all.
|
|
59
|
+
|
|
60
|
+
# PERIOD DISCIPLINE (PRD-PLATES §2.4). D.P.R. 20 luglio 2017, n. 140 (GU
|
|
61
|
+
# 22-09-2017 n. 222) withdrew four sigle and added one, and its art. 2 comma 2
|
|
62
|
+
# states the rule every decode table of this kind needs, verbatim:
|
|
63
|
+
# "I veicoli dotati di targhe di immatricolazione con le sigle delle province,
|
|
64
|
+
# di cui al comma 1, possono continuare a circolare fino a una nuova
|
|
65
|
+
# immatricolazione o fino alla cessazione dalla circolazione."
|
|
66
|
+
# Withdrawn codes therefore stay on the road indefinitely and rows are CLOSED BY
|
|
67
|
+
# PERIOD, never deleted — exactly as § 9 Abs. 3 FZV requires for German district
|
|
68
|
+
# codes (plates/de.yml).
|
|
69
|
+
withdrawn_rule_source: "https://www.normattiva.it/do/atto/caricaAKN?dataGU=19921228&codiceRedaz=092G0531&dataVigenza=20260802 # AGGIORNAMENTO (55) to Appendice XI: D.P.R. 20 luglio 2017, n. 140, art. 2 comma 2"
|
|
70
|
+
|
|
71
|
+
# Disambiguation notes a parse API must carry:
|
|
72
|
+
# * EVERY province sigla is exactly two letters EXCEPT Roma, which the appendix
|
|
73
|
+
# prints as the whole word "Roma". There is consequently no maximal-munch
|
|
74
|
+
# problem of the Spanish kind (C vs CA vs CC vs CE...) — the only special
|
|
75
|
+
# case is the four-letter one. Appendice XII comma 3 legislates the
|
|
76
|
+
# abbreviation for the one place it is needed: "Nel caso in cui la targa del
|
|
77
|
+
# veicolo traente contenga la parola Roma essa viene riportata sulla targa
|
|
78
|
+
# ripetitrice mediante la sigla RM."
|
|
79
|
+
# * The dataset records serials uppercase (plates/_meta/separators.yml
|
|
80
|
+
# `case: upper`), so "Roma" is matched as ROMA. The appendix's mixed-case
|
|
81
|
+
# printing is preserved in `printed_as`.
|
|
82
|
+
# * Three sigle carry a heraldic device the appendix describes in words and
|
|
83
|
+
# which a render pipeline must not silently drop: Aosta ("La O è sormontata
|
|
84
|
+
# dallo stemma"), Bolzano ("La Z è sormontata dallo stemma"), Trento ("La N è
|
|
85
|
+
# sormontata dallo stemma"). PRD-PLATES §3 placeholder rule applies to those
|
|
86
|
+
# three emblems.
|
|
87
|
+
maximal_munch: false
|
|
88
|
+
|
|
89
|
+
province_sigle:
|
|
90
|
+
- { code: "AG", name: "Agrigento" }
|
|
91
|
+
- { code: "AL", name: "Alessandria" }
|
|
92
|
+
- { code: "AN", name: "Ancona" }
|
|
93
|
+
- { code: "AO", name: "Aosta", emblem_note: "La O è sormontata dallo stemma" }
|
|
94
|
+
- { code: "AR", name: "Arezzo" }
|
|
95
|
+
- { code: "AP", name: "Ascoli Piceno" }
|
|
96
|
+
- { code: "AT", name: "Asti" }
|
|
97
|
+
- { code: "AV", name: "Avellino" }
|
|
98
|
+
- { code: "BA", name: "Bari" }
|
|
99
|
+
- { code: "BT", name: "Barletta - Andria-Trani", printed_as: "Barletta - Andria-Trani" }
|
|
100
|
+
- { code: "BL", name: "Belluno" }
|
|
101
|
+
- { code: "BN", name: "Benevento" }
|
|
102
|
+
- { code: "BG", name: "Bergamo" }
|
|
103
|
+
- { code: "BI", name: "Biella" }
|
|
104
|
+
- { code: "BO", name: "Bologna" }
|
|
105
|
+
- { code: "BZ", name: "Bolzano", emblem_note: "La Z è sormontata dallo stemma" }
|
|
106
|
+
- { code: "BS", name: "Brescia" }
|
|
107
|
+
- { code: "BR", name: "Brindisi" }
|
|
108
|
+
- { code: "CA", name: "Cagliari" }
|
|
109
|
+
- { code: "CL", name: "Caltanissetta" }
|
|
110
|
+
- { code: "CB", name: "Campobasso" }
|
|
111
|
+
- { code: "CE", name: "Caserta" }
|
|
112
|
+
- { code: "CT", name: "Catania" }
|
|
113
|
+
- { code: "CZ", name: "Catanzaro" }
|
|
114
|
+
- { code: "CH", name: "Chieti" }
|
|
115
|
+
- { code: "CO", name: "Como" }
|
|
116
|
+
- { code: "CS", name: "Cosenza" }
|
|
117
|
+
- { code: "CR", name: "Cremona" }
|
|
118
|
+
- { code: "KR", name: "Crotone" }
|
|
119
|
+
- { code: "CN", name: "Cuneo" }
|
|
120
|
+
- { code: "EN", name: "Enna" }
|
|
121
|
+
- { code: "FM", name: "Fermo" }
|
|
122
|
+
- { code: "FE", name: "Ferrara" }
|
|
123
|
+
- { code: "FI", name: "Firenze" }
|
|
124
|
+
- { code: "FG", name: "Foggia" }
|
|
125
|
+
- { code: "FC", name: "Forlì Cesena", printed_as: "Forli' Cesena" }
|
|
126
|
+
- { code: "FR", name: "Frosinone" }
|
|
127
|
+
- { code: "GE", name: "Genova" }
|
|
128
|
+
- { code: "GO", name: "Gorizia" }
|
|
129
|
+
- { code: "GR", name: "Grosseto" }
|
|
130
|
+
- { code: "IM", name: "Imperia" }
|
|
131
|
+
- { code: "IS", name: "Isernia" }
|
|
132
|
+
- { code: "AQ", name: "L'Aquila" }
|
|
133
|
+
- { code: "SP", name: "La Spezia" }
|
|
134
|
+
- { code: "LT", name: "Latina" }
|
|
135
|
+
- { code: "LE", name: "Lecce" }
|
|
136
|
+
- { code: "LC", name: "Lecco" }
|
|
137
|
+
- { code: "LI", name: "Livorno" }
|
|
138
|
+
- { code: "LO", name: "Lodi" }
|
|
139
|
+
- { code: "LU", name: "Lucca" }
|
|
140
|
+
- { code: "MC", name: "Macerata" }
|
|
141
|
+
- { code: "MN", name: "Mantova" }
|
|
142
|
+
- { code: "MS", name: "Massa Carrara" }
|
|
143
|
+
- { code: "MT", name: "Matera" }
|
|
144
|
+
- { code: "ME", name: "Messina" }
|
|
145
|
+
- { code: "MI", name: "Milano" }
|
|
146
|
+
- { code: "MO", name: "Modena" }
|
|
147
|
+
- { code: "MB", name: "Monza-Brianza" }
|
|
148
|
+
- { code: "NA", name: "Napoli" }
|
|
149
|
+
- { code: "NO", name: "Novara" }
|
|
150
|
+
- { code: "NU", name: "Nuoro" }
|
|
151
|
+
- { code: "OR", name: "Oristano" }
|
|
152
|
+
- { code: "PD", name: "Padova" }
|
|
153
|
+
- { code: "PA", name: "Palermo" }
|
|
154
|
+
- { code: "PR", name: "Parma" }
|
|
155
|
+
- { code: "PV", name: "Pavia" }
|
|
156
|
+
- { code: "PG", name: "Perugia" }
|
|
157
|
+
- { code: "PU", name: "Pesaro e Urbino" }
|
|
158
|
+
- { code: "PE", name: "Pescara" }
|
|
159
|
+
- { code: "PC", name: "Piacenza" }
|
|
160
|
+
- { code: "PI", name: "Pisa" }
|
|
161
|
+
- { code: "PT", name: "Pistoia" }
|
|
162
|
+
- { code: "PN", name: "Pordenone" }
|
|
163
|
+
- { code: "PZ", name: "Potenza" }
|
|
164
|
+
- { code: "PO", name: "Prato" }
|
|
165
|
+
- { code: "RG", name: "Ragusa" }
|
|
166
|
+
- { code: "RA", name: "Ravenna" }
|
|
167
|
+
- { code: "RC", name: "Reggio Calabria" }
|
|
168
|
+
- { code: "RE", name: "Reggio Emilia" }
|
|
169
|
+
- { code: "RI", name: "Rieti" }
|
|
170
|
+
- { code: "RN", name: "Rimini" }
|
|
171
|
+
- { code: "ROMA", name: "Roma", printed_as: "Roma", note: "the appendix prints the sigla as the whole word 'Roma'; Appendice XII comma 3 substitutes 'RM' on repeater plates" }
|
|
172
|
+
- { code: "RO", name: "Rovigo" }
|
|
173
|
+
- { code: "SA", name: "Salerno" }
|
|
174
|
+
- { code: "SS", name: "Sassari" }
|
|
175
|
+
- { code: "SV", name: "Savona" }
|
|
176
|
+
- { code: "SI", name: "Siena" }
|
|
177
|
+
- { code: "SR", name: "Siracusa" }
|
|
178
|
+
- { code: "SO", name: "Sondrio" }
|
|
179
|
+
- { code: "SU", name: "Sud Sardegna", added_by: "D.P.R. 20 luglio 2017, n. 140", period: { start: 2017 } }
|
|
180
|
+
- { code: "TA", name: "Taranto" }
|
|
181
|
+
- { code: "TE", name: "Teramo" }
|
|
182
|
+
- { code: "TR", name: "Terni" }
|
|
183
|
+
- { code: "TO", name: "Torino" }
|
|
184
|
+
- { code: "TP", name: "Trapani" }
|
|
185
|
+
- { code: "TN", name: "Trento", emblem_note: "La N è sormontata dallo stemma" }
|
|
186
|
+
- { code: "TV", name: "Treviso" }
|
|
187
|
+
- { code: "TS", name: "Trieste" }
|
|
188
|
+
- { code: "UD", name: "Udine" }
|
|
189
|
+
- { code: "VA", name: "Varese" }
|
|
190
|
+
- { code: "VE", name: "Venezia" }
|
|
191
|
+
- { code: "VB", name: "Verbano Cusio Ossola" }
|
|
192
|
+
- { code: "VC", name: "Vercelli" }
|
|
193
|
+
- { code: "VR", name: "Verona" }
|
|
194
|
+
- { code: "VV", name: "Vibo Valentia", printed_as: "Vibo Valenzia", sic: "the appendix misprints the province name as 'Vibo Valenzia'; the code VV is unaffected" }
|
|
195
|
+
- { code: "VI", name: "Vicenza" }
|
|
196
|
+
- { code: "VT", name: "Viterbo" }
|
|
197
|
+
|
|
198
|
+
# WITHDRAWN, NOT DELETED. These four sigle were removed from Appendice XI by
|
|
199
|
+
# D.P.R. 20 luglio 2017, n. 140 when the four Sardinian provinces were
|
|
200
|
+
# reorganised into Sud Sardegna, and vehicles carrying them "possono continuare a
|
|
201
|
+
# circolare fino a una nuova immatricolazione o fino alla cessazione dalla
|
|
202
|
+
# circolazione" (art. 2 comma 2). A decoder must still resolve them.
|
|
203
|
+
province_sigle_withdrawn:
|
|
204
|
+
- { code: "CI", name: "Carbonia-Iglesias", period: { start: 1998, end: 2017 }, withdrawn_by: "D.P.R. 20 luglio 2017, n. 140" }
|
|
205
|
+
- { code: "VS", name: "Medio Campidano", period: { start: 1998, end: 2017 }, withdrawn_by: "D.P.R. 20 luglio 2017, n. 140" }
|
|
206
|
+
- { code: "OG", name: "Ogliastra", period: { start: 1998, end: 2017 }, withdrawn_by: "D.P.R. 20 luglio 2017, n. 140" }
|
|
207
|
+
- { code: "OT", name: "Olbia-Tempio", period: { start: 1998, end: 2017 }, withdrawn_by: "D.P.R. 20 luglio 2017, n. 140" }
|
|
208
|
+
|
|
209
|
+
# ---------------------------------------------------------------------------
|
|
210
|
+
# Appendice XI comma 1 — the M.C.T.C. provincial office sigle. The bare region
|
|
211
|
+
# letters (A, B, C, ...) are HEADINGS in the appendix's own layout, not codes: no
|
|
212
|
+
# targa provvisoria carries a bare letter. Recorded because they explain the
|
|
213
|
+
# numbering and because F, G, I, J, K, Q, U, Y and Z are unused, which is itself
|
|
214
|
+
# a useful validation fact.
|
|
215
|
+
# ---------------------------------------------------------------------------
|
|
216
|
+
mctc_offices:
|
|
217
|
+
used_by: "plates/it.yml#it-temporary-provvisoria"
|
|
218
|
+
maintenance: "art. 255 comma 2 lett. a): the list 'può essere aggiornato con decreto del Ministro dei trasporti e della navigazione, a seguito dell'istituzione di ulteriori province' — it grows by ministerial decree, so rows need period discipline as provinces are created"
|
|
219
|
+
regions:
|
|
220
|
+
A: "Piemonte e Valle d'Aosta"
|
|
221
|
+
B: "Lombardia"
|
|
222
|
+
C: "Trentino Alto Adige"
|
|
223
|
+
D: "Veneto"
|
|
224
|
+
E: "Friuli Venezia Giulia"
|
|
225
|
+
H: "Liguria"
|
|
226
|
+
L: "Emilia Romagna"
|
|
227
|
+
M: "Toscana"
|
|
228
|
+
N: "Umbria"
|
|
229
|
+
O: "Marche"
|
|
230
|
+
P: "Lazio"
|
|
231
|
+
R: "Abruzzo e Molise"
|
|
232
|
+
S: "Campania e Basilicata"
|
|
233
|
+
T: "Puglia"
|
|
234
|
+
V: "Calabria"
|
|
235
|
+
W: "Sicilia"
|
|
236
|
+
X: "Sardegna"
|
|
237
|
+
regions_note: "F, G, I, J, K, Q, U, Y and Z are not used as region letters; the groupings are administrative and pair Piemonte with Valle d'Aosta, Abruzzo with Molise and Campania with Basilicata."
|
|
238
|
+
codes:
|
|
239
|
+
- { code: "A1", name: "Alessandria" }
|
|
240
|
+
- { code: "A2", name: "Aosta" }
|
|
241
|
+
- { code: "A3", name: "Asti" }
|
|
242
|
+
- { code: "A4", name: "Cuneo" }
|
|
243
|
+
- { code: "A5", name: "Novara" }
|
|
244
|
+
- { code: "A6", name: "Torino" }
|
|
245
|
+
- { code: "A7", name: "Vercelli" }
|
|
246
|
+
- { code: "A8", name: "Biella" }
|
|
247
|
+
- { code: "A9", name: "Verbania" }
|
|
248
|
+
- { code: "B1", name: "Bergamo" }
|
|
249
|
+
- { code: "B2", name: "Brescia" }
|
|
250
|
+
- { code: "B3", name: "Como" }
|
|
251
|
+
- { code: "B4", name: "Cremona" }
|
|
252
|
+
- { code: "B5", name: "Mantova" }
|
|
253
|
+
- { code: "B6", name: "Milano" }
|
|
254
|
+
- { code: "B7", name: "Pavia" }
|
|
255
|
+
- { code: "B8", name: "Sondrio" }
|
|
256
|
+
- { code: "B9", name: "Varese" }
|
|
257
|
+
- { code: "B10", name: "Lecco" }
|
|
258
|
+
- { code: "B11", name: "Lodi" }
|
|
259
|
+
- { code: "B12", name: "Monza-Brianza", printed_as: "B 12", sic: "the appendix prints a space inside the code" }
|
|
260
|
+
- { code: "C1", name: "Bolzano" }
|
|
261
|
+
- { code: "C2", name: "Trento" }
|
|
262
|
+
- { code: "D1", name: "Belluno" }
|
|
263
|
+
- { code: "D2", name: "Padova" }
|
|
264
|
+
- { code: "D3", name: "Rovigo" }
|
|
265
|
+
- { code: "D4", name: "Treviso" }
|
|
266
|
+
- { code: "D5", name: "Venezia" }
|
|
267
|
+
- { code: "D6", name: "Verona" }
|
|
268
|
+
- { code: "D7", name: "Vicenza" }
|
|
269
|
+
- { code: "E1", name: "Gorizia" }
|
|
270
|
+
- { code: "E2", name: "Udine" }
|
|
271
|
+
- { code: "E3", name: "Pordenone" }
|
|
272
|
+
- { code: "E4", name: "Trieste" }
|
|
273
|
+
- { code: "H1", name: "Genova" }
|
|
274
|
+
- { code: "H2", name: "Imperia" }
|
|
275
|
+
- { code: "H3", name: "La Spezia" }
|
|
276
|
+
- { code: "H4", name: "Savona" }
|
|
277
|
+
- { code: "L1", name: "Bologna" }
|
|
278
|
+
- { code: "L2", name: "Ferrara" }
|
|
279
|
+
- { code: "L3", name: "Forlì", printed_as: "Forli'" }
|
|
280
|
+
- { code: "L4", name: "Modena" }
|
|
281
|
+
- { code: "L5", name: "Parma" }
|
|
282
|
+
- { code: "L6", name: "Piacenza" }
|
|
283
|
+
- { code: "L7", name: "Ravenna" }
|
|
284
|
+
- { code: "L8", name: "Reggio Emilia" }
|
|
285
|
+
- { code: "L9", name: "Rimini" }
|
|
286
|
+
- { code: "M1", name: "Arezzo" }
|
|
287
|
+
- { code: "M2", name: "Firenze" }
|
|
288
|
+
- { code: "M3", name: "Grosseto" }
|
|
289
|
+
- { code: "M4", name: "Livorno" }
|
|
290
|
+
- { code: "M5", name: "Lucca" }
|
|
291
|
+
- { code: "M6", name: "Massa Carrara" }
|
|
292
|
+
- { code: "M7", name: "Pisa" }
|
|
293
|
+
- { code: "M8", name: "Pistoia" }
|
|
294
|
+
- { code: "M9", name: "Siena" }
|
|
295
|
+
- { code: "M10", name: "Prato" }
|
|
296
|
+
- { code: "N1", name: "Perugia" }
|
|
297
|
+
- { code: "N2", name: "Terni" }
|
|
298
|
+
- { code: "O1", name: "Ancona" }
|
|
299
|
+
- { code: "O2", name: "Ascoli Piceno" }
|
|
300
|
+
- { code: "O3", name: "Macerata" }
|
|
301
|
+
- { code: "O4", name: "Pesaro" }
|
|
302
|
+
- { code: "O5", name: "Fermo", printed_as: "05", sic: "the appendix prints a zero where every other Marche code has the letter O; read as O5" }
|
|
303
|
+
- { code: "P1", name: "Frosinone" }
|
|
304
|
+
- { code: "P2", name: "Latina" }
|
|
305
|
+
- { code: "P3", name: "Rieti" }
|
|
306
|
+
- { code: "P4", name: "Roma" }
|
|
307
|
+
- { code: "P5", name: "Viterbo" }
|
|
308
|
+
- { code: "R1", name: "Campobasso" }
|
|
309
|
+
- { code: "R2", name: "Chieti" }
|
|
310
|
+
- { code: "R3", name: "L'Aquila" }
|
|
311
|
+
- { code: "R4", name: "Pescara" }
|
|
312
|
+
- { code: "R5", name: "Teramo" }
|
|
313
|
+
- { code: "R6", name: "Isernia" }
|
|
314
|
+
- { code: "S1", name: "Avellino" }
|
|
315
|
+
- { code: "S2", name: "Benevento" }
|
|
316
|
+
- { code: "S3", name: "Caserta" }
|
|
317
|
+
- { code: "S4", name: "Matera" }
|
|
318
|
+
- { code: "S5", name: "Napoli" }
|
|
319
|
+
- { code: "S6", name: "Potenza" }
|
|
320
|
+
- { code: "S7", name: "Salerno" }
|
|
321
|
+
- { code: "T1", name: "Bari" }
|
|
322
|
+
- { code: "T2", name: "Brindisi" }
|
|
323
|
+
- { code: "T3", name: "Foggia" }
|
|
324
|
+
- { code: "T4", name: "Lecce" }
|
|
325
|
+
- { code: "T5", name: "Taranto" }
|
|
326
|
+
- { code: "T6", name: "Barletta-Andria-Trani" }
|
|
327
|
+
- { code: "V1", name: "Catanzaro" }
|
|
328
|
+
- { code: "V2", name: "Cosenza" }
|
|
329
|
+
- { code: "V3", name: "Reggio Calabria" }
|
|
330
|
+
- { code: "V4", name: "Crotone" }
|
|
331
|
+
- { code: "V5", name: "Vibo Valentia" }
|
|
332
|
+
- { code: "W1", name: "Agrigento" }
|
|
333
|
+
- { code: "W2", name: "Caltanissetta" }
|
|
334
|
+
- { code: "W3", name: "Catania" }
|
|
335
|
+
- { code: "W4", name: "Enna" }
|
|
336
|
+
- { code: "W5", name: "Messina" }
|
|
337
|
+
- { code: "W6", name: "Palermo" }
|
|
338
|
+
- { code: "W7", name: "Ragusa" }
|
|
339
|
+
- { code: "W8", name: "Siracusa" }
|
|
340
|
+
- { code: "W9", name: "Trapani" }
|
|
341
|
+
- { code: "X1", name: "Cagliari" }
|
|
342
|
+
- { code: "X2", name: "Nuoro" }
|
|
343
|
+
- { code: "X3", name: "Sassari" }
|
|
344
|
+
- { code: "X4", name: "Oristano" }
|
|
345
|
+
gaps:
|
|
346
|
+
- "No office code exists for Sud Sardegna, nor for the four Sardinian provinces withdrawn in 2017 — the office list and the province list were maintained on different schedules and do not correspond one-to-one."
|
|
347
|
+
- "Verbania (A9) is the office; the province is Verbano-Cusio-Ossola (VB). The names are not interchangeable."
|
|
348
|
+
- "The appendix gives no office for the pre-1992 provinces that no longer exist, and none for provinces created after the last amendment to comma 1 — recorded gap."
|