Code, design and documents 54 files
.gitignore +1 −0
@@ -10,2 +10,3 @@ tmp/
# Locally supplied research books; bibliography and review notes live in docs.
/books/
+renders/
README.md +2 −0
@@ -28,4 +28,6 @@ Six segments, each scored 0–10 and combined by weight:
A 10 means no cannabis-specific rule at all — treated like tomatoes. Every cap, licence and registry costs points, so even the most liberal countries land around 50.
+Scores over time are rebuilt from each country's history in `changes.yaml`. Before its first rule on cannabis a country scores **100**: no rule at all, the tomato standard. The first rule that limited cannabis counts as the first change, even if it was not a cannabis law as such (a poisons or pharmacy act naming it, licences to sell or grow, a state monopoly, a ban on growing, a colonial power's drug law extended to a territory). A country with no known first law gets an estimated one, spread across 1925–1961.
+
## Run it
datasets/datasets.yaml +601 −115
@@ -4,5 +4,7 @@
# here for its file.
#
-# file the CSV in this folder, published unchanged at /data/datasets/<file>
+# file the CSV in this folder, published unchanged at /data/datasets/<file>; or, for a
+# dataset published as a new file each time (a yearly survey), a list of
+# { file, edition }, one per edition, whose rows take the edition's year
# origin how the file was made: downloaded as published, or transcribed, and when
# original optional: the publisher's own file, kept and published beside an extract made from it
@@ -10,6 +12,7 @@
# "de", "us") or country names (`by: name`, matched to the `name:` of each country
# file, ignoring accents and punctuation); `aliases` maps names that differ
-# year optional: a column with the year. Only the latest year is used, unless
-# `keep: all`, which keeps every year as a series
+# year optional: a column with the year of each row. Every dataset is kept as a series,
+# one row per country and year, so that profiles can chart it; the site's own
+# figures and the map use the latest year
# fields our name for each figure → the column it is read from, its decimals, `type: boolean`
# for a column that is "true" or empty or `text`, and `about`, what the site uses it
@@ -77,37 +80,58 @@
also: and every country profile
-- id: population
- file: population.csv
- name: Population
- publisher: Our World in Data and the World Bank
- credit: Our World in Data, World Bank
- title: Our World in Data — Population (long-run estimates)
- url: https://ourworldindata.org/population-sources
- data_url: https://data.worldbank.org/indicator/SP.POP.TOTL
- data_label: World Bank — Population, total
- when: 1900 to 2025
+- id: youth_use
+ file: unodc-cannabis-use-youth.csv
+ original: unodc-wdr2026-1.4-prevalence-youth.xlsx
+ name: Cannabis use at 15 and 16
+ publisher: United Nations Office on Drugs and Crime (UNODC)
+ credit: UNODC
+ title: UNODC — World Drug Report 2026, statistical annex, table 1.4 Prevalence of drug use in the youth population, national data
+ url: https://www.unodc.org/unodc/en/data-and-analysis/world-drug-report-2026-annex.html
+ data_url: https://www.unodc.org/documents/data-and-analysis/WDR_2026/Annex/1.4_prevalence_of_drug_use_in_the_youth_population_national_data_national_data.xlsx
+ data_label: table 1.4, spreadsheet
+ when: school surveys from 2003 to 2024
about: >-
- How many people live in each country and territory: a figure every ten years from 1900 to
- 2020 and the latest one. It weights the population-weighted world average, shown beside the
- plain one, and sorts the rankings by population.
+ The share of 15- and 16-year-olds who used cannabis in the past year, mostly from school
+ surveys such as ESPAD, as each government reports them to UNODC. Only surveys of this age
+ group are used, so that countries can be compared: some large countries, Germany, France and
+ Spain among them, report only other age bands and are left out.
origin: >-
- Compiled for this site on 4 October 2026 and moved into this file on 20 October 2026. For 196
- countries the figures from 1900 to 2020 are Our World in Data's long-run series and the latest
- (mostly 2025) is the World Bank's. 23 dependencies and disputed territories have a single
- recent figure only. Borders are today's. Not a copy of a published file.
+ The publisher's spreadsheet was downloaded on 21 October 2026 and is published here
+ unchanged. The CSV is extracted from it by scripts/extract-unodc.py (youth): sheet "Cannabis",
+ rows covering ages 15 to 16 with a past-year figure, the latest survey for each country. Rows
+ about herb or resin only, or about one part of a country, are left out, and UNODC's age
+ group is written out ("(SS) 15 - 16" as "ages 15–16, school survey").
profile:
- headline: "{population} people in {year}"
- years: [1900, 1950, 2000]
+ headline: "{past_year} in the past year"
+ details: "{lifetime} ever · {past_month} in the past month · {year} · {coverage}"
country: { column: country, by: id }
- year: { column: year, keep: all }
fields:
- population: { column: population, about: "People living there in that year" }
- pages:
- - { label: the world average by population, path: "" }
- - { label: the population column of the rankings, path: "#rankings" }
- - { label: research progress weighted by population, path: research/ }
+ past_year: { column: past_year, format: percent, about: "Map colour and profile" }
+ lifetime: { column: lifetime, format: percent }
+ past_month: { column: past_month, format: percent }
+ year: { column: year, format: text }
+ coverage: { column: coverage, type: text, about: "Age group, and whether it was a school survey" }
+ map:
+ field: past_year
+ format: percent
+ group: Use
+ slug: youth-cannabis-use
+ label: Use at 15 and 16
+ missing: No survey of 15- and 16-year-olds reported to UNODC
+ steps: [[0, "Under 3%"], [3, "3–7%"], [7, "7–12%"], [12, "12–18%"], [18, "18% or more"]]
+ title: Cannabis use among 15- and 16-year-olds, by country
+ lede: >-
+ The share of 15- and 16-year-olds who used cannabis in the past year, from the latest school
+ survey each country reported to UNODC. The stronger the blue, the higher the share.
+ sub: >-
+ The stronger the blue, the more 15- and 16-year-olds used cannabis in the past year.
+ Countries without a survey of this age group are hatched.
+ note: >-
+ UNODC World Drug Report 2026, table 1.4: past-year use among 15- and 16-year-olds, latest
+ survey reported. Survey years differ between countries.
- id: pew_marijuana
- file: pew-marijuana-morality-2026.csv
+ file:
+ - { file: pew-marijuana-morality-2026.csv, edition: 2025 }
rail: true
origin: >-
@@ -158,4 +182,488 @@
for context and are not part of the score.
+- id: cannabis_offences
+ file: euda-cannabis-use-offences.csv
+ original: euda-sb2026-dlo-03-2-0-cannabis-use-offences.xml
+ name: Offences for cannabis use or possession
+ publisher: European Union Drugs Agency (EUDA)
+ credit: EUDA
+ title: EUDA — Statistical Bulletin 2026, drug law offences, cannabis, use (table DLO-03-2-0)
+ url: https://www.euda.europa.eu/data/stats2026/dlo_en#displayTable:DLO-03-2-0
+ data_url: https://www.euda.europa.eu/modules/sbdata/SBDataService2026.cfc?method=fetchxlsx&tableid=DLO-03-2-0
+ data_label: table DLO-03-2-0, spreadsheet
+ when: 2007 to 2024
+ about: >-
+ Offences of using or possessing cannabis recorded each year, as European countries report
+ them to the EUDA: cannabis alone, unlike UNODC's figures for all drugs. Countries record
+ offences or offenders, and define them, in different ways, so compare a country with itself
+ over time rather than with its neighbours. The EUDA notes that Slovenia counted only
+ use-related offences in 2023, that Portugal's figures for 2017 to 2021 lack one police force,
+ and that Greece's include all cannabis products since 2018. Shown per 100,000 people using
+ today's population.
+ origin: >-
+ The EUDA's site refuses scripted downloads, so the table was read in a browser on 21 October
+ 2026 from its data service (the XML behind the table) and saved unchanged; its SHA-256 was
+ checked against the browser's copy. scripts/extract-euda.py (cannabis_offences) turns it into
+ one row per country and year with a figure.
+ profile:
+ headline: "{per} per 100,000 people"
+ details: "{offences} offences in {year}"
+ each: "{offences} in {year}"
+ years: [2010, 2020]
+ country: { column: country, by: id }
+ year: { column: year }
+ fields:
+ offences: { column: offences, about: "Offences recorded: map colour (per 100,000) and profile" }
+ map:
+ field: offences
+ per: 100000
+ format: rate
+ group: Law
+ since: 2020
+ slug: cannabis-offences-europe
+ label: Cannabis offences (Europe)
+ missing: No cannabis-use offences reported to the EUDA since 2020
+ steps: [[0, "Under 10"], [10, "10–50"], [50, "50–100"], [100, "100–250"], [250, "250 or more"]]
+ title: Offences for cannabis use or possession in Europe
+ lede: >-
+ Offences of using or possessing cannabis per 100,000 people, in the latest year each
+ European country reported to the EUDA since 2020. The stronger the blue, the more offences.
+ sub: >-
+ The stronger the blue, the more cannabis use or possession offences per 100,000 people.
+ Countries count differently; those without a report since 2020 are hatched.
+ note: >-
+ EUDA Statistical Bulletin 2026, table DLO-03-2-0: cannabis use offences, latest year since
+ 2020, per 100,000 people. Not part of the score.
… 602 more linesdatasets/euda-sb2026-dlo-03-2-0-cannabis-use-offences.xml +1 −0
@@ -0,0 +1 @@
+<table><caption>Drug law offences > Number of DLOs > Offences/Offenders > Cannabis > Use</caption><table-headers><line><column>Country</column><column>2024</column><column>2023</column><column>2022</column><column>2021</column><column>2020</column><column>2019</column><column>2018</column><column>2017</column><column>2016</column><column>2015</column><column>2014</column><column>2013</column><column>2012</column><column>2011</column><column>2010</column><column>2009</column><column>2008</column><column>2007</column></line></table-headers><table-body><line><column>Austria</column><column></column><column>19672</column><column>19909</column><column>19919</column><column>22778</column><column>24618</column><column>24680</column><column>28890</column><column>23977</column><column>20456</column><column>21272</column><column>21203</column><column>16052</column><column>16408</column><column>15612</column><column>16053</column><column>13802</column><column>17230</column></line><line><column>Belgium</column><column>34294</column><column>29897</column><column>29572</column><column>28857</column><column>31540</column><column>31688</column><column>30148</column><column>29916</column><column>27080</column><column>28237</column><column>29825</column><column>24039</column><column>20480</column><column>20205</column><column>17137</column><column>18452</column><column>17301</column><column>16844</column></line><line><column>Bulgaria</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>3465</column><column>3557</column><column>3205</column><column>2143</column><column>2266</column><column>1517</column><column>1133</column><column>1477</column></line><line><column>Croatia</column><column>5874</column><column>5593</column><column>5159</column><column>5080</column><column>4810</column><column>5689</column><column>6788</column><column>6253</column><column>5493</column><column>4268</column><column>4866</column><column>3745</column><column>3876</column><column>3937</column><column>3371</column><column>3001</column><column>3223</column><column>3621</column></line><line><column>Cyprus</column><column>602</column><column>664</column><column>563</column><column>512</column><column>606</column><column>692</column><column>862</column><column>703</column><column>643</column><column>690</column><column>799</column><column>718</column><column>731</column><column>658</column><column>532</column><column>436</column><column></column><column>546</column></line><line><column>Czechia</column><column>7688</column><column>7249</column><column>6443</column><column>5253</column><column>4195</column><column>5293</column><column>6176</column><column>5019</column><column>4744</column><column>4224</column><column>500</column><column>479</column><column>372</column><column>330</column><column>264</column><column>125</column><column>138</column><column>106</column></line><line><column>Denmark</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Estonia</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Finland</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>France</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>122439</column><column>124921</column><column>133160</column><column>97460</column></line><line><column>Germany</column><column>61670</column><column>173945</column><column>174876</column><column>181040</column><column>188453</column><column>186455</column><column>179700</column><column>166236</column><column>145915</column><column>132745</column><column>131130</column><column>117443</column><column>106215</column><column>101186</column><column>99562</column><column>102096</column><column>100651</column><column>102931</column></line><line><column>Greece</column><column>8359</column><column>6571</column><column>5764</column><column>5189</column><column>5223</column><column>5779</column><column>8109</column><column>9860</column><column>8172</column><column>8918</column><column>10182</column><column></column><column></column><column>4541</column><column>5901</column><column>8582</column><column>7212</column><column>2777</column></line><line><column>Hungary</column><column>3266</column><column>2920</column><column>3437</column><column>3563</column><column>3269</column><column>3191</column><column>4204</column><column>3391</column><column>2968</column><column>2849</column><column>1425</column><column>3382</column><column>3468</column><column>4161</column><column>3878</column><column>3102</column><column></column><column></column></line><line><column>Ireland</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Italy</column><column>27503</column><column>28026</column><column>25234</column><column>23675</column><column>24785</column><column>31059</column><column>33363</column><column>32791</column><column>26282</column><column>26403</column><column>26663</column><column>26071</column><column>29576</column><column>30099</column><column>29866</column><column>29453</column><column>33964</column><column>36126</column></line><line><column>Latvia</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>187</column><column>135</column><column>125</column><column>130</column><column>155</column><column>151</column><column>94</column><column>111</column><column>28</column><column>112</column></line><line><column>Lithuania</column><column>682</column><column>634</column><column>1330</column><column>1218</column><column>612</column><column>965</column><column>378</column><column>292</column><column>173</column><column>349</column><column>168</column><column>267</column><column>238</column><column>216</column><column>210</column><column>184</column><column>146</column><column>96</column></line><line><column>Luxembourg</column><column>880</column><column>1021</column><column>876</column><column>1616</column><column>1585</column><column>1753</column><column>1149</column><column>13</column><column>3</column><column></column><column></column><column>816</column><column>768</column><column>870</column><column>900</column><column>651</column><column>650</column><column></column></line><line><column>Malta</column><column>1</column><column>32</column><column>3</column><column>94</column><column>100</column><column>215</column><column>297</column><column>295</column><column>338</column><column>205</column><column>213</column><column>159</column><column>96</column><column>45</column><column>64</column><column>120</column><column>140</column><column>153</column></line><line><column>Netherlands</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>2413</column><column>2111</column></line><line><column>Norway</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Poland</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>40949</column><column>38027</column><column>35838</column><column>33422</column><column>25986</column><column>23818</column></line><line><column>Portugal</column><column>6637</column><column>9247</column><column>7020</column><column>5194</column><column>5336</column><column>8328</column><column>9257</column><column>10971</column><column>9782</column><column>9175</column><column>7417</column><column>6652</column><column>6212</column><column>4934</column><column>4920</column><column>5429</column><column>4163</column><column>4104</column></line><line><column>Romania</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Slovakia</column><column>235</column><column>252</column><column>288</column><column>336</column><column>292</column><column>331</column><column>247</column><column>207</column><column></column><column>211</column><column>330</column><column>278</column><column>397</column><column>372</column><column>417</column><column>341</column><column>270</column><column>235</column></line><line><column>Slovenia</column><column>2733</column><column>2782</column><column>2751</column><column>2759</column><column>3131</column><column>3812</column><column></column><column></column><column>2757</column><column></column><column>3095</column><column></column><column></column><column></column><column>2733</column><column>2398</column><column>2463</column><column>2271</column></line><line><column>Spain</column><column>294071</column><column>326584</column><column>323055</column><column>278020</column><column>258379</column><column>318326</column><column>300276</column><column>299353</column><column>320335</column><column>317041</column><column>344415</column><column>347919</column><column>315112</column><column>336236</column><column>282273</column><column>309931</column><column>245792</column><column>193919</column></line><line><column>Sweden</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Türkiye</column><column>83744</column><column>68173</column><column>62782</column><column>52314</column><column>45480</column><column>58041</column><column>53734</column><column>40348</column><column>28633</column><column>26511</column><column>37306</column><column>56286</column><column>59367</column><column>51665</column><column>66952</column><column></column><column></column><column></column></line><line><column>United Kingdom</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>34285</column><column>39159</column><column>42065</column><column>48750</column><column>54549</column><column>57135</column><column>62758</column><column>59750</column><column>55544</column><column>53976</column><column>48299</column></line></table-body><footnote><line><![CDATA[(1) Slovenia: In 2023 only use related offences.]]></line><line><![CDATA[(2) Portugal: Information on offences established by Decree-Law n.er 15/93 of 22 January on the criminal investigation of drug trafficking for 2017-2021 does not reflect all the results obtained at national level since middle 2017, as it does not integrate the data from one police force, so some caution is needed in reading the data.]]></line><line><![CDATA[(3) Greece: Since 2018 figure is the sum DLOs related to cannabis products,]]></line><line><![CDATA[(4) Lithuania: In 2019 LT-3.]]></line></footnote></table>
\ No newline at end of file
datasets/euda-sb2026-ppp-01-1-1-1-1-3-resin-thc.xml +1 −0
@@ -0,0 +1 @@
+<table><caption>Price, purity and potency > Potency/Purity > Retail > Cannabis > Resin (% THC)</caption><table-headers><line><column>Country</column><column>Study</column><column>2024</column><column>2023</column><column>2022</column><column>2021</column><column>2020</column><column>2019</column><column>2018</column><column>2017</column><column>2016</column><column>2015</column><column>2014</column><column>2013</column><column>2012</column><column>2011</column><column>2010</column><column>2009</column><column>2008</column><column>2007</column><column>2006</column><column>2005</column><column>2004</column><column>2003</column><column>2002</column></line></table-headers><table-body><line><column>Austria</column><column>AT-1</column><column>24.21</column><column>23.38</column><column>24.77</column><column>16.05</column><column>16.01</column><column>16.52</column><column>13.19</column><column>13.19</column><column>15.07</column><column>15.22</column><column>12.04</column><column>9.77</column><column>10.95</column><column>9.09</column><column>12.2</column><column>9.8</column><column>10.9</column><column>10</column><column>5.7</column><column>7.6</column><column>10</column><column>8</column><column>2</column></line><line><column>Belgium</column><column>BE-1</column><column>19</column><column>20</column><column>22</column><column>20</column><column>19.2</column><column>15.25</column><column>20.69</column><column>18.2</column><column>16.7</column><column>18.3</column><column>19.2</column><column>15</column><column>17.21</column><column>11.8</column><column>11.8</column><column>10.6</column><column>10.3</column><column>10.4</column><column>8.1</column><column>13.8</column><column>14.58</column><column>15.4</column><column>9.7</column></line><line><column>Bulgaria</column><column>BG-1</column><column></column><column></column><column></column><column></column><column> </column><column></column><column></column><column></column><column></column><column></column><column>18.9</column><column>9.6</column><column>4.2</column><column>5.3</column><column>0.9</column><column>2.9</column><column>4.1</column><column>3.4</column><column>5</column><column>2.2</column><column></column><column>1.5</column><column></column></line><line><column>Croatia</column><column>HR-1</column><column>17.1</column><column>21.9</column><column>18.8</column><column>10.3</column><column>16.9</column><column>22.4</column><column>19.2</column><column>19.5</column><column>12.9</column><column>15.5</column><column>12.1</column><column>22.4</column><column>11.9</column><column>10.5</column><column>10.33</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Cyprus</column><column>CY-1</column><column></column><column></column><column></column><column></column><column></column><column>4</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Czechia</column><column>CZ-1</column><column>24</column><column>29.4</column><column>18.6</column><column>30.5</column><column>21.1</column><column>27.6</column><column>19.5</column><column>21.8525</column><column>23.3</column><column>26.57</column><column>13.88</column><column>19.16</column><column>12.2</column><column>11</column><column>9.3</column><column>4.3</column><column>5.23</column><column>8.1</column><column>11</column><column>7.4</column><column>10</column><column>15</column><column>6.25</column></line><line><column>Denmark</column><column>DK-1</column><column>30.1</column><column>26</column><column>31</column><column>30</column><column>28</column><column>28</column><column>31</column><column>25.3</column><column>27</column><column>28</column><column>29</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Estonia</column><column>EE-1</column><column>26</column><column>23.6</column><column>26</column><column>21</column><column>18</column><column>20</column><column>19</column><column>20</column><column>14.9</column><column>9.6</column><column>10.5</column><column>11.5</column><column>6</column><column>5.1</column><column>5.7</column><column>4</column><column>4.9</column><column></column><column>3.7</column><column>4.38</column><column></column><column></column><column></column></line><line><column>Finland</column><column> </column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>France</column><column>FR-1</column><column>29.6</column><column>28.5</column><column>30</column><column>27.7</column><column>26.7</column><column>28.8</column><column>26.27</column><column>23.5</column><column>23.3</column><column>22.3</column><column>20.7</column><column>17.6</column><column>16</column><column>11.9</column><column>11.1</column><column>10.5</column><column>10</column><column>10</column><column>8.8</column><column>8.8</column><column>9.3</column><column>9</column><column>8</column></line><line><column>Germany</column><column>DE-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>6.7</column><column>8.6</column><column>8.4</column><column></column><column>7.9</column></line><line><column>Greece</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Hungary</column><column>HU-1</column><column>23.1</column><column>21.5</column><column>23.6</column><column>18.2</column><column>19.5</column><column>25</column><column>10.9</column><column>15.2</column><column>13.8</column><column>12</column><column>20</column><column>12</column><column>10</column><column>4</column><column>3.7</column><column>4</column><column>3.2</column><column>2.9</column><column>1.8</column><column>3.5</column><column>4</column><column></column><column></column></line><line><column>Ireland</column><column>IE-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>2.63</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Italy</column><column>IT-1</column><column>28.51</column><column>29</column><column>29</column><column>25</column><column>25</column><column>20</column><column>17</column><column>15.5</column><column>12</column><column>9.7</column><column>11.4</column><column>11.5</column><column>10.6</column><column>6.4</column><column>6</column><column>4.6</column><column>5.8</column><column>5.3</column><column>6</column><column></column><column>8.22</column><column>7.61</column><column>8.29</column></line><line><column>Italy</column><column>IT-2</column><column>29.62</column><column>27.77</column><column>28.9</column><column>25.8</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Latvia</column><column>LV-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>3.8</column><column>4.5</column></line><line><column>Lithuania</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Luxembourg</column><column>LU-1</column><column>33.47</column><column>31.76</column><column>32.21</column><column>30.59</column><column>23.79</column><column>27.84</column><column>26.9</column><column>21.4</column><column>14.31</column><column>17.09</column><column>16.98</column><column>9.82</column><column>9.24</column><column>9.54</column><column>7.3</column><column>12.39</column><column>10.3</column><column>8.52</column><column>7.36</column><column>10.92</column><column>6.94</column><column>7.8</column><column></column></line><line><column>Luxembourg</column><column>LU-2</column><column>27.2</column><column>8.82</column><column>20.08</column><column>26.24</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Luxembourg</column><column>LU-3</column><column>23.7</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Malta</column><column>MT-1</column><column>16</column><column>16</column><column>20</column><column>11.1</column><column>12</column><column>12</column><column>20</column><column>8.5</column><column>7</column><column>7</column><column>7.25</column><column>7.25</column><column>7.5</column><column>7</column><column>6.1</column><column>8.5</column><column>7.5</column><column></column><column>9.2</column><column>10.3</column><column>10</column><column>10</column><column></column></line><line><column>Netherlands</column><column>NL-1</column><column>23.02</column><column>22.11</column><column>19.08</column><column>26.84</column><column>24.3</column><column>24.4</column><column>24.8</column><column>23.5</column><column>20.8</column><column>19.3</column><column>17.8</column><column>14.9</column><column>16.8</column><column>16.1</column><column>14.3</column><column>17.3</column><column>16.2</column><column>13.3</column><column>18.7</column><column>16.9</column><column>18.2</column><column>18.2</column><column>16.6</column></line><line><column>Norway</column><column>NO-1</column><column>26</column><column>29</column><column>29</column><column>25.5</column><column>26</column><column>28</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>13</column><column>10</column><column>14</column><column>10</column><column>7</column><column></column><column></column><column></column><column>7</column><column>5</column></line><line><column>Poland</column><column>PL-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column>9</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>0.6</column><column></column></line><line><column>Portugal</column><column>PT-1</column><column>27.6</column><column>25.8</column><column>21.6</column><column>22.5</column><column>17.5</column><column>24.1</column><column>15.3</column><column>11.4</column><column>14.8</column><column>14</column><column>18</column><column>13.9</column><column>11.7</column><column>9.3</column><column>9.1</column><column>7.2</column><column>7</column><column>6.6</column><column>5.8</column><column>5.4</column><column>6.9</column><column>6</column><column>2.6</column></line><line><column>Romania</column><column>RO-1</column><column></column><column></column><column></column><column>2.83</column><column></column><column></column><column></column><column>11.06</column><column></column><column></column><column>10.71</column><column>8.93</column><column>7.12</column><column>5.32</column><column>4.15</column><column>3.75</column><column>8.3</column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Slovakia</column><column>SK-1</column><column>25.8</column><column>24.6</column><column>24.4</column><column>16.2</column><column>13.6</column><column>16.2</column><column>11.1</column><column>20.6</column><column>22.2</column><column>19.2</column><column>14.5</column><column>20.8</column><column>10.6</column><column>9.6</column><column>9.7</column><column>8.2</column><column>13.4</column><column>8.2</column><column>9.8</column><column>13.2</column><column>15.5</column><column>24.6</column><column>14.9</column></line><line><column>Slovenia</column><column>SI-1</column><column>7.3</column><column>14.1</column><column></column><column>12.1</column><column></column><column>20</column><column>9.4</column><column>15.2</column><column>17.8</column><column>7</column><column>11.6</column><column>5.8</column><column>2.4</column><column>6.4</column><column>6.4</column><column>6.7</column><column>9.4</column><column></column><column>13.6</column><column></column><column></column><column></column><column></column></line><line><column>Spain</column><column>ES-1/ES-2</column><column>31.24</column><column>29</column><column>29.34</column><column>29.98</column><column>28.9</column><column>26.4</column><column>22.42</column><column>17.82</column><column>18.5</column><column></column><column></column><column>14.5</column><column>14.9</column><column>15.3</column><column>14.1</column><column>12.8</column><column>11.1</column><column>11.3</column><column>9.8</column><column>11.8</column><column>13.1</column><column>11.9</column><column>12.4</column></line><line><column>Sweden</column><column>SE-1</column><column>25</column><column>25</column><column>27</column><column>24</column><column>25</column><column>25</column><column>25</column><column>24.2</column><column>24</column><column>19.4</column><column>16.8</column><column>15.5</column><column>14</column><column>10</column><column>9</column><column>11</column><column>9.3</column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Türkiye</column><column>TR-1</column><column>10.45</column><column>9.19</column><column>6.4122</column><column>4.92</column><column>6.092</column><column>4.6</column><column>7.46</column><column>7.46</column><column>25.48</column><column>4.43</column><column></column><column>2.92</column><column>3.21</column><column>4.52</column><column>4.27</column><column>10.03</column><column>6.52</column><column>5.47</column><column></column><column></column><column>2.45</column><column>2.13</column><column>3.08</column></line><line><column>United Kingdom</column><column>UK-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>5.9</column><column></column><column>3.3</column><column>5.25</column><column>3.4</column><column>9.8</column><column>2</column></line></table-body><footnote><line><![CDATA[(1) Austria: 2018 Weighted Mean. Routine analysis of seizures under a specific threshold, when suspicion about the substance and test purchases at street level]]></line><line><![CDATA[(2) Belgium: BE-2 2016-2018.]]></line><line><![CDATA[(3) United Kingdom: England and Wales. In 2008 Home Office potency study.]]></line><line><![CDATA[(4) Spain: ES-2 started in 2016.]]></line><line><![CDATA[(5) Netherlands: random test purchases from coffee shops. Imported cannabis resin.]]></line><line><![CDATA[(6) Luxembourg: (Data Sources LU-1 and LU-2) For both data sources, the exclusion criteria for analysis were updated in 2024. Between 2018 and 2023, samples with THC concentrations below 0.3% were excluded. As of 2024, this threshold was increased to 1%. Excluded samples are consistently omitted from the total sample size (N).]]></line><line><![CDATA[(7) Malta: Potency refers to middle market samples.]]></line><line><![CDATA[(8) Cyprus: Potency refers to middle market samples.]]></line><line><![CDATA[(9) Sweden: Only samples with ≥ 1% THC are included.]]></line><line><![CDATA[(10) Türkiye: The potency of cannabis refers to wholesale seizures; samples over 500 g.]]></line><line><![CDATA[(11) Croatia: All seizures are included for potency analysis, level of the Market is not specified.]]></line><line><![CDATA[(12) Germany: Cannabis resin potency is not given for any specific market level.]]></line></footnote></table>
\ No newline at end of file
datasets/euda-sb2026-ppp-01-1-1-1-2-3-herb-thc.xml +1 −0
@@ -0,0 +1 @@
+<table><caption>Price, purity and potency > Potency/Purity > Retail > Cannabis > Herbal (% THC)</caption><table-headers><line><column>Country</column><column>Study</column><column>2024</column><column>2023</column><column>2022</column><column>2021</column><column>2020</column><column>2019</column><column>2018</column><column>2017</column><column>2016</column><column>2015</column><column>2014</column><column>2013</column><column>2012</column><column>2011</column><column>2010</column><column>2009</column><column>2008</column><column>2007</column><column>2006</column><column>2005</column><column>2004</column><column>2003</column><column>2002</column></line></table-headers><table-body><line><column>Austria</column><column>AT-1</column><column>12.67</column><column>10.32</column><column>9.15</column><column>9.1</column><column>6.11</column><column>7.03</column><column>9.64</column><column>9.64</column><column>10.75</column><column>9.82</column><column>8.94</column><column>9.56</column><column>9.71</column><column>7.02</column><column>7.5</column><column>5.9</column><column>7.2</column><column>6.7</column><column>7.2</column><column>5.6</column><column>4.8</column><column></column><column>9</column></line><line><column>Belgium</column><column>BE-1</column><column>14</column><column>13</column><column>15</column><column>12</column><column>10.9</column><column>7.88</column><column>13.69</column><column>11.84</column><column>12.11</column><column>21.7</column><column>13</column><column>10.41</column><column>13.17</column><column>10.7</column><column>11.1</column><column>9.9</column><column>9.1</column><column>9.2</column><column>6.7</column><column>10.3</column><column>13.29</column><column>13.8</column><column>6</column></line><line><column>Bulgaria</column><column>BG-1</column><column>13.96</column><column>10.92</column><column>13.1</column><column>12.15</column><column>10.38</column><column>9</column><column>12.7</column><column>12.6</column><column>12</column><column>12.3</column><column>13.1</column><column>9.1</column><column>3.5</column><column>3.7</column><column>7.5</column><column>2.4</column><column>1.6</column><column>1.5</column><column>2</column><column>2.4</column><column></column><column>2</column><column></column></line><line><column>Croatia</column><column>HR-1</column><column>9.6</column><column>8.8</column><column>8.2</column><column>6.8</column><column>7</column><column>7.8</column><column>10</column><column>9.5</column><column>10.7</column><column>5.7</column><column>8.9</column><column>7.8</column><column>6.3</column><column>5.7</column><column>5.5</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Cyprus</column><column>CY-1</column><column>2.93</column><column>8.2</column><column>8.44</column><column>7.25</column><column>10.18</column><column>18.06</column><column>16.57</column><column>14.63</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Czechia</column><column>CZ-1</column><column>11.5</column><column>11.1</column><column>11.1</column><column>10.7</column><column>10.6</column><column>10.5</column><column>9.4</column><column>10.7426316</column><column>7.41</column><column>8.334</column><column>8.181</column><column>9.98</column><column>7.1</column><column>7.2</column><column>7.7</column><column>4.2</column><column>5.5</column><column>4.7</column><column>4.5</column><column>3.8</column><column>3</column><column>9.2</column><column></column></line><line><column>Denmark</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Estonia</column><column>EE-1</column><column>15</column><column>14.7</column><column>13</column><column>13</column><column>14</column><column>14</column><column>15.3</column><column>15</column><column>13.9</column><column>13.5</column><column>12.7</column><column>13.4</column><column>13.4</column><column>11.1</column><column>10</column><column>8</column><column>6.6</column><column></column><column>2</column><column>3.31</column><column></column><column></column><column></column></line><line><column>Finland</column><column>FI-1</column><column>17</column><column>16</column><column>11</column><column>12</column><column>5.1</column><column>9.2</column><column>6.1</column><column>10.6</column><column>5.3</column><column>6.8</column><column>2.7</column><column></column><column></column><column>4.6</column><column>5.1</column><column>4.6</column><column>4.9</column><column>4.3</column><column>3.4</column><column></column><column></column><column>1</column><column>2</column></line><line><column>France</column><column>FR-1</column><column>14.3</column><column>14.1</column><column>14</column><column>12.9</column><column>13</column><column>13.5</column><column>11.27</column><column>12.04</column><column>11.4</column><column>11.4</column><column>13</column><column>12.7</column><column>10</column><column>10.6</column><column>9.8</column><column>8.5</column><column>5.8</column><column>7.5</column><column>7.8</column><column>6.1</column><column>8</column><column>8.5</column><column>8</column></line><line><column>Germany</column><column>DE-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>8.3</column><column>10.6</column><column>11</column><column></column><column>8.4</column></line><line><column>Greece</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Hungary</column><column>HU-1</column><column>10.5</column><column>9.33</column><column>8.83</column><column>8.38</column><column>8.38</column><column>8.6</column><column>8.9</column><column>8.9</column><column>8.7</column><column>6.8</column><column>7.2</column><column>6.5</column><column>5</column><column>1</column><column>1.3</column><column>1.34</column><column>1.4</column><column>1.2</column><column>1.8</column><column>1.7</column><column>1.7</column><column>1.2</column><column>0.5</column></line><line><column>Ireland</column><column>IE-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>7.9</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Italy</column><column>IT-1</column><column>14.99</column><column>14</column><column>13</column><column>12</column><column>11</column><column>11</column><column>12</column><column>12</column><column>10.8</column><column>8.9</column><column>10.5</column><column>12.4</column><column>8.5</column><column>6.4</column><column>7.8</column><column>5.9</column><column>4.7</column><column>2.2</column><column>5.4</column><column></column><column>5.78</column><column>7.85</column><column>4.89</column></line><line><column>Italy</column><column>IT-2</column><column>13.34</column><column>13.43</column><column>13</column><column>12.5</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Latvia</column><column>LV-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>2.2</column><column>1.5</column></line><line><column>Lithuania</column><column></column><column></column><column></column><column></column><column></column><column> </column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Luxembourg</column><column>LU-1</column><column>16.43</column><column>14.26</column><column>13.29</column><column>13.39</column><column>11.78</column><column>12.81</column><column>11.7</column><column>12.3</column><column>9.92</column><column>11.33</column><column>11.22</column><column>8.48</column><column>9.1</column><column>11.28</column><column>11.84</column><column>11.18</column><column>9.75</column><column>10.21</column><column></column><column></column><column></column><column></column><column>7.96</column></line><line><column>Luxembourg</column><column>LU-2</column><column>12.63</column><column>4.75</column><column>8.13</column><column>13.07</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Malta</column><column>MT-1</column><column>8.1</column><column>6.49</column><column>11.1</column><column>11.1</column><column>20</column><column>20</column><column>21</column><column>8</column><column>7.5</column><column>6</column><column>7</column><column>6.75</column><column>7</column><column>7.25</column><column>5.35</column><column>6.25</column><column>4.5</column><column></column><column>5.5</column><column>8.5</column><column>4.7</column><column>7</column><column></column></line><line><column>Netherlands</column><column>NL-1</column><column>5.59</column><column>3.96</column><column>3.39</column><column>2.4</column><column>4</column><column>4.8</column><column>3.7</column><column>6.6</column><column>6.9</column><column>5.8</column><column>4.8</column><column>4.8</column><column>5.1</column><column>5.7</column><column>6.6</column><column>9.9</column><column>8.4</column><column>6</column><column>5.5</column><column>6.7</column><column>7</column><column>20.3</column><column>18</column></line><line><column>Norway</column><column>NO-1</column><column>15</column><column>14</column><column>15</column><column>14.8</column><column>17</column><column>12</column><column></column><column></column><column></column><column></column><column></column><column></column><column>10.8</column><column>6.1</column><column>6</column><column>3.8</column><column>4.5</column><column>3</column><column></column><column></column><column></column><column>4</column><column>8</column></line><line><column>Poland</column><column>PL-1</column><column>14.09</column><column>13.01</column><column>11.4</column><column>10.44</column><column>10.29</column><column>10.12</column><column>11.82</column><column>10.56</column><column>9.9</column><column>10</column><column>11</column><column>9.81</column><column>8.69</column><column>9.63</column><column>7.6</column><column>7.7</column><column>6.85</column><column>5.22</column><column>1.34</column><column>1.01</column><column>0.6</column><column></column><column></column></line><line><column>Portugal</column><column>PT-1</column><column>9.9</column><column>9.6</column><column>12.3</column><column>7.8</column><column>6.7</column><column>6.9</column><column>8.1</column><column>8.3</column><column>7.2</column><column>8.3</column><column>7.8</column><column>6.6</column><column>5.4</column><column>5.2</column><column>5.2</column><column>3.8</column><column>4.8</column><column>3.9</column><column>6.3</column><column>3</column><column>3.5</column><column>1.4</column><column>3.1</column></line><line><column>Romania</column><column>RO-1</column><column></column><column></column><column>0.37</column><column>1.71</column><column>17.59</column><column>5.72</column><column></column><column>14.41</column><column></column><column>12.76</column><column>15.47</column><column>9.45</column><column>6.34</column><column>6.9</column><column>4.67</column><column>2.27</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Slovakia</column><column>SK-1</column><column>11.4</column><column>11.2</column><column>10.1</column><column>11.2</column><column>10.6</column><column>10.8</column><column>10.3</column><column>10.8</column><column></column><column>12.1</column><column>9</column><column>7.1</column><column>9.2</column><column>7.7</column><column>7.7</column><column>12.4</column><column>7.6</column><column>4.9</column><column>6.4</column><column>6.1</column><column>2.6</column><column>3.8</column><column>3.1</column></line><line><column>Slovenia</column><column>SI-1</column><column>8.1</column><column>9.3</column><column>2.3</column><column>3.7</column><column></column><column>7.9</column><column>6.3</column><column>10.9</column><column>17.8</column><column>7.2</column><column>8.5</column><column>7.5</column><column>7</column><column>8.8</column><column>7.4</column><column>7</column><column>8.7</column><column>5.3</column><column></column><column></column><column></column><column></column><column></column></line><line><column>Spain</column><column>ES-1/ES-2</column><column>15.5</column><column>12.62</column><column>13.1</column><column>13.62</column><column>11.99</column><column>13.59</column><column>10.67</column><column>10.09</column><column>10.1</column><column></column><column></column><column>10.8</column><column>11</column><column>11.2</column><column>9.5</column><column>7.7</column><column>7.8</column><column>7.9</column><column>7.9</column><column>7.3</column><column>7.9</column><column>5.3</column><column>4.5</column></line><line><column>Sweden</column><column>SE-1</column><column>13</column><column>13</column><column>14</column><column>11</column><column></column><column>11</column><column>13</column><column>9.4</column><column>9.2</column><column>8.1</column><column>7.7</column><column></column><column></column><column></column><column></column><column></column><column>4.2</column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Türkiye</column><column>TR-1</column><column>6.78</column><column>7.19</column><column>6.5093</column><column>3.007</column><column>3.007</column><column></column><column>3.31</column><column>3.31</column><column>25.88</column><column>2.65</column><column></column><column>3.81</column><column>3.11</column><column>1.72</column><column>1.82</column><column>4.72</column><column>3.45</column><column>2.94</column><column></column><column>0.37</column><column>0.41</column><column>0.34</column><column>0.35</column></line><line><column>United Kingdom</column><column>UK-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>8.4</column><column></column><column>11.3</column><column>13.48</column><column>12.7</column><column>10.7</column><column>10.8</column></line></table-body><footnote><line><![CDATA[(1) Austria: 2018 Weighted Mean. Routine analysis of seizures under a specific threshold, when suspicion about the substance and test purchases at street level]]></line><line><![CDATA[(2) Belgium: In 2019 "THC-negative" cannabis samples from CBD shops was included, skewing the mean result. Since 2018 samples below 0.5% THC were excluded from the calculation. BE-2 2016-2018.]]></line><line><![CDATA[(3) Bulgaria: 2019 Weighted Mean 9.2]]></line><line><![CDATA[(4) United Kingdom: England and Wales. In 2008 Home Office potency study.]]></line><line><![CDATA[(5) Spain: ES-2 started in 2016.]]></line><line><![CDATA[(6) Netherlands: random test purchases from coffee shops. Imported herbal cannabis. Also available data for Dutch-grown cannabis; Nederwiet (see tables sinsemilla).]]></line><line><![CDATA[(7) Sweden: Since 2021, cannabis buds samples from all levels of the market but mostly middle and wholesale.]]></line><line><![CDATA[(8) Malta: Potency refers to middle market samples.]]></line><line><![CDATA[(9) Luxembourg: (Data Sources LU-1 and LU-2) For both data sources, the exclusion criteria for analysis were updated in 2024. Between 2018 and 2023, samples with THC concentrations below 0.3% were excluded. As of 2024, this threshold was increased to 1%. Excluded samples are consistently omitted from the total sample size (N).]]></line><line><![CDATA[(10) Türkiye: The potency of cannabis refers to wholesale seizures; samples over 500 g.]]></line><line><![CDATA[(11) Cyprus: Potency between 2017-2019 refers to middle market samples.]]></line><line><![CDATA[(12) Croatia: All seizures are included for potency analysis, level of the Market is not specified.]]></line><line><![CDATA[(13) Germany: Mean purity of sinsemilla (%THC): 13.7 (2019); 13.1 (2018); 13.1 (2017); 18.8 (2016). Mean purity of cannabis extract (%THC): 49.3 (2019); 53.4 (2018)]]></line></footnote></table>
\ No newline at end of file
datasets/euda-sb2026-ppp-02-1-1-1-3-resin-price.xml +1 −0
@@ -0,0 +1 @@
+<table><caption>Price, purity and potency > Price (euros) > Retail > Cannabis > Resin (gram)</caption><table-headers><line><column>Country</column><column>Study</column><column>2024</column><column>2023</column><column>2022</column><column>2021</column><column>2020</column><column>2019</column><column>2018</column><column>2017</column><column>2016</column><column>2015</column><column>2014</column><column>2013</column><column>2012</column><column>2011</column><column>2010</column><column>2009</column><column>2008</column><column>2007</column><column>2006</column><column>2005</column><column>2004</column><column>2003</column><column>2002</column></line></table-headers><table-body><line><column>Austria</column><column>AT-1</column><column></column><column></column><column></column><column></column><column> </column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>9</column><column>8</column><column>7</column><column>7</column><column>7</column><column></column><column></column></line><line><column>Belgium-A</column><column>BE-1</column><column>10</column><column>9.7</column><column>9.2</column><column>9.4</column><column>9</column><column>9.4</column><column>10.13</column><column>9.1</column><column>8.1</column><column>8.2</column><column>9.1</column><column>8.41</column><column>8.85</column><column>7.03</column><column>7.2</column><column>6.96</column><column>7.35</column><column>6.53</column><column>6.65</column><column>6.5</column><column></column><column>5.5</column><column></column></line><line><column>Belgium-B</column><column>BE-2</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>10.2</column><column>9.4</column><column>10.16</column><column>9.61</column><column>9.67</column><column>9.51</column><column>8</column><column>7.74</column><column>8.23</column><column>8.7</column><column>6.8</column><column>6.8</column><column>5.5</column><column>5.08</column><column></column><column></column></line><line><column>Bulgaria-A</column><column>BG-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>10.5</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Bulgaria-B</column><column>BG-2</column><column>19.35</column><column>13.54</column><column>12.7</column><column>13.7</column><column>16.3</column><column>9.1</column><column>14.1</column><column>11.5</column><column>12.6</column><column>7.9</column><column>20.4</column><column>14</column><column>10.3</column><column>11.8</column><column>11.5</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Croatia</column><column>HR-1</column><column>6</column><column>6</column><column>6</column><column>6</column><column>6</column><column>5</column><column>4</column><column>11.5</column><column>11.5</column><column>12.5</column><column>10.4</column><column>14</column><column>15</column><column>16</column><column>11.45</column><column>13</column><column>7</column><column>6</column><column>6</column><column>5</column><column></column><column></column><column></column></line><line><column>Cyprus</column><column>CY-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Czechia</column><column>CZ-1</column><column></column><column>12.5</column><column>20</column><column></column><column>10.1</column><column></column><column>9.3</column><column>11.1</column><column>11.1</column><column></column><column>6.3</column><column>6.4</column><column>8</column><column></column><column>8.6</column><column>10.2</column><column>8.9</column><column>9.4</column><column>9.7</column><column>8.4</column><column>8.8</column><column>11</column><column>6.65</column></line><line><column>Denmark</column><column>DK-1</column><column></column><column></column><column>8.5</column><column>12.6</column><column></column><column>9</column><column>9</column><column>16</column><column>16</column><column>10.4</column><column>7.7</column><column></column><column>6.8</column><column>6.8</column><column>6.8</column><column>6</column><column>6.3</column><column>6.3</column><column></column><column></column><column></column><column></column><column>6.6</column></line><line><column>Estonia</column><column>EE-1</column><column></column><column></column><column>18</column><column></column><column> </column><column></column><column></column><column></column><column>20</column><column></column><column>15</column><column>15</column><column>7</column><column></column><column></column><column>19.2</column><column></column><column></column><column></column><column>11.1</column><column>6.3</column><column>12</column><column>14.4</column></line><line><column>Finland</column><column>FI-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>10</column><column>12</column></line><line><column>France-A</column><column>FR-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>7.1</column><column>6.8</column><column></column><column></column><column></column><column>6</column><column>4</column><column>4.9</column><column>3.3</column><column>6</column><column>6.99</column></line><line><column>Germany</column><column>DE-1</column><column>9.7</column><column>9.8</column><column>9.4</column><column>9.6</column><column>9.6</column><column>9.2</column><column>8.9</column><column>9.4</column><column>8.6</column><column>8.2</column><column>8.1</column><column>8</column><column>7.5</column><column>7.2</column><column>7.1</column><column>6.8</column><column>5.9</column><column>5.8</column><column>6.4</column><column>6</column><column>6.1</column><column>6</column><column>6.37</column></line><line><column>Greece</column><column>GR-1</column><column>25</column><column>25</column><column>25</column><column>25</column><column>25</column><column>25</column><column>22.5</column><column>25</column><column>25</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Hungary</column><column>HU-1</column><column></column><column></column><column>9.9</column><column>9.9</column><column>9.8</column><column>9.4</column><column>9.1</column><column>8.3</column><column>8.9</column><column>8.4</column><column>8.4</column><column>8.6</column><column>8.8</column><column>9.4</column><column>8.6</column><column>8.4</column><column>9</column><column>9.3</column><column>8.4</column><column>9.3</column><column>9.6</column><column>4.8</column><column>8.5</column></line><line><column>Ireland</column><column>IE-1</column><column></column><column></column><column></column><column></column><column></column><column>6</column><column>6</column><column>6</column><column>6</column><column>6</column><column>6</column><column></column><column>6</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>12.5</column></line><line><column>Italy</column><column>IT-1</column><column>10.8</column><column>11.76</column><column>11.6</column><column>11.32</column><column>12.74</column><column>11.54</column><column>10.66</column><column>11.08</column><column>11.97</column><column>11.41</column><column>10.5</column><column>10.35</column><column>10.88</column><column>9.92</column><column>11.18</column><column>10.77</column><column>8.9</column><column>8.42</column><column>7.62</column><column>7.34</column><column>7.54</column><column></column><column></column></line><line><column>Latvia</column><column>LV-1</column><column></column><column></column><column></column><column></column><column></column><column> </column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>10</column><column>10.3</column><column>10.7</column><column></column><column>14</column><column>10</column><column>17.5</column><column>18</column></line><line><column>Lithuania</column><column>LT-1</column><column></column><column></column><column></column><column></column><column> </column><column>12</column><column>13</column><column>13</column><column>10</column><column>10</column><column>11.59</column><column>10.1</column><column>7</column><column>9.85</column><column>9.85</column><column>8.41</column><column>6.95</column><column>8.37</column><column>5.77</column><column>6.5</column><column></column><column>10</column><column>15</column></line><line><column>Luxembourg-A</column><column>LU-1</column><column>7</column><column></column><column></column><column></column><column></column><column></column><column></column><column>11.547</column><column>11.55</column><column>9.2</column><column></column><column>7.4</column><column>10.3</column><column>16.7</column><column>8.3</column><column>7.5</column><column></column><column>7.5</column><column>8</column><column>7.5</column><column>7.3</column><column>8.3</column><column>7</column></line><line><column>Luxembourg-B</column><column>LU-2</column><column></column><column></column><column></column><column></column><column></column><column></column><column>14.51</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Malta</column><column>MT-1</column><column></column><column></column><column></column><column></column><column>11</column><column>20</column><column>19</column><column>20.75</column><column>20</column><column>25</column><column>21.5</column><column>21</column><column>24</column><column>17.85</column><column>17</column><column>10</column><column>9</column><column>8.1</column><column>6.41</column><column></column><column></column><column></column><column></column></line><line><column>Netherlands</column><column>NL-1</column><column>10.26</column><column>10.65</column><column>10.91</column><column>10.55</column><column>11.74</column><column>9.65</column><column>9.97</column><column>9.43</column><column>9.93</column><column>9.2</column><column>8.9</column><column>9.7</column><column>9.9</column><column>9.7</column><column>7.8</column><column>8.7</column><column>8.1</column><column>7.7</column><column>7.3</column><column>6.78</column><column>6.46</column><column>6.46</column><column>7.56</column></line><line><column>Norway</column><column>NO-1</column><column></column><column></column><column></column><column></column><column>23.32</column><column>12.69</column><column></column><column>13.49</column><column></column><column></column><column></column><column></column><column>12.5</column><column></column><column></column><column></column><column></column><column></column><column>15.2</column><column>15.2</column><column>15.2</column><column>21.5</column><column>21.5</column></line><line><column>Poland-A</column><column>PL-1</column><column>12.3</column><column>12.4</column><column>12.5</column><column>8</column><column>8</column><column></column><column></column><column></column><column></column><column></column><column>11.9</column><column></column><column></column><column></column><column></column><column></column><column>7</column><column></column><column>7.6</column><column>8.7</column><column>7.5</column><column>8</column><column>8</column></line><line><column>Poland-B</column><column>PL-2</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>8.5</column><column></column><column>9</column><column></column><column>8.2</column><column></column><column>6.6</column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Poland-C</column><column>PL-3</column><column></column><column></column><column></column><column></column><column></column><column></column><column>10</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Portugal</column><column>PT-1</column><column>3.19</column><column>3.41</column><column>3.88</column><column>5.83</column><column>5.24</column><column>2.68</column><column>2.71</column><column>2.38</column><column>2.34</column><column>2.5</column><column>2.55</column><column>2.9</column><column>3.03</column><column>3.12</column><column>3.59</column><column>2.99</column><column>3.28</column><column>3.45</column><column>2.18</column><column>2.13</column><column>2.31</column><column>2.49</column><column>2.45</column></line><line><column>Romania</column><column>RO-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>5</column><column>15.5</column><column>18.75</column></line><line><column>Slovakia</column><column>SK-1/SK-2</column><column>16</column><column>18</column><column>13.53</column><column>13.53</column><column>13.53</column><column>15.31</column><column>20</column><column>15</column><column>15</column><column>13</column><column>12</column><column>10</column><column></column><column>16</column><column></column><column></column><column>24</column><column></column><column></column><column></column><column>8.5</column><column>8.29</column><column></column></line><line><column>Slovenia</column><column>SI-1</column><column></column><column></column><column></column><column></column><column> </column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>11</column><column>11</column><column>9</column><column></column><column>14</column><column>10</column><column>10.4</column><column>8.5</column><column></column></line><line><column>Spain</column><column>ES-1</column><column>6.755</column><column>6.715</column><column>6.45</column><column>6.235</column><column>5.57</column><column>5.68</column><column>5.59</column><column>6.04</column><column>6.19</column><column>5.56</column><column>5.54</column><column>5.6</column><column>5.85</column><column>5.58</column><column>5.2</column><column>4.77</column><column>4.78</column><column>4.52</column><column>4.63</column><column>4.255</column><column>4.385</column><column>4.41</column><column>4.085</column></line><line><column>Sweden</column><column>SE-1</column><column>10</column><column>9</column><column>11</column><column>12</column><column>13</column><column>10</column><column>11</column><column>11</column><column>11</column><column>12</column><column>12</column><column>12</column><column>12</column><column>11</column><column>9.7</column><column>8.19</column><column>8.78</column><column>8.75</column><column>9</column><column>9</column><column>9</column><column>9</column><column>9</column></line><line><column>Türkiye</column><column>TR-1/TR-2</column><column></column><column></column><column></column><column></column><column>7.92</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>8.5</column><column></column><column></column><column></column><column>6</column><column>3</column><column>5</column><column>5</column><column>5</column></line><line><column>United Kingdom</column><column>UK-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>3.32</column><column>3.2</column><column>3.59</column><column>4.12</column><column>3.15</column><column>2.86</column><column>2.88</column><column>3.31</column><column>4.13</column></line></table-body><footnote><line><![CDATA[(1) Slovakia: SK-2 -2003-2006]]></line><line><![CDATA[(2) Türkiye: 2019 started TR-2. Cannabis prices are submitted, regardless of herb and resin. The figure represents both the price of cannabis herb and resin.]]></line><line><![CDATA[(3) Norway: 2020 price 5 g Euro 111.94 & 10 g 233.21. 2019 price 5 g 60.91 & 10 g 88.83 Euros.]]></line><line><![CDATA[(4) Netherlands: samples of imported hash purchased anonymously at coffeeshops, not at the street level, twice per year. ]]></line></footnote></table>
\ No newline at end of file
datasets/euda-sb2026-ppp-02-1-1-2-3-herb-price.xml +1 −0
@@ -0,0 +1 @@
+<table><caption>Price, purity and potency > Price (euros) > Retail > Cannabis > Herbal (gram)</caption><table-headers><line><column>Country</column><column>Study</column><column>2024</column><column>2023</column><column>2022</column><column>2021</column><column>2020</column><column>2019</column><column>2018</column><column>2017</column><column>2016</column><column>2015</column><column>2014</column><column>2013</column><column>2012</column><column>2011</column><column>2010</column><column>2009</column><column>2008</column><column>2007</column><column>2006</column><column>2005</column><column>2004</column><column>2003</column><column>2002</column></line></table-headers><table-body><line><column>Austria</column><column>AT-1</column><column></column><column></column><column></column><column></column><column> </column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>10</column><column>9</column><column>4</column><column>3</column><column>3</column><column></column><column></column></line><line><column>Belgium-A</column><column>BE-1</column><column>9</column><column>9.6</column><column>9.2</column><column>9.1</column><column>8.7</column><column>9</column><column>9.37</column><column>8.9</column><column>8.7</column><column>8.8</column><column>8.7</column><column>8.65</column><column>8.65</column><column>7.92</column><column>7.47</column><column>7.15</column><column>6.98</column><column>5.97</column><column>5.38</column><column>5.75</column><column></column><column>5</column><column></column></line><line><column>Belgium-B</column><column>BE-2</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>10.3</column><column>10.3</column><column>10.75</column><column>9.68</column><column>9.92</column><column>9.77</column><column>8.1</column><column>8.28</column><column>8.1</column><column>9.2</column><column>6.3</column><column>6.3</column><column>5.7</column><column>4.57</column><column></column><column></column></line><line><column>Bulgaria-A</column><column>BG-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>6</column><column>6</column><column></column><column>2.25</column><column>1.3</column><column>1.3</column><column>1</column><column></column><column>0.8</column><column>0.8</column><column>0.8</column></line><line><column>Bulgaria-B</column><column>BG-2</column><column>8.21</column><column>7.84</column><column>7.7</column><column>7.3</column><column>7.3</column><column>6.7</column><column>6.5</column><column>5.4</column><column>6.2</column><column>6.3</column><column>7.3</column><column>7</column><column>7.8</column><column>7.5</column><column>7</column><column>5</column><column>0.87</column><column>0.8</column><column>0.8</column><column></column><column></column><column></column><column></column></line><line><column>Croatia</column><column>HR-1</column><column>3</column><column>3.5</column><column>3.5</column><column>3.5</column><column>3</column><column>9</column><column>9</column><column>12.2</column><column>12.2</column><column>12.6</column><column>11.8</column><column>7.1</column><column>8</column><column>9.9</column><column>7.5</column><column>7</column><column>5</column><column>3</column><column>3</column><column>3</column><column></column><column></column><column></column></line><line><column>Cyprus</column><column>CY-1</column><column>22.79</column><column>20.72</column><column>26.37</column><column>30.12</column><column>25.6</column><column>21.1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Czechia</column><column>CZ-1</column><column>7</column><column>6.8</column><column>7</column><column>6</column><column>6.2</column><column>7.3</column><column>7</column><column>6.15188264</column><column>6.51</column><column>6.5</column><column>6.8</column><column>7</column><column>7.4</column><column>7.7</column><column>7.8</column><column>8</column><column>6.6</column><column>6.4</column><column>6.9</column><column>5.7</column><column>5.3</column><column>5.8</column><column>3.35</column></line><line><column>Denmark</column><column></column><column></column><column></column><column></column><column></column><column> </column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Estonia</column><column>EE-1</column><column></column><column></column><column>20</column><column></column><column></column><column></column><column></column><column>22</column><column>20</column><column></column><column>20</column><column>20</column><column>20</column><column></column><column></column><column>18.3</column><column></column><column></column><column>11.2</column><column>9.5</column><column>3.1</column><column>11</column><column>1.93</column></line><line><column>Finland</column><column>FI-1</column><column></column><column></column><column></column><column></column><column> </column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>8</column><column></column><column>8</column></line><line><column>France-A</column><column>FR-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>9.6</column><column>9.9</column><column></column><column></column><column></column><column>7</column><column>5</column><column>6.4</column><column>4.6</column><column>5</column><column>4.91</column></line><line><column>Germany</column><column>DE-1</column><column>10</column><column>10</column><column>10</column><column>10</column><column>10</column><column>9.9</column><column>10.2</column><column>10</column><column>10</column><column>10.1</column><column>9.2</column><column>9.4</column><column>9.1</column><column>8.9</column><column>8.7</column><column>7.9</column><column>7.9</column><column>8.1</column><column>8.2</column><column>7.2</column><column>7.2</column><column>7.3</column><column>7.26</column></line><line><column>Greece</column><column>GR-1</column><column>22.5</column><column>22.5</column><column>22.5</column><column>22.5</column><column>22.5</column><column>20</column><column>19</column><column>19</column><column>19</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Hungary</column><column>HU-1</column><column></column><column>10</column><column>9.2</column><column>9.5</column><column>9.3</column><column>8.4</column><column>8.7</column><column>8.2</column><column>7.8</column><column>7.9</column><column>7.3</column><column>7.7</column><column>7.9</column><column>8.2</column><column>8.2</column><column>8</column><column>8.6</column><column>8.7</column><column>8</column><column>8.4</column><column>8.3</column><column>4.8</column><column>7</column></line><line><column>Ireland</column><column>IE-1</column><column></column><column></column><column></column><column></column><column></column><column>20</column><column>20</column><column>20</column><column>20</column><column>20</column><column>20</column><column></column><column>20</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>3</column></line><line><column>Italy</column><column>IT-1</column><column>9.97</column><column>10.19</column><column>9.9</column><column>9.63</column><column>9.94</column><column>9.19</column><column>9.06</column><column>9.85</column><column>8.2</column><column>8.07</column><column>7.97</column><column>8.49</column><column>8.35</column><column>8.29</column><column>8.545</column><column>8.195</column><column>7.3</column><column>6.6</column><column>5.75</column><column>5.65</column><column>6.05</column><column></column><column></column></line><line><column>Latvia</column><column>LV-2</column><column></column><column></column><column></column><column></column><column></column><column></column><column>7</column><column></column><column></column><column></column><column></column><column>13.91</column><column>14.62</column><column></column><column>9.9</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Lithuania</column><column>LT-1</column><column></column><column></column><column></column><column></column><column></column><column>11</column><column>9.5</column><column>13</column><column>10</column><column>11.2</column><column>10.43</column><column>11</column><column>10.7</column><column>10.14</column><column>10.14</column><column>11.59</column><column>11.01</column><column>11.55</column><column>9.53</column><column>8.69</column><column>10.1</column><column>9</column><column>17</column></line><line><column>Luxembourg</column><column>LU-1</column><column>13</column><column></column><column></column><column></column><column></column><column></column><column>11.11</column><column>10.604</column><column>10.93</column><column>15.1</column><column></column><column>15</column><column>12.4</column><column>13.59</column><column>11.6</column><column>10.5</column><column></column><column>8</column><column>8</column><column>7.5</column><column>7.3</column><column>8.1</column><column></column></line><line><column>Malta</column><column>MT-1</column><column>23</column><column>35</column><column></column><column></column><column>11</column><column>16</column><column>15</column><column>19.75</column><column>21</column><column>18</column><column>22.5</column><column>25</column><column>25</column><column>23.32</column><column>24.5</column><column>70</column><column>4</column><column>2.91</column><column>13</column><column></column><column></column><column></column><column></column></line><line><column>Netherlands</column><column>NL-1</column><column>4.43</column><column>4.78</column><column>5.13</column><column>3.79</column><column>4.67</column><column>4.19</column><column>4.39</column><column>4.04</column><column>4.84</column><column>4.9</column><column>4.7</column><column>4.5</column><column>5.3</column><column>5.9</column><column>4.2</column><column>4.9</column><column>5.2</column><column>4.3</column><column>4.4</column><column>4.11</column><column>6.22</column><column>5.97</column><column>6.45</column></line><line><column>Norway</column><column>NO-1</column><column></column><column></column><column></column><column></column><column>32.65</column><column>12.69</column><column></column><column>16.19</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Poland-A</column><column>PL-1</column><column>11.7</column><column>11</column><column>10.7</column><column></column><column>7.5</column><column></column><column></column><column></column><column></column><column></column><column>9.5</column><column>7.75</column><column></column><column></column><column></column><column></column><column>6</column><column></column><column>7.1</column><column>6.2</column><column>6</column><column>4.5</column><column>8</column></line><line><column>Poland-B</column><column>PL-2</column><column></column><column></column><column>10.6</column><column></column><column> </column><column></column><column></column><column></column><column>8.09</column><column></column><column>7.7</column><column></column><column>7.7</column><column></column><column>6.5</column><column></column><column>5.4</column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Poland-C</column><column>PL-3</column><column></column><column></column><column></column><column></column><column></column><column></column><column>9.8</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></line><line><column>Portugal</column><column>PT-1</column><column>5.29</column><column>5.58</column><column>5.82</column><column>5.72</column><column>5.78</column><column>5.36</column><column>6.14</column><column>6.91</column><column>8.49</column><column>7.41</column><column>6.23</column><column>5.47</column><column></column><column></column><column></column><column>6.22</column><column>5.09</column><column>4.7</column><column>2.15</column><column>3.67</column><column>2.66</column><column>4</column><column>2.62</column></line><line><column>Romania</column><column>RO-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>3</column><column>9.1</column><column>9.38</column></line><line><column>Slovakia</column><column>SK-1/SK-2</column><column>11</column><column>13</column><column></column><column></column><column>8.63</column><column>8.38</column><column>10</column><column>10</column><column></column><column>9</column><column>10</column><column>10</column><column></column><column>15</column><column>8</column><column>15</column><column>24.5</column><column></column><column></column><column></column><column></column><column>7.75</column><column></column></line><line><column>Slovenia</column><column>SI-1</column><column>5</column><column>5</column><column>5</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>6</column><column>6</column><column>5</column><column></column><column>6</column><column>5.2</column><column>5.2</column><column>3.45</column><column></column></line><line><column>Spain</column><column>ES-1</column><column>6.31</column><column>6.225</column><column>5.915</column><column>5.72</column><column>5.09</column><column>5.06</column><column>5.22</column><column>5.16</column><column>4.96</column><column>4.58</column><column>4.68</column><column>4.65</column><column>5.02</column><column>4.52</column><column>4.1</column><column>3.58</column><column>3.09</column><column>3.06</column><column>2.99</column><column>2.785</column><column>2.885</column><column>2.79</column><column>2.855</column></line><line><column>Sweden</column><column>SE-1</column><column>11</column><column>11</column><column>12</column><column>13</column><column>13</column><column>11</column><column>12</column><column>12</column><column>12</column><column>13</column><column>14</column><column>13</column><column>13</column><column>12</column><column>10.9</column><column>9.15</column><column>9.49</column><column>9.07</column><column>8</column><column>8</column><column>8</column><column>8</column><column>7</column></line><line><column>Türkiye</column><column>TR-1/TR-2</column><column>8.5</column><column>6.6</column><column>6.2</column><column>7.98</column><column>7.92</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>5</column><column></column><column></column><column></column><column>3</column><column>2</column><column>3</column><column>5</column><column>4</column></line><line><column>United Kingdom</column><column>UK-1</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column>3.32</column><column>3.2</column><column>3.59</column><column>3.95</column><column>3.98</column><column>3.89</column><column>3.66</column><column>3.62</column><column>4.39</column></line></table-body><footnote><line><![CDATA[(1) Slovakia: SK-2 -2003-2006]]></line><line><![CDATA[(2) Netherlands: samples of imported herbal cannabis purchased anonymously at coffeeshops, not at the street level, twice per year. Additionally price for Dutch-grown cannabis.]]></line><line><![CDATA[(3) Austria: 2019 EU-grown marijuana 12.5.]]></line><line><![CDATA[(4) Belgium. Additionally, in 2024, reported the price for samples of Moonrock, average price 16.3 EUR: This product consists of the cannabis plant’s flower (marijuana bud) soaked in hash oil (or another cannabis concentrate) and then rolled in kief (powdered resin). This three-layer preparation is notable for its very high THC content, often exceeding 50%. ]]></line><line><![CDATA[(5) Türkiye: 2019 started TR-2. Cannabis prices are submitted, regardless of herb and resin. The figure represents both the price of cannabis herb and resin.]]></line><line><![CDATA[(6) Bulgaria: Since 2016 the category for herbal is "Herbal unspecified".]]></line><line><![CDATA[(7) Norway: 2020 price 5 g Euro 93.28 & 10g Euro 209.89. 2019 price 5 g Euro 76.14.]]></line></footnote></table>
\ No newline at end of file
datasets/unodc-wdr2026-7.1-drug-seizures.xlsx +0 −0
Binary files /dev/null and b/datasets/unodc-wdr2026-7.1-drug-seizures.xlsx differ
docs/DATA-MAINTENANCE.md +59 −2
@@ -14,5 +14,5 @@ The legal index holds three connected things per country:
3. **How the score moved** — each event that changed the law also records the scores *before*
it. Strung together, these form one continuous score timeline per country, from the
- unregulated state (98) down through the bans and back up through the reforms, ending exactly
+ unregulated state (100) down through the bans and back up through the reforms, ending exactly
at today's score. The country chart, the "29 → 44" on every event and the world-average chart
since 1900 are all drawn from it.
@@ -336,4 +336,18 @@ group) and are never part of the score.
(downloaded as published, or transcribed, and on what date). These files keep their
publishers' terms, not the site's CC BY licence.
+- Every dataset is kept as a series, one row per country and year, so that each profile's
+ Datasets tab can chart it; the map, the headline figures and the side column use the
+ latest year. Keep every year an extract has: do not filter to the latest when adding one.
+- A dataset view on the map with more than one year gets a year slider and a play button.
+ The yearly figures are published per dataset at `/map-series/<id>.json` and loaded only for
+ the open view. A chosen year shows each country's figure for that year, or its latest from
+ the `map.window` years before (5 by default); `?year=` in a map page's address opens it there.
+- The Freedom views (index and segments) use the same control with the scores at the end of
+ each year since 1900, rebuilt from the history like the yearly panel and published at
+ `/map-series/freedom.json`. Their bars count the countries whose score changed each year by a
+ recorded change. States and provinces have no history, so they are shown only for today.
+- A dataset published as a new file each time (a yearly survey, a new index edition) lists
+ its files in `file` as `{ file, edition }`. To add an edition, put the new CSV beside the
+ old ones and add a line; the site joins them into one series. The old files stay.
- A dataset whose file is missing is left out with a warning. Country names that match no
country file are listed in the build output: add an alias in `datasets.yaml`.
@@ -352,8 +366,38 @@ group) and are never part of the score.
(`unodc-wdr2026-1.4-prevalence-youth.xlsx`, table 1.4). Only that age group is kept, so that
countries compare; countries reporting other bands (Germany, France, Spain) are left out.
+- `unodc-cannabis-seizures.csv`: kilograms of cannabis herb and resin seized, every year from
+ 2015, from `python3 scripts/extract-unodc.py seizures` and the UNODC spreadsheet beside it
+ (`unodc-wdr2026-7.1-drug-seizures.xlsx`, table 7.1). Figures are as reported; some very large
+ ones (Namibia, Tanzania) appear to include plants destroyed in the field.
+- `faostat-hemp.csv`: hemp grown for fibre and for seed, every year since 1961, from FAOSTAT's
+ crops file. Download the bulk zip named in `datasets.yaml` (about 34 MB, not kept here) and
+ run `python3 scripts/extract-faostat-hemp.py <zip>`. Former states (USSR, Czechoslovakia,
+ Yugoslavia) stay in the file without a country. The map shows only figures since 2015
+ (`map.since`); the profile lists the series.
+- `vdem-civil-liberties.csv`: V-Dem's civil liberties index (0 to 1) every year from 1900,
+ from Our World in Data's chart file kept beside it (`owid-civil-liberties-vdem.csv`) by
+ `python3 scripts/extract-owid.py civil_liberties`. For a new V-Dem release, download the
+ chart CSV again from the `data_url` in `datasets.yaml` and rerun.
+- `gbif-cannabis-records.csv`, `openalex-cannabis-papers.csv`: open, non-governmental data fetched
+ from public APIs by `python3 scripts/fetch-open-data.py` (`gbif`, `openalex`), rewritten whole.
+- `osm-cannabis-shops-<date>.csv`: places tagged `shop=cannabis` in OpenStreetMap, counted by
+ country with `node scripts/osm-shops.mjs`: one worldwide Overpass query, then each place is put
+ in a country with the map's own shapes (seconds, not hours). Each run writes a new dated file:
+ add it to the `file` list of `osm_shops` as a new edition and keep the old ones, so that the
+ shop counts become a trend.
- `population.csv`: population by year for every country (`country,year,population`), a figure
every ten years from 1900 to 2020 and the latest one. It weights the population-weighted
average and is read by `scripts/article-backlog.cjs` and `scripts/data-status.cjs`; every
country needs at least one row.
+- `euda-cannabis-use-offences.csv`: offences for using or possessing cannabis in European
+ countries, 2007–2024, from the EUDA Statistical Bulletin table DLO-03-2-0. The EUDA's site
+ refuses scripts: open the table in a browser, read the XML its data service returns (the
+ `fetchxml` address in `scripts/extract-euda.py`), save it unchanged over the XML in
+ /datasets, check its SHA-256 against the browser's copy and run
+ `python3 scripts/extract-euda.py cannabis_offences`.
+- `euda-cannabis-prices.csv`, `euda-cannabis-potency.csv`: mean retail price (euros per gram)
+ and mean THC content of cannabis herb and resin in Europe, 2002–2024, from four EUDA tables
+ saved the same way (`python3 scripts/extract-euda.py prices` and `potency`). The XML can be
+ passed from the browser gzipped and base64-encoded, then decoded and checked by SHA-256.
- `unodc-drug-possession-police.csv`: people brought into contact with the police for drug use
or possession (all drugs), extracted by `python3 scripts/extract-unodc.py offences` from the
@@ -498,5 +542,5 @@ node scripts/data-status.cjs chain de # one country's full timeline
it), or you need a new scored event that explains the change, dated when it happened.
- **It starts from freedom.** The first restriction normally has `before` = unregulated
- (`"FREE"`: 10,10,10,10,10,8 = 98). A lower starting point is fine only when an earlier
+ (`"FREE"`: 10 in every segment = 100). A lower starting point is fine only when an earlier
licensed or taxed regime is documented (India, Morocco, Nepal, Tunisia, South Africa, …).
- **Direction matches the event.** A ban, tightening or death-penalty law must not raise the
@@ -891,4 +935,17 @@ which it limits to a few requests a minute, so run it in small batches. Run `che
sources, and `save` for the ones that come back without a copy.
+Some sites refuse scripts and archivers, or have lost the page. `probe` opens each source without a
+copy as a browser would and marks those in `source-archive.json` with
+`"dead": { "reason": "blocked" | "gone" | "unreachable", "status": 403, "seen": "YYYY-MM-DD" }`;
+a failed `save` whose Archive error names such a reason marks it too. Marked addresses are
+skipped by `check`, `save` and `probe` for 90 days, then tried again (`--include-dead` tries them
+at once), and a copy clears the mark. The source stays in the data and on the site: `blocked`
+pages usually still open in a browser. `gone` and `unreachable` ones are worth replacing with a
+working address or an archived copy found by hand.
+
+```
+node scripts/archive-sources.cjs probe 200 # mark the sources whose site refuses or has lost them
+```
+
## The survey (State of Cannabis)
docs/research/history-afghanistan-early-2026-10-21.md +108 −0
@@ -0,0 +1,108 @@
+# Afghanistan: enforcement before 1973 and a first-Taliban-period gap
+
+21 October 2026. Follow-up to the republic-era legal pass. Rechecked the
+writing guide, category precedence and tags. Baseline retained in
+`tmp/history-afghanistan-early-2026-10-21/changes-before.yaml`.
+
+## 1970: a hotel raid predates the supposed first ban
+
+Read James Bradford's chapter in *Cannabis: Global Histories*, printed
+pp. 194–196 and notes 41–51, from the retained chapter text
+`tmp/global-histories/chapter_8.xhtml.txt`. It records a **16 May 1970**
+raid on Kabul's Shak-Foladi Hotel: thirteen foreign nationals arrested,
+100 grams of opium and 200 grams of hashish seized. These are the raid's
+aggregate amounts, not an asserted amount per person. Bradford identifies
+foreign involvement as what concerned American officials and records
+a US narcotics agent being stationed in Kabul later in 1970.
+
+Added an enforcement event and a 350–500-word article, tagged visitors
+and enforcement. It gives no unverified sentence or court outcome. The
+article places the incident alongside actual 1971 diplomatic discussion
+and the later arrest campaign. The primary raid report cited through
+Bradford's book has not been separately recovered; the source is plainly
+identified as the historian's account.
+
+## 1971: use the meeting date, and attribute the prohibition claim
+
+Read the complete State Department FRUS document 350, including its
+heading, participants and paragraphs 2–8:
+https://history.state.gov/historicaldocuments/frus1969-76ve07/d350.
+Secretary William Rogers and foreign minister Musa Shafiq met in New York
+on **13 October 1971**. The telegram was sent on 14 October. The new event
+uses the meeting date.
+
+Paragraphs 5–6 record discussion of young foreign visitors, weak enforcement,
+and possible displacement of production after action in Turkey. Shafiq
+said hashish and opium cultivation were prohibited under Islamic law but
+not always controlled, especially in remote areas. Ambassador Malikyar
+raised the need to replace poor poppy farmers' cash income. Earlier parts
+of the same record describe drought, debt rescheduling and Afghanistan's
+concern about Soviet financial influence. No aid-for-ban bargain is inferred.
+
+Added a debate event, trafficking tag, and article. This records a political
+commitment and discussion of existing restrictions, not a new operative
+law. The article also uses FRUS document 372, read in full, for Shafiq's
+late-1972 parliamentary programme. Any identification of the ambassador
+beyond the source's 'Malikyar' was excluded.
+
+## Correct the 1972 category and clean up the linked article
+
+The existing event records new anti-smuggling units and arrests, not a
+changed legal rule, so enforcement replaces tightening. Tags trafficking
+and enforcement. Rewrote its article within the writing guide, preserving
+the sourced arrest series (72 in 1971, 221 in 1972, 584 in 1973) as
+drug-smuggler arrests rather than cannabis-only convictions. Shafiq's
+December commitment is clearly dated; no claim that he caused every
+earlier arrest or that higher arrests prove reduced trafficking.
+
+## Recast 1973 as renewed prohibition, with the original order still missing
+
+Read Bjelica and Foschini's 7 January 2019 Afghanistan Analysts Network
+history, especially the subsection on cultivation from the 1970s onward.
+It supports the retrospective claim of royal prohibition in 1973, but does
+not supply the original order. Bradford and the contemporaneous 1971
+record establish that cannabis restrictions and enforcement predated it.
+
+Replaced the bare Wikipedia-based first-ban presentation with renewed
+prohibition under American pressure, category tightening, retaining the
+existing eradication tag and stable ID. Removed the unsupported implication
+that this was the first law or that a specific US grant has been verified.
+The $47-million story is repeated in later sources, but the underlying
+grant or appropriation was not recovered and is not published as fact here.
+Set `checked: false` until the original 1973 legal action is verified.
+No article was built on the unresolved order.
+
+## 1997: a reported Taliban radio ban fills part of the later gap
+
+Located UN report **A/52/493**, dated 16 October 1997. Read the complete
+indexed paragraph 130 on printed p. 33. It reports Radio Shariah announcing
+in Kabul on **20 August** that production, sale and taking of heroin and
+hashish were banned. It also records the Taliban representative in Islamabad
+explaining the health/Islamic rationale and discussing alternative crops,
+tools, seeds and fertilisers for poppy farmers.
+
+Added a tightening entry, religion tag, explicitly unchecked and unscored.
+The reported broadcast does not establish a nationwide legal change across
+all competing authorities during civil war. Direct UN downloads produced
+an empty file; Refworld's catalogue and viewer identified the same PDF,
+but the PDF download returned 403. These failures were not treated as
+having read the scan. The original radio broadcast/order and precise
+scope of enforcement remain unrecovered, so no article yet.
+
+## Score limits and remaining work
+
+Every baseline `before` vector and current country score is preserved.
+This does not validate the old 1973 scoring or supply a continuous account
+of the war years. The 1973 original, 1976 penal provisions, first Taliban
+orders and their actual application, and the 2003/2004 drug-law sequence
+remain needed for reconstruction. The new 1997 entry is a dated lead with
+an honest verification limit rather than an invented national score step.
+
+## Validation
+
+Full build succeeded: 3,414 pages in 28.58 seconds. The source and generated
+checks passed for 2,677 events and 607 articles, including categories, tags,
+country timeline, citations, headings and internal links. Article lengths
+are 383, 385 and 369 words. All baseline score vectors were preserved.
+Scoped whitespace checks passed. Temporary build output was removed after
+verification; research records, the verifier and build log remain.
docs/research/history-afghanistan-gap-2026-10-21.md +130 −0
@@ -0,0 +1,130 @@
+# Afghanistan: fill the republic-era legal gap
+
+21 October 2026. Rechecked writing rules, categories and tags. Baseline:
+`tmp/history-afghanistan-gap-2026-10-21/changes-before.yaml`. The timeline
+had no domestic legal entries between the 1973 crackdown and the 2023
+Taliban order. This pass recovers two intervening national laws.
+
+## 2005 government text separates consumption, trafficking and growing
+
+Downloaded UNODC's actual English reproduction, E/NL.2009/20, of the
+government-communicated **Counter Narcotics Law, 17 December 2005**.
+Retained `law-2005.pdf` and text. Read articles 1–3, 15–16, 25–27,
+58 and the schedules. Visually inspected printed/PDF 19–20, including
+the personal-consumption threshold and medical exemption.
+
+Article 27(1)(c): unauthorised personal use/possession of the residual
+controlled-drug group, including cannabis, brings one to three months
+AND 5,000–10,000 afghanis. Article 27(1)(d) sends possession of **more
+than ten grams of hashish** to article 16. Article 16(3)'s residual
+trafficking scale includes up to three months AND a fine below 250 grams,
+one to three years AND a fine at one to five kilograms, and ten to
+fifteen years AND a fine above ten kilograms.
+
+Article 26(3): less than one jerib of cannabis growing brings three to
+nine months AND 5,000–20,000 afghanis. Larger areas add punishment.
+Illicit crops must be destroyed without compensation; financing or
+inciting cultivation doubles the farmer's penalty. Article 27(2) lets a
+court exempt a medically certified dependent person from imprisonment
+and fine, and require treatment. Do not call ten grams a legal allowance.
+
+Article 58 commences on presidential signature. The communicated text
+is dated **17 December 2005**, used for the new event. Official Gazette
+875 is also described elsewhere as dated 15.11.1384 (February 2006).
+That publication reference must not be confused with the express
+signature-based commencement. The 2010 law independently identifies
+Gazette 875 as its repealed predecessor.
+
+Added an `other` event and article: the source establishes the replacement
+law's substance but not a net direction relative to all earlier rules.
+Tags sentencing, thresholds, treatment and eradication.
+
+## 2010 gives hashish a lower ordinary trafficking scale
+
+Recovered both the WTO-hosted Dari gazette and UNODC's actual English
+translation, `law-2010-dari.pdf`, `law-2010-english.pdf` and text. The
+English footer identifies Official Gazette **1025, 14 June 2010** and
+its translation from the approved Dari text. Read articles 41, 46–47,
+57–58 and 67; visually inspected PDF 18 and 22. Article 67 commences
+on publication and repeals the Gazette 875 law.
+
+Article 46 expressly separates hashish from other drugs. Less than ten
+grams: up to a month; over ten to 100 grams: over one to two months;
+over 100 to 500 grams: over two to three months; over 500 grams to one
+kilogram: over three to six months; over one to five kilograms: over
+six months to a year. Above five kilograms adds three months per extra
+500 grams, up to ten years for this ordinary offence. Article 58 doubles
+maximum punishment for directing more than two people, subject to a
+twenty-year ceiling. Do not describe ten years as the ceiling on every
+aggravated hashish case.
+
+Compared directly with article 16(3) of the earlier law, a two-kilogram
+ordinary case falls from one to three years plus a fine to over six
+months to one year. Added an easing event and article, tags sentencing,
+thresholds and treatment. Numerical scoring remains explicitly pending:
+the existing 1973-to-Taliban score sequence does not document the republic
+period adequately. No invented six-segment vector was assigned.
+
+Article 57(1) exempts a user/holder of up to fifty grams of hashish for
+personal consumption from prosecution if a medical examiner certifies
+dependence, and directs the person to a treatment centre. Above the
+quantity, certified dependence can lead to treatment detention while
+punishment remains available. Reports every fifteen days inform court
+decisions; detention time counts against later custody. Do not present
+this as an exemption for every consumer or wholly voluntary care.
+
+The English cultivation clauses mix 'acre', 'jerib' and a contradictory
+beswa conversion. No comparison of exact plot sizes was published from
+that translation; reconcile the original before asserting hectares or
+acres. The article focuses on the clear gram/kilogram provisions.
+
+## Correct the survey's product and publication date
+
+Downloaded the actual UNODC/Afghan Ministry of Counter Narcotics
+*Afghanistan Cannabis Survey 2009*, retained as `survey-2009.pdf` and
+text. Read the preface, key findings, production and cultivation-reasons
+sections; visually inspected PDF 11, printed p. 7, the key findings.
+
+It estimates **10,000–24,000 hectares** and **1,500–3,500 tonnes of resin**
+for 2009 and calls Afghanistan the largest cannabis-resin producer. This
+is not a ranking of all cannabis herb. High prices and low input costs
+are reported reasons for cultivation. Replaced the old Wikipedia summary
+and removed its unsupported $47-million/1973 historical story. Set the
+entry to **April 2010**, the report's printed publication month; the
+previous exact 31 March announcement date was not independently recovered.
+Tag science replaces military. No article added from this report yet.
+
+## Further gaps and limits
+
+The 2003 classification/drug law is catalogued by SHERLOC, but the
+original was not recovered in this pass. The 2005 repeal refers to an
+earlier Gazette 813 law. Do not merge calendar references or assign a
+precise 2003/2004 date without the actual text.
+
+The 1973 entry still relies on a weak claim that the king first outlawed
+production and on unsupported funding detail repeated in secondary
+accounts. Earlier restrictions already exist in the timeline; that
+entry and the 1972 crackdown's category need a dedicated primary-source
+pass. FRUS documents 350/372 establish older prohibitions and growing
+enforcement commitments, but alone do not establish an exact 1973 law.
+The 2017 Penal Code, post-2021 legal practice and Taliban decrees also
+need a coherent chronology before historical score reconstruction.
+Current country scores and every baseline `before` vector are preserved,
+without claiming those older vectors have been validated.
+
+## Validation
+
+Source checks passed: two added events, exactly one existing event revised,
+all earlier IDs and `before` vectors preserved. The articles have 417 and
+439 words and four sections each. Metadata, categories, tags and links
+passed checks.
+
+Full Astro build succeeded, terminal exit 0: **3,409 pages in 27.21
+seconds**. Verified generated JSON dates, titles, descriptions, categories
+and tags; Afghanistan timeline; tag routes; article headings, citations
+and internal links. Scoped whitespace checks passed. Collection now has
+**2,674 events and 605 articles**.
+
+Removed this batch's temporary `site/` output after verification. The final
+scan found no remaining named temporary build directories or generated
+history index pages under `tmp`. Source files, verifier and logs remain.
docs/research/history-angola-gap-2026-10-21.md +120 −0
@@ -0,0 +1,120 @@
+# Angola: colonial penalties, the 1999 laws and later sentencing
+
+Research and edits: 21 October 2026. Re-read the writing guide and current
+category/tag definitions. Baseline is retained in
+`tmp/history-angola-gap-2026-10-21/changes-before.yaml`. Preserve unrelated
+staged work and earlier history batches.
+
+## Primary texts read
+
+Downloaded the original official-gazette scans of Laws 3/99 and 4/99 from
+LEX.AO. These PDFs reproduce the 6 August 1999 gazette; they are not a new
+2023 enactment despite search-engine dates. Law 3/99 PDF contains printed
+pp. 709–722; Law 4/99 PDF begins with a cover then printed pp. 722–730.
+Plain text extraction of the first scan was unusable. Ran Portuguese OCR
+and visually read the relevant pages: Law 3/99 PDF pp. 1–3, 5–6, 9 and 11;
+Law 4/99 PDF pp. 2–7 and 10. Sources and rendered pages remain in the batch
+research directory.
+
+The 1970 extension order's original Portuguese official gazette was read
+in the preceding Mozambique batch and is retained there. Printed pp.
+1559–1560 extend 420/70 to the overseas provinces except Macau, adapting
+prescription and confiscation rules. The complete official HTML of 420/70
+was also read. The Angola 1999 law directly confirms its earlier relevance
+by expressly repealing it in Article 45(d).
+
+Downloaded and read all three pages of Supreme Court appeal **5668/21**,
+including visual inspection of the reasoning and final page. Date is
+**12 October 2023**, not the 2021 case number or May 2025 upload path.
+The opinion anonymises the defendant: no name was inferred.
+
+## Date and substance corrections
+
+Law 3/99 was published **6 August 1999**, but Article 46 gives effect
+**ninety days after publication**, calculated as **4 November 1999**.
+Law 4/99 Article 50 has the same delay. Both record parliamentary approval
+on 11 May 1999; neither that approval nor the publication date is used as
+the effective-date event. Python date arithmetic checked the ninety days.
+
+The criminal law combines lighter personal-use terms with heavier ordinary
+trafficking terms relative to 420/70. Changed the existing 1999 entry from
+**tightening** to **other** (mixed reform), added sentencing, trafficking,
+thresholds, home-growing and treatment tags, and replaced its general title
+and thin description. The ordinary personal-use offence in Article 23
+covers consumption, possession, acquisition **and cultivation**: up to
+three months, or one year above three days' average individual supply.
+It specifies prison, without the fine alternative seen in other countries.
+Article 44 delegates daily-dose quantities; the statute itself gives no
+cannabis gram cutoff here.
+
+Ordinary trafficking under Article 4 is **8–12 years**; less serious cases
+under Article 8 can receive **2–8 years**. Article 9's dealing solely to
+obtain one's own drugs has a separate shorter term, unavailable above
+five days' supply. Do not conflate that rule with simple personal possession.
+The authorised operator who diverts drugs faces a different **12–16-year**
+range; 8–12 is not a universal maximum. Article 26 allows suspension with
+voluntary treatment/admission and proof of compliance. Articles 24–25
+promise anonymity and care for people presenting voluntarily; they do not
+show how many treatment places actually existed.
+
+## Added events
+
+- **1970 extension:** category other; colonial, sentencing, trafficking,
+ visitors tags. Date is the Portuguese extension-order date. Mozambique's
+ or Angola's local bulletin commencement was not recovered; do not claim
+ local enforcement began precisely on 26 October. The earlier Angolan
+ 1940 text's full penalty schedule remains unrecovered, so no directional
+ tightening/easing claim is made against it. Under 420/70 Article 2,
+ personal possession/non-profit supply had up to two years **and a fine**;
+ other unauthorised dealings had two to eight years **and a fine**. Article
+ 4 separately qualified consumption offences. Article 12 required expulsion
+ of foreign offenders after sentence without a time limit. Authorised
… 50 more lines
docs/research/history-burkina-faso-gap-2026-10-21.md +114 −0
Not shown: a picture, a generated file, or past the length shown per change.
docs/research/history-cameroon-gap-2026-10-21.md +135 −0
Not shown: a picture, a generated file, or past the length shown per change.
docs/research/history-central-african-republic-gap-2026-10-21.md +133 −0
Not shown: a picture, a generated file, or past the length shown per change.
docs/research/history-chad-gap-2026-10-21.md +104 −0
Not shown: a picture, a generated file, or past the length shown per change.
docs/research/history-ethiopia-controls-2026-10-21.md +112 −0
Not shown: a picture, a generated file, or past the length shown per change.
docs/research/history-ethiopia-gap-2026-10-21.md +103 −0
Not shown: a picture, a generated file, or past the length shown per change.
docs/research/history-gabon-gap-2026-10-21.md +155 −0
Not shown: a picture, a generated file, or past the length shown per change.
docs/research/history-guinea-gap-2026-10-21.md +146 −0
Not shown: a picture, a generated file, or past the length shown per change.
docs/research/history-madagascar-gap-2026-10-21.md +141 −0
Not shown: a picture, a generated file, or past the length shown per change.
docs/research/history-mali-gap-2026-10-21.md +144 −0
Not shown: a picture, a generated file, or past the length shown per change.
docs/research/history-mozambique-gap-2026-10-21.md +112 −0
Not shown: a picture, a generated file, or past the length shown per change.
docs/research/history-myanmar-gap-2026-10-21.md +132 −0
Not shown: a picture, a generated file, or past the length shown per change.
docs/research/history-sudan-gap-2026-10-21.md +136 −0
Not shown: a picture, a generated file, or past the length shown per change.
docs/research/history-tanzania-gap-2026-10-21.md +143 −0
Not shown: a picture, a generated file, or past the length shown per change.
package-lock.json +14 −0
Not shown: a picture, a generated file, or past the length shown per change.
package.json +3 −1
Not shown: a picture, a generated file, or past the length shown per change.
scripts/archive-sources.cjs +64 −7
Not shown: a picture, a generated file, or past the length shown per change.
scripts/extract-euda.py +123 −0
Not shown: a picture, a generated file, or past the length shown per change.
scripts/extract-faostat-hemp.py +74 −0
Not shown: a picture, a generated file, or past the length shown per change.
scripts/extract-owid.py +56 −0
Not shown: a picture, a generated file, or past the length shown per change.
scripts/extract-unodc.py +73 −20
Not shown: a picture, a generated file, or past the length shown per change.
scripts/fetch-open-data.py +95 −0
Not shown: a picture, a generated file, or past the length shown per change.
scripts/history-batch.cjs +1 −1
Not shown: a picture, a generated file, or past the length shown per change.
scripts/osm-shops.mjs +81 −0
Not shown: a picture, a generated file, or past the length shown per change.
scripts/render-video.mjs +44 −0
Not shown: a picture, a generated file, or past the length shown per change.
source-archive.json +824 −596
Not shown: a picture, a generated file, or past the length shown per change.
src/components/CountryChanges.astro +1 −1
Not shown: a picture, a generated file, or past the length shown per change.
src/components/CountryDatasetTab.astro +43 −9
Not shown: a picture, a generated file, or past the length shown per change.
src/components/HomePage.astro +208 −40
Not shown: a picture, a generated file, or past the length shown per change.
src/components/ScoreChange.astro +5 −2
Not shown: a picture, a generated file, or past the length shown per change.
src/content.config.ts +12 −6
Not shown: a picture, a generated file, or past the length shown per change.
src/lib/countries.js +26 −3
Not shown: a picture, a generated file, or past the length shown per change.
src/lib/datasets.js +83 −47
Not shown: a picture, a generated file, or past the length shown per change.
src/lib/exports.js +8 −3
Not shown: a picture, a generated file, or past the length shown per change.
src/lib/research.js +2 −2
Not shown: a picture, a generated file, or past the length shown per change.
src/pages/data/datasets/[file].js +3 −3
Not shown: a picture, a generated file, or past the length shown per change.
src/pages/map-series/[id].json.js +21 −0
Not shown: a picture, a generated file, or past the length shown per change.
src/pages/map-series/freedom.json.js +17 −0
Not shown: a picture, a generated file, or past the length shown per change.
src/pages/sources/index.astro +7 −6
Not shown: a picture, a generated file, or past the length shown per change.
src/pages/video.astro +226 −0
Not shown: a picture, a generated file, or past the length shown per change.
src/styles/global.css +39 −3
Not shown: a picture, a generated file, or past the length shown per change.