Andorra countries/ad.yaml
none
Changelog f475c2dtree
214 country profiles edited2 files of code, design or docs +296 −10 lines
none
medical
none
medical
medical
medical
none
medical
state
medical
none
none
medical
medical
none
medical
none
medical
none
none
none
none
none
medical
medical
none
none
medical
none
medical
open
medical
medical
none
none
medical
none
medical
medical
medical
none
medical
medical
medical
licensed
none
medical
none
none
medical
medical
medical
none
licensed
none
medical
none
none
high
medical
none
medical
medical
standard
medical
medical
strict
none
none
none
medical
medical
medical
none
none
medical
medical
medical
open
medical
medical
none
none
medical
strict
licensed
none
Only low-THC hemp at or below 0.2% THC from the national or EU variety list may be grown, sown from sealed certified seed, and only low-THC hemp seed may be marketed.[@wiki,d162] Breeding, research growing and seed production of high-THC hemp are reserved for organisations licensed by the public health authority.[@d162] CBD products sit in a restricted grey zone.[@wiki]
medical
strict
licensed
none
none
medical
medical
medical
none
none
none
medical
medical
medical
medical
none
none
medical
medical
none
medical
medical
medical
medical
none
licensed
medical
medical
medical
medical
none
none
medical
none
medical
medical
none
medical
none
medical
none
none
There is no legal recreational supply. Holding drugs for personal use brings a €100– €2,000 misdemeanour fine; selling, holding for sale, buying or transporting for sale brings two to ten years.[@law,cc] Giving drugs for consumption or providing premises brings six months to five years, or two to ten aggravated.[@cc]
law, cc
medical
strict
Food and industrial hemp needs a cultivation permit plus a contract for the whole crop, covering hemp at or below 0.2% THC in dry plant material; applicants declare variety, certified-seed quantity, area and sowing plans, and report land by 1 May.[@law,hemp] A scientific legal entity may grow under a separate land-registration exception.[@law]
law, hemp
licensed
A scientific legal entity may grow hemp under a separate land-registration exception to the permit-and-contract route.[@law] No separate research programme, trial or published study was established by the retained sources.
law
none
medical
medical
medical
none
none
medical
open
none
open
none
none
medical
medical
none
none
none
none
medical
restricted
none
none
none
none
medical
none
strict
licensed
medical
medical
none
none
none
medical
medical
licensed
standard
medical
medical
medical
none
medical
none
none
licensed
none
standard
medical
none
medical
licensed
standard
medical
medical
none
medical
none
none
none
medical
licensed
Hemp may be grown for industrial fibre and seed or for research; EU-catalogue varieties are exempt from the one-year ministry permit requirement.[@z139] CBD from industrial hemp is lawful at up to 0.3% THC since 2022.[@wiki] Growing other cannabis for personal consumption stays criminal, including up to two plants.[@code]
z139, code, wiki
Wikipedia — Cannabis in Slovakia 7 unchanged
medical
standard
licensed
medical
none
none
none
none
medical
none
none
none
none
none
none
none
open
medical
none
medical
none
none
medical
none
medical
medical
strict
none
medical
medical
open
none
medical
none
scripts/profile-claims.test.mjs +14 @@ -830,4 +830,17 @@ test('Swiss small-possession table excludes consumption and trial research retai }); +test('every filled hemp, industry or research context carries its status chip', () => { + const bad = []; + const walkDir = (dir) => fs.readdirSync(dir, { withFileTypes: true }).flatMap((e) => + e.isDirectory() ? walkDir(path.join(dir, e.name)) : e.name.endsWith('.yaml') ? [path.join(dir, e.name)] : []); + for (const f of walkDir(path.join(root, 'countries'))) { + const c = yaml.load(fs.readFileSync(f, 'utf8')); + for (const s of ['hemp', 'production', 'research']) { + if (c.context?.[s] && c.context[s].status === undefined) bad.push(`${path.relative(root, f)}#${s}`); + } + } + assert.deepEqual(bad, []); +}); + test('Taiwan distinguishes legislative passage, effective growing penalties and exceptional medicine permission', () => { const d = country('tw'), p = d.segments.cultivation; @@ -838,5 +851,5 @@ test('Taiwan distinguishes legislative passage, effective growing penalties and assert.equal(d.scores.access, 0); assert.match(d.context.medical.text, /Dravet and Lennox–Gastaut/); - assert.equal(d.context.hemp.status, undefined); + assert.equal(d.context.hemp.status, 'strict'); const all = events(); assert.equal(all.find(e => e.id === 'taiwan-personal-cultivation-amendment-2022').date, '2022-05-04');
src/content.config.ts +3 @@ -53,8 +53,9 @@ const plantingTrade = z.enum(Object.keys(PLANTING_TRADE) as [string, ...string[] const planting = z.object({ seeds: plantingStatus, seeds_trade: plantingTrade, clones: plantingStatus, clones_trade: plantingTrade, text: z.string().min(1), sources: z.array(z.string()) }).strict(); // clubs, driving, visitors: the cited text plus one status from that section's vocabulary (STATUS_SECTIONS) -// the newer ones (`optional` in STATUS_SECTIONS) may leave the status out; a standard section (production) stays required +// a filled hemp, industry or research section must also carry its status chip; only the whole +// section may be left out const statusSections = Object.fromEntries(Object.entries(STATUS_SECTIONS).map(([key, section]) => { const status = z.enum(Object.keys(section.statuses) as [string, ...string[]]); - const block = z.object({ status: section.optional ? status.optional() : status, text: z.string().min(1), sources: z.array(z.string()) }).strict(); + const block = z.object({ status, text: z.string().min(1), sources: z.array(z.string()) }).strict(); return [key, (CONTEXT_IDS as string[]).includes(key) ? block : block.optional()]; }));