diff --git a/Cargo.lock b/Cargo.lock index e9b4cab908a..446fe5dff0f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -188,6 +188,7 @@ dependencies = [ "crlify", "icu", "icu_datagen", + "icu_datagen_bikeshed", "icu_provider", "log", "simple_logger", @@ -908,6 +909,7 @@ dependencies = [ "icu_casemap", "icu_collator", "icu_datagen", + "icu_datagen_bikeshed", "icu_datetime", "icu_decimal", "icu_experimental", @@ -1107,6 +1109,27 @@ dependencies = [ [[package]] name = "icu_datagen" version = "1.5.0" +dependencies = [ + "displaydoc", + "elsa", + "icu", + "icu_datagen_bikeshed", + "icu_provider", + "icu_provider_baked", + "icu_provider_blob", + "icu_provider_fs", + "icu_registry", + "log", + "memchr", + "postcard", + "rayon", + "simple_logger", + "writeable", +] + +[[package]] +name = "icu_datagen_bikeshed" +version = "1.5.0" dependencies = [ "calendrical_calculations", "displaydoc", @@ -1115,27 +1138,24 @@ dependencies = [ "icu", "icu_codepointtrie_builder", "icu_collections", + "icu_datagen", + "icu_experimental", "icu_pattern", "icu_provider", "icu_provider_adapters", - "icu_provider_baked", - "icu_provider_blob", - "icu_provider_fs", "icu_registry", + "icu_segmenter", "itertools", "litemap", "log", - "memchr", "ndarray", "num-bigint", "num-rational", "num-traits", "postcard", - "rayon", "serde", "serde-aux", "serde_json", - "simple_logger", "tinystr", "toml", "twox-hash", @@ -1603,7 +1623,7 @@ dependencies = [ "clap", "crlify", "eyre", - "icu_datagen", + "icu_datagen_bikeshed", "icu_locale_core", "icu_provider", "log", diff --git a/Cargo.toml b/Cargo.toml index 32d37b17220..8fbc78444e2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,6 +35,7 @@ members = [ # Provider "provider/adapters", "provider/baked", + "provider/bikeshed", "provider/blob", "provider/core", "provider/core/macros", @@ -150,6 +151,7 @@ icu_harfbuzz = { version = "~0.2.0", path = "ffi/harfbuzz", default-features = f # Provider icu_datagen = { version = "~1.5.0", path = "provider/datagen", default-features = false } +icu_datagen_bikeshed = { version = "~1.5.0", path = "provider/bikeshed", default-features = false } icu_provider = { version = "~1.5.0", path = "provider/core", default-features = false } icu_provider_macros = { version = "~1.5.0", path = "provider/core/macros", default-features = false } icu_provider_adapters = { version = "~1.5.0", path = "provider/adapters", default-features = false } diff --git a/provider/bikeshed/.gitattributes b/provider/bikeshed/.gitattributes new file mode 100644 index 00000000000..3598c63c7d5 --- /dev/null +++ b/provider/bikeshed/.gitattributes @@ -0,0 +1,2 @@ +data/** linguist-generated=true +tests/data/** linguist-generated=true diff --git a/provider/bikeshed/Cargo.toml b/provider/bikeshed/Cargo.toml new file mode 100644 index 00000000000..170c26501a7 --- /dev/null +++ b/provider/bikeshed/Cargo.toml @@ -0,0 +1,100 @@ +# This file is part of ICU4X. For terms of use, please see the file +# called LICENSE at the top level of the ICU4X source tree +# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +[package] +name = "icu_datagen_bikeshed" +description = "A data provider based on CLDR and ICU data." +license = "Unicode-3.0" +include = [ + "data/**/*", + "src/**/*", + "examples/**/*", + "benches/**/*", + "tests/**/*", + "!tests/data/json/**/*", + "!tests/data/postcard/**/*", + "Cargo.toml", + "LICENSE", + "README.md", +] + +authors.workspace = true +categories.workspace = true +edition.workspace = true +homepage.workspace = true +repository.workspace = true +rust-version.workspace = true +version.workspace = true + +[package.metadata.docs.rs] +all-features = true + +[dependencies] + +# ICU components +icu = { workspace = true, features = ["datagen"] } + +# ICU infrastructure +calendrical_calculations = { workspace = true } +icu_codepointtrie_builder = { workspace = true } +icu_collections = { workspace = true, features = ["serde"] } +icu_pattern = { workspace = true, features = ["alloc"] } +icu_provider = { workspace = true, features = ["std", "logging", "datagen"]} +icu_provider_adapters = { workspace = true } +icu_registry = { workspace = true } +litemap = { workspace = true, features = ["serde"] } +tinystr = { workspace = true, features = ["alloc", "serde", "zerovec"] } +writeable = { workspace = true } +zerotrie = { workspace = true, features = ["alloc"] } +zerovec = { workspace = true, features = ["serde", "yoke"] } + +# External dependencies +displaydoc = { workspace = true } +either = { workspace = true } +elsa = { workspace = true } +itertools = { workspace = true } +log = { workspace = true } +ndarray = { workspace = true } +serde = { workspace = true, features = ["derive", "alloc"] } +serde_json = { workspace = true } +serde-aux = { workspace = true } +toml = { workspace = true } +twox-hash = { workspace = true } +zip = { workspace = true, features = ["deflate"] } + +# `networking` feature +ureq = { workspace = true, optional = true} + +# `experimental` feature +icu_experimental = { workspace = true, features = ["datagen"], optional = true } +num-bigint = { workspace = true, optional = true } +num-rational = { workspace = true, optional = true } +num-traits = { workspace = true, optional = true } + +[dev-dependencies] +postcard = { workspace = true, features = ["alloc"] } +icu_datagen = { workspace = true, features = ["experimental"] } +icu_provider = { workspace = true, features = ["deserialize_postcard_1"] } +icu_segmenter = { path = "../../components/segmenter", features = ["lstm"] } + +[features] +default = ["use_wasm", "networking"] +# Use wasm for building codepointtries +use_wasm = ["icu_codepointtrie_builder/wasm"] +# Use local ICU4C libraries for building codepointtries +# (will do nothing if used with `use_wasm`) +# If neither `use_wasm` nor `use_icu4c` are enabled, +# rule based segmenter data will not be generated. +use_icu4c = ["icu_codepointtrie_builder/icu4c"] +networking = ["dep:ureq"] +experimental = [ + "icu/experimental", + "dep:num-bigint", + "dep:num-rational", + "dep:num-traits", +] + +[package.metadata.cargo-all-features] +# We don't need working CPT builders for check +skip_feature_sets = [["use_icu4c"], ["use_wasm"]] diff --git a/provider/bikeshed/LICENSE b/provider/bikeshed/LICENSE new file mode 100644 index 00000000000..c9be6012c53 --- /dev/null +++ b/provider/bikeshed/LICENSE @@ -0,0 +1,46 @@ +UNICODE LICENSE V3 + +COPYRIGHT AND PERMISSION NOTICE + +Copyright © 2020-2024 Unicode, Inc. + +NOTICE TO USER: Carefully read the following legal agreement. BY +DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR +SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE +TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT +DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of data files and any associated documentation (the "Data Files") or +software and any associated documentation (the "Software") to deal in the +Data Files or Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, and/or sell +copies of the Data Files or Software, and to permit persons to whom the +Data Files or Software are furnished to do so, provided that either (a) +this copyright and permission notice appear with all copies of the Data +Files or Software, or (b) this copyright and permission notice appear in +associated Documentation. + +THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF +THIRD PARTY RIGHTS. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE +BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, +OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA +FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in these Data Files or Software without prior written +authorization of the copyright holder. + +SPDX-License-Identifier: Unicode-3.0 + +— + +Portions of ICU4X may have been adapted from ICU4C and/or ICU4J. +ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others. diff --git a/provider/bikeshed/README.md b/provider/bikeshed/README.md new file mode 100644 index 00000000000..0b3bdd732cf --- /dev/null +++ b/provider/bikeshed/README.md @@ -0,0 +1,24 @@ +# icu_datagen_bikeshed [![crates.io](https://img.shields.io/crates/v/icu_datagen_bikeshed)](https://crates.io/crates/icu_datagen_bikeshed) + + + +`icu_datagen_bikeshed` defines [`DatagenProvider`], the authorative ICU4X [`DataProvider`] that produces data from +CLDR and ICU sources. + +As the name suggests, [`DatagenProvider`] is mainly intended as a source for the `icu_datagen` crate, +which transforms the data into a more efficient format. + +## Cargo features + +* `networking` + * enables networking support to download CLDR and ICU source data from GitHub +* `use_wasm` / `use_icu4c` + * see the documentation on [`icu_codepointtrie_builder`](icu_codepointtrie_builder#build-configuration) +* `experimental` + * enables markers defined in the unstable `icu::experimental` module + + + +## More Information + +For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x). diff --git a/provider/datagen/data/japanese-golden/calendar/japanext@1/und.json b/provider/bikeshed/data/japanese-golden/calendar/japanext@1/und.json similarity index 100% rename from provider/datagen/data/japanese-golden/calendar/japanext@1/und.json rename to provider/bikeshed/data/japanese-golden/calendar/japanext@1/und.json diff --git a/provider/datagen/data/japanese-golden/manifest.json b/provider/bikeshed/data/japanese-golden/manifest.json similarity index 100% rename from provider/datagen/data/japanese-golden/manifest.json rename to provider/bikeshed/data/japanese-golden/manifest.json diff --git a/provider/datagen/data/segmenter/grapheme.toml b/provider/bikeshed/data/segmenter/grapheme.toml similarity index 100% rename from provider/datagen/data/segmenter/grapheme.toml rename to provider/bikeshed/data/segmenter/grapheme.toml diff --git a/provider/datagen/data/segmenter/line.toml b/provider/bikeshed/data/segmenter/line.toml similarity index 100% rename from provider/datagen/data/segmenter/line.toml rename to provider/bikeshed/data/segmenter/line.toml diff --git a/provider/datagen/data/segmenter/sentence.toml b/provider/bikeshed/data/segmenter/sentence.toml similarity index 100% rename from provider/datagen/data/segmenter/sentence.toml rename to provider/bikeshed/data/segmenter/sentence.toml diff --git a/provider/datagen/data/segmenter/uprops/small/ExtPict.toml b/provider/bikeshed/data/segmenter/uprops/small/ExtPict.toml similarity index 100% rename from provider/datagen/data/segmenter/uprops/small/ExtPict.toml rename to provider/bikeshed/data/segmenter/uprops/small/ExtPict.toml diff --git a/provider/datagen/data/segmenter/uprops/small/GCB.toml b/provider/bikeshed/data/segmenter/uprops/small/GCB.toml similarity index 100% rename from provider/datagen/data/segmenter/uprops/small/GCB.toml rename to provider/bikeshed/data/segmenter/uprops/small/GCB.toml diff --git a/provider/datagen/data/segmenter/uprops/small/InSC.toml b/provider/bikeshed/data/segmenter/uprops/small/InSC.toml similarity index 100% rename from provider/datagen/data/segmenter/uprops/small/InSC.toml rename to provider/bikeshed/data/segmenter/uprops/small/InSC.toml diff --git a/provider/datagen/data/segmenter/uprops/small/SB.toml b/provider/bikeshed/data/segmenter/uprops/small/SB.toml similarity index 100% rename from provider/datagen/data/segmenter/uprops/small/SB.toml rename to provider/bikeshed/data/segmenter/uprops/small/SB.toml diff --git a/provider/datagen/data/segmenter/uprops/small/WB.toml b/provider/bikeshed/data/segmenter/uprops/small/WB.toml similarity index 100% rename from provider/datagen/data/segmenter/uprops/small/WB.toml rename to provider/bikeshed/data/segmenter/uprops/small/WB.toml diff --git a/provider/datagen/data/segmenter/uprops/small/ccc.toml b/provider/bikeshed/data/segmenter/uprops/small/ccc.toml similarity index 100% rename from provider/datagen/data/segmenter/uprops/small/ccc.toml rename to provider/bikeshed/data/segmenter/uprops/small/ccc.toml diff --git a/provider/datagen/data/segmenter/uprops/small/ea.toml b/provider/bikeshed/data/segmenter/uprops/small/ea.toml similarity index 100% rename from provider/datagen/data/segmenter/uprops/small/ea.toml rename to provider/bikeshed/data/segmenter/uprops/small/ea.toml diff --git a/provider/datagen/data/segmenter/uprops/small/gc.toml b/provider/bikeshed/data/segmenter/uprops/small/gc.toml similarity index 100% rename from provider/datagen/data/segmenter/uprops/small/gc.toml rename to provider/bikeshed/data/segmenter/uprops/small/gc.toml diff --git a/provider/datagen/data/segmenter/uprops/small/lb.toml b/provider/bikeshed/data/segmenter/uprops/small/lb.toml similarity index 100% rename from provider/datagen/data/segmenter/uprops/small/lb.toml rename to provider/bikeshed/data/segmenter/uprops/small/lb.toml diff --git a/provider/datagen/data/segmenter/uprops/small/sc.toml b/provider/bikeshed/data/segmenter/uprops/small/sc.toml similarity index 100% rename from provider/datagen/data/segmenter/uprops/small/sc.toml rename to provider/bikeshed/data/segmenter/uprops/small/sc.toml diff --git a/provider/datagen/data/segmenter/word.toml b/provider/bikeshed/data/segmenter/word.toml similarity index 100% rename from provider/datagen/data/segmenter/word.toml rename to provider/bikeshed/data/segmenter/word.toml diff --git a/provider/datagen/src/transform/cldr/calendar/chinese_based.rs b/provider/bikeshed/src/calendar/chinese_based.rs similarity index 98% rename from provider/datagen/src/transform/cldr/calendar/chinese_based.rs rename to provider/bikeshed/src/calendar/chinese_based.rs index efd401a1c33..03481aec97b 100644 --- a/provider/datagen/src/transform/cldr/calendar/chinese_based.rs +++ b/provider/bikeshed/src/calendar/chinese_based.rs @@ -4,7 +4,7 @@ use std::collections::HashSet; -use crate::provider::DatagenProvider; +use crate::DatagenProvider; use calendrical_calculations::chinese_based::{Chinese, ChineseBased, Dangi}; use icu::calendar::provider::chinese_based::*; use icu_provider::datagen::IterableDataProvider; diff --git a/provider/datagen/src/transform/cldr/calendar/islamic.rs b/provider/bikeshed/src/calendar/islamic.rs similarity index 98% rename from provider/datagen/src/transform/cldr/calendar/islamic.rs rename to provider/bikeshed/src/calendar/islamic.rs index 4172b395fd2..5de1733656b 100644 --- a/provider/datagen/src/transform/cldr/calendar/islamic.rs +++ b/provider/bikeshed/src/calendar/islamic.rs @@ -4,7 +4,7 @@ use std::collections::HashSet; -use crate::provider::DatagenProvider; +use crate::DatagenProvider; use calendrical_calculations::islamic::{ IslamicBasedMarker, ObservationalIslamicMarker, SaudiIslamicMarker, }; diff --git a/provider/datagen/src/transform/cldr/calendar/japanese.rs b/provider/bikeshed/src/calendar/japanese.rs similarity index 95% rename from provider/datagen/src/transform/cldr/calendar/japanese.rs rename to provider/bikeshed/src/calendar/japanese.rs index b05e78f3f19..a343b858929 100644 --- a/provider/datagen/src/transform/cldr/calendar/japanese.rs +++ b/provider/bikeshed/src/calendar/japanese.rs @@ -2,8 +2,8 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; +use crate::cldr_serde; +use crate::DatagenProvider; use icu::calendar::provider::*; use icu::locale::langid; use icu_provider::datagen::IterableDataProvider; @@ -16,8 +16,7 @@ use std::sync::OnceLock; use tinystr::tinystr; use tinystr::TinyStr16; -const JAPANEXT_FILE: &str = - include_str!("../../../../data/japanese-golden/calendar/japanext@1/und.json"); +const JAPANEXT_FILE: &str = include_str!("../../data/japanese-golden/calendar/japanext@1/und.json"); impl DatagenProvider { fn load_japanese_eras( @@ -102,7 +101,7 @@ impl DatagenProvider { `ICU4X_SKIP_JAPANESE_INTEGRITY_CHECK=1 cargo run -p icu4x-datagen -- --markers calendar/japanext@1 --format dir --syntax json \ --out provider/datagen/data/japanese-golden --pretty --overwrite` in the icu4x repo and inspect the diff to \ check which situation it is. If a new era has been introduced, commit the diff, if not, it's likely that japanese.rs \ - in icu_datagen will need to be updated to handle the data changes." + in icu_datagen_bikeshed will need to be updated to handle the data changes." )); } } @@ -193,7 +192,7 @@ impl IterableDataProvider for DatagenProvider { } /// Computes the japanese era code map or loads from static cache -pub(in crate::provider) fn get_era_code_map() -> &'static BTreeMap { +pub(crate) fn get_era_code_map() -> &'static BTreeMap { static MAP: OnceLock> = OnceLock::new(); MAP.get_or_init(|| { diff --git a/provider/datagen/src/transform/cldr/calendar/mod.rs b/provider/bikeshed/src/calendar/mod.rs similarity index 73% rename from provider/datagen/src/transform/cldr/calendar/mod.rs rename to provider/bikeshed/src/calendar/mod.rs index 29df7c06db0..3d2a1f0d7f4 100644 --- a/provider/datagen/src/transform/cldr/calendar/mod.rs +++ b/provider/bikeshed/src/calendar/mod.rs @@ -3,10 +3,10 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). /// Data for calendar arithmetic -pub(in crate::provider) mod japanese; +pub(crate) mod japanese; /// Cached data for chinese-based calendars -pub(in crate::provider) mod chinese_based; +pub(crate) mod chinese_based; /// Cached data for islamic calendars -pub(in crate::provider) mod islamic; +pub(crate) mod islamic; diff --git a/provider/datagen/src/transform/cldr/characters/mod.rs b/provider/bikeshed/src/characters/mod.rs similarity index 99% rename from provider/datagen/src/transform/cldr/characters/mod.rs rename to provider/bikeshed/src/characters/mod.rs index d2d4edfd2b0..f4cdb2b922c 100644 --- a/provider/datagen/src/transform/cldr/characters/mod.rs +++ b/provider/bikeshed/src/characters/mod.rs @@ -5,9 +5,9 @@ use std::collections::HashSet; use std::marker::PhantomData; -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::cldr_serde; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList; use icu::properties::provider::*; use icu_provider::prelude::*; diff --git a/provider/datagen/src/transform/cldr/source.rs b/provider/bikeshed/src/cldr_cache.rs similarity index 85% rename from provider/datagen/src/transform/cldr/source.rs rename to provider/bikeshed/src/cldr_cache.rs index 6ab9619a35c..f7b0a294799 100644 --- a/provider/datagen/src/transform/cldr/source.rs +++ b/provider/bikeshed/src/cldr_cache.rs @@ -4,8 +4,8 @@ #![allow(dead_code)] // features -use crate::provider::source::SerdeCache; -use crate::provider::CoverageLevel; +use crate::source::SerdeCache; +use crate::CoverageLevel; use icu::calendar::provider::EraStartDate; use icu::locale::provider::{ LikelySubtagsExtendedV1Marker, LikelySubtagsForLanguageV1Marker, @@ -25,59 +25,59 @@ use std::str::FromStr; use std::sync::OnceLock; #[derive(Debug)] -pub(in crate::provider) struct CldrCache { - pub(in crate::provider) serde_cache: SerdeCache, +pub(crate) struct CldrCache { + pub(crate) serde_cache: SerdeCache, dir_suffix: OnceLock>, extended_locale_expander: OnceLock>, modern_japanese_eras: OnceLock, DataError>>, - #[cfg(feature = "experimental_components")] + #[cfg(feature = "experimental")] // used by transforms/mod.rs - pub(in crate::provider) transforms: OnceLock< + pub(crate) transforms: OnceLock< Result, DataError>, >, } impl CldrCache { - pub(in crate::provider) fn from_serde_cache(serde_cache: SerdeCache) -> Self { + pub(crate) fn from_serde_cache(serde_cache: SerdeCache) -> Self { CldrCache { serde_cache, dir_suffix: Default::default(), extended_locale_expander: Default::default(), modern_japanese_eras: Default::default(), - #[cfg(feature = "experimental_components")] + #[cfg(feature = "experimental")] transforms: Default::default(), } } - pub(in crate::provider) fn core(&self) -> CldrDirNoLang<'_> { + pub(crate) fn core(&self) -> CldrDirNoLang<'_> { CldrDirNoLang(self, "cldr-core".to_owned()) } - pub(in crate::provider) fn numbers(&self) -> CldrDirLang<'_> { + pub(crate) fn numbers(&self) -> CldrDirLang<'_> { CldrDirLang(self, "cldr-numbers".to_owned()) } - pub(in crate::provider) fn misc(&self) -> CldrDirLang<'_> { + pub(crate) fn misc(&self) -> CldrDirLang<'_> { CldrDirLang(self, "cldr-misc".to_owned()) } - pub(in crate::provider) fn bcp47(&self) -> CldrDirNoLang<'_> { + pub(crate) fn bcp47(&self) -> CldrDirNoLang<'_> { CldrDirNoLang(self, "cldr-bcp47/bcp47".to_string()) } - pub(in crate::provider) fn personnames(&self) -> CldrDirLang<'_> { + pub(crate) fn personnames(&self) -> CldrDirLang<'_> { CldrDirLang(self, "cldr-person-names".to_owned()) } - pub(in crate::provider) fn displaynames(&self) -> CldrDirLang<'_> { + pub(crate) fn displaynames(&self) -> CldrDirLang<'_> { CldrDirLang(self, "cldr-localenames".to_owned()) } - pub(in crate::provider) fn units(&self) -> CldrDirLang<'_> { + pub(crate) fn units(&self) -> CldrDirLang<'_> { CldrDirLang(self, "cldr-units".to_owned()) } - pub(in crate::provider) fn dates(&self, cal: &str) -> CldrDirLang<'_> { + pub(crate) fn dates(&self, cal: &str) -> CldrDirLang<'_> { CldrDirLang( self, if cal == "gregorian" || cal == "generic" { @@ -88,14 +88,14 @@ impl CldrCache { ) } - pub(in crate::provider) fn locales( + pub(crate) fn locales( &self, levels: impl IntoIterator, ) -> Result, DataError> { let levels = levels.into_iter().collect::>(); Ok(self .serde_cache - .read_and_parse_json::( + .read_and_parse_json::( "cldr-core/coverageLevels.json", )? .coverage_levels @@ -107,7 +107,7 @@ impl CldrCache { .collect()) } - pub(in crate::provider) fn dir_suffix(&self) -> Result<&'static str, DataError> { + pub(crate) fn dir_suffix(&self) -> Result<&'static str, DataError> { *self.dir_suffix.get_or_init(|| { if self.serde_cache.list("cldr-misc-full")?.next().is_some() { Ok("full") @@ -151,7 +151,7 @@ impl CldrCache { /// Get the list of eras in the japanese calendar considered "modern" (post-Meiji, inclusive) /// /// These will be in CLDR era index form; these are usually numbers - pub(in crate::provider) fn modern_japanese_eras(&self) -> Result<&BTreeSet, DataError> { + pub(crate) fn modern_japanese_eras(&self) -> Result<&BTreeSet, DataError> { self.modern_japanese_eras .get_or_init(|| { let era_dates: &super::cldr_serde::japanese::Resource = self @@ -226,10 +226,10 @@ impl CldrCache { } } -pub(in crate::provider) struct CldrDirNoLang<'a>(&'a CldrCache, String); +pub(crate) struct CldrDirNoLang<'a>(&'a CldrCache, String); impl<'a> CldrDirNoLang<'a> { - pub(in crate::provider) fn read_and_parse(&self, file_name: &str) -> Result<&'a S, DataError> + pub(crate) fn read_and_parse(&self, file_name: &str) -> Result<&'a S, DataError> where for<'de> S: serde::Deserialize<'de> + 'static + Send + Sync, { @@ -239,10 +239,10 @@ impl<'a> CldrDirNoLang<'a> { } } -pub(in crate::provider) struct CldrDirLang<'a>(&'a CldrCache, String); +pub(crate) struct CldrDirLang<'a>(&'a CldrCache, String); impl<'a> CldrDirLang<'a> { - pub(in crate::provider) fn read_and_parse( + pub(crate) fn read_and_parse( &self, lang: &LanguageIdentifier, file_name: &str, @@ -263,7 +263,7 @@ impl<'a> CldrDirLang<'a> { } } - pub(in crate::provider) fn list_langs( + pub(crate) fn list_langs( &self, ) -> Result + '_, DataError> { let dir_suffix = self.0.dir_suffix()?; @@ -280,7 +280,7 @@ impl<'a> CldrDirLang<'a> { .into_iter()) } - pub(in crate::provider) fn file_exists( + pub(crate) fn file_exists( &self, lang: &LanguageIdentifier, file_name: &str, diff --git a/provider/datagen/src/transform/cldr/cldr_serde/aliases.rs b/provider/bikeshed/src/cldr_serde/aliases.rs similarity index 51% rename from provider/datagen/src/transform/cldr/cldr_serde/aliases.rs rename to provider/bikeshed/src/cldr_serde/aliases.rs index 07190a138ca..127090005d7 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/aliases.rs +++ b/provider/bikeshed/src/cldr_serde/aliases.rs @@ -12,36 +12,36 @@ use std::collections::HashMap; use tinystr::TinyAsciiStr; #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Replacement { +pub(crate) struct Replacement { #[serde(rename = "_replacement")] - pub(in crate::provider) replacement: T, + pub(crate) replacement: T, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Alias { +pub(crate) struct Alias { #[serde(rename = "languageAlias")] - pub(in crate::provider) language_aliases: HashMap>, + pub(crate) language_aliases: HashMap>, #[serde(rename = "scriptAlias")] - pub(in crate::provider) script_aliases: HashMap, Replacement>>, + pub(crate) script_aliases: HashMap, Replacement>>, #[serde(rename = "territoryAlias")] - pub(in crate::provider) region_aliases: HashMap, Replacement>, + pub(crate) region_aliases: HashMap, Replacement>, #[serde(rename = "variantAlias")] - pub(in crate::provider) variant_aliases: HashMap, Replacement>>, + pub(crate) variant_aliases: HashMap, Replacement>>, #[serde(rename = "subdivisionAlias")] - pub(in crate::provider) subdivision_aliases: HashMap, Replacement>, + pub(crate) subdivision_aliases: HashMap, Replacement>, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Metadata { - pub(in crate::provider) alias: Alias, +pub(crate) struct Metadata { + pub(crate) alias: Alias, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Supplemental { - pub(in crate::provider) metadata: Metadata, +pub(crate) struct Supplemental { + pub(crate) metadata: Metadata, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Resource { - pub(in crate::provider) supplemental: Supplemental, +pub(crate) struct Resource { + pub(crate) supplemental: Supplemental, } diff --git a/provider/datagen/src/transform/cldr/cldr_serde/ca.rs b/provider/bikeshed/src/cldr_serde/ca.rs similarity index 58% rename from provider/datagen/src/transform/cldr/cldr_serde/ca.rs rename to provider/bikeshed/src/cldr_serde/ca.rs index 66d16f3cd0e..734a33cb699 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/ca.rs +++ b/provider/bikeshed/src/cldr_serde/ca.rs @@ -16,33 +16,33 @@ use std::collections::BTreeMap; use std::collections::HashMap; #[derive(Debug, PartialEq, Clone, Deserialize)] -pub(in crate::provider) struct FormatWidths { - pub(in crate::provider) abbreviated: Symbols, - pub(in crate::provider) narrow: Symbols, - pub(in crate::provider) short: Option, - pub(in crate::provider) wide: Symbols, +pub(crate) struct FormatWidths { + pub(crate) abbreviated: Symbols, + pub(crate) narrow: Symbols, + pub(crate) short: Option, + pub(crate) wide: Symbols, } #[derive(Debug, PartialEq, Clone, Deserialize)] -pub(in crate::provider) struct StandAloneWidths { - pub(in crate::provider) abbreviated: Option, - pub(in crate::provider) narrow: Option, - pub(in crate::provider) short: Option, - pub(in crate::provider) wide: Option, +pub(crate) struct StandAloneWidths { + pub(crate) abbreviated: Option, + pub(crate) narrow: Option, + pub(crate) short: Option, + pub(crate) wide: Option, } #[derive(Debug, PartialEq, Clone, Deserialize)] -pub(in crate::provider) struct Numeric { - pub(in crate::provider) all: Symbols, +pub(crate) struct Numeric { + pub(crate) all: Symbols, } #[derive(Debug, PartialEq, Clone, Deserialize)] -pub(in crate::provider) struct Contexts { - pub(in crate::provider) format: FormatWidths, +pub(crate) struct Contexts { + pub(crate) format: FormatWidths, #[serde(rename = "stand-alone")] - pub(in crate::provider) stand_alone: Option>, + pub(crate) stand_alone: Option>, // currently only found on monthPatterns - pub(in crate::provider) numeric: Option>, + pub(crate) numeric: Option>, } impl Contexts { @@ -73,7 +73,7 @@ impl Contexts { /// /// I.e. missing `standalone`s fall back to `format`, missing `short` falls back to /// `abbr`. - pub(in crate::provider) fn get_symbols(&self, context: Context, length: Length) -> &Symbols { + pub(crate) fn get_symbols(&self, context: Context, length: Length) -> &Symbols { if context == Context::Standalone { if let Some(sym) = self.get_symbols_exact(context, length) { return sym; @@ -97,36 +97,36 @@ impl Contexts { } #[derive(Debug, PartialEq, Clone, Deserialize)] -pub(in crate::provider) struct MonthSymbols(pub(in crate::provider) HashMap); +pub(crate) struct MonthSymbols(pub(crate) HashMap); #[derive(Debug, PartialEq, Clone, Deserialize)] -pub(in crate::provider) struct MonthPatternSymbols { - pub(in crate::provider) leap: String, +pub(crate) struct MonthPatternSymbols { + pub(crate) leap: String, } #[derive(Debug, PartialEq, Clone, Deserialize)] -pub(in crate::provider) struct DaySymbols { - pub(in crate::provider) sun: String, - pub(in crate::provider) mon: String, - pub(in crate::provider) tue: String, - pub(in crate::provider) wed: String, - pub(in crate::provider) thu: String, - pub(in crate::provider) fri: String, - pub(in crate::provider) sat: String, +pub(crate) struct DaySymbols { + pub(crate) sun: String, + pub(crate) mon: String, + pub(crate) tue: String, + pub(crate) wed: String, + pub(crate) thu: String, + pub(crate) fri: String, + pub(crate) sat: String, } // The day period symbols are Cow<'static, str> instead of String because the Option // needs to be retained when converting them into Cow for the data provider. #[derive(Debug, PartialEq, Clone, Deserialize)] -pub(in crate::provider) struct DayPeriodSymbols { - pub(in crate::provider) am: Cow<'static, str>, - pub(in crate::provider) pm: Cow<'static, str>, - pub(in crate::provider) noon: Option>, - pub(in crate::provider) midnight: Option>, +pub(crate) struct DayPeriodSymbols { + pub(crate) am: Cow<'static, str>, + pub(crate) pm: Cow<'static, str>, + pub(crate) noon: Option>, + pub(crate) midnight: Option>, } #[derive(PartialEq, Debug, Deserialize, Clone)] #[serde(untagged)] -pub(in crate::provider) enum LengthPattern { +pub(crate) enum LengthPattern { Plain(String), WithNumberingSystems { #[serde(rename = "_value")] @@ -138,7 +138,7 @@ pub(in crate::provider) enum LengthPattern { impl LengthPattern { /// Get the pattern, dropping the numbering system if present. - pub(in crate::provider) fn get_pattern(&self) -> &String { + pub(crate) fn get_pattern(&self) -> &String { match self { Self::Plain(pattern) => pattern, Self::WithNumberingSystems { pattern, .. } => pattern, @@ -147,20 +147,20 @@ impl LengthPattern { } #[derive(PartialEq, Debug, Deserialize, Clone, Default)] -pub(in crate::provider) struct Eras { +pub(crate) struct Eras { #[serde(rename = "eraNames")] - pub(in crate::provider) names: HashMap, + pub(crate) names: HashMap, #[serde(rename = "eraAbbr")] - pub(in crate::provider) abbr: HashMap, + pub(crate) abbr: HashMap, #[serde(rename = "eraNarrow")] - pub(in crate::provider) narrow: HashMap, + pub(crate) narrow: HashMap, } impl Eras { /// Load the era corresponding to a [`Length`] value /// /// Panics on Length::Short - pub(in crate::provider) fn load(&self, length: Length) -> &HashMap { + pub(crate) fn load(&self, length: Length) -> &HashMap { match length { Length::Abbr => &self.abbr, Length::Narrow => &self.narrow, @@ -173,25 +173,25 @@ impl Eras { } #[derive(PartialEq, Debug, Deserialize, Clone)] -pub(in crate::provider) struct LengthPatterns { - pub(in crate::provider) full: LengthPattern, - pub(in crate::provider) long: LengthPattern, - pub(in crate::provider) medium: LengthPattern, - pub(in crate::provider) short: LengthPattern, +pub(crate) struct LengthPatterns { + pub(crate) full: LengthPattern, + pub(crate) long: LengthPattern, + pub(crate) medium: LengthPattern, + pub(crate) short: LengthPattern, } #[derive(PartialEq, Debug, Deserialize, Clone)] -pub(in crate::provider) struct DateTimeFormats { - pub(in crate::provider) full: LengthPattern, - pub(in crate::provider) long: LengthPattern, - pub(in crate::provider) medium: LengthPattern, - pub(in crate::provider) short: LengthPattern, +pub(crate) struct DateTimeFormats { + pub(crate) full: LengthPattern, + pub(crate) long: LengthPattern, + pub(crate) medium: LengthPattern, + pub(crate) short: LengthPattern, #[serde(rename = "availableFormats")] - pub(in crate::provider) available_formats: AvailableFormats, + pub(crate) available_formats: AvailableFormats, } impl LengthPatterns { - pub(in crate::provider) fn get_pattern(&self, length: PatternLength) -> &LengthPattern { + pub(crate) fn get_pattern(&self, length: PatternLength) -> &LengthPattern { match length { PatternLength::Full => &self.full, PatternLength::Long => &self.long, @@ -202,7 +202,7 @@ impl LengthPatterns { } impl DateTimeFormats { - pub(in crate::provider) fn get_pattern(&self, length: PatternLength) -> &LengthPattern { + pub(crate) fn get_pattern(&self, length: PatternLength) -> &LengthPattern { match length { PatternLength::Full => &self.full, PatternLength::Long => &self.long, @@ -213,11 +213,11 @@ impl DateTimeFormats { } #[derive(PartialEq, Clone, Debug, Deserialize)] -pub(in crate::provider) struct AvailableFormats(pub(in crate::provider) HashMap); +pub(crate) struct AvailableFormats(pub(crate) HashMap); #[derive(PartialEq, Clone, Debug, Deserialize)] -pub(in crate::provider) struct CyclicNameSets { - pub(in crate::provider) years: Option>>, +pub(crate) struct CyclicNameSets { + pub(crate) years: Option>>, } /// This struct represents a 1:1 mapping of the CLDR ca-gregorian.json data at the key @@ -226,32 +226,32 @@ pub(in crate::provider) struct CyclicNameSets { /// e.g. /// #[derive(PartialEq, Debug, Deserialize, Clone)] -pub(in crate::provider) struct Dates { - pub(in crate::provider) months: Contexts, +pub(crate) struct Dates { + pub(crate) months: Contexts, #[serde(rename = "monthPatterns")] - pub(in crate::provider) month_patterns: Option>, - pub(in crate::provider) days: Contexts, - pub(in crate::provider) eras: Option, + pub(crate) month_patterns: Option>, + pub(crate) days: Contexts, + pub(crate) eras: Option, #[serde(rename = "cyclicNameSets")] - pub(in crate::provider) cyclic_name_sets: Option, + pub(crate) cyclic_name_sets: Option, #[serde(rename = "dayPeriods")] - pub(in crate::provider) day_periods: Contexts, + pub(crate) day_periods: Contexts, #[serde(rename = "dateFormats")] - pub(in crate::provider) date_formats: LengthPatterns, + pub(crate) date_formats: LengthPatterns, #[serde(rename = "timeFormats")] - pub(in crate::provider) time_formats: LengthPatterns, + pub(crate) time_formats: LengthPatterns, #[serde(rename = "dateTimeFormats")] - pub(in crate::provider) datetime_formats: DateTimeFormats, + pub(crate) datetime_formats: DateTimeFormats, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct DatesCalendars { - pub(in crate::provider) calendars: HashMap, +pub(crate) struct DatesCalendars { + pub(crate) calendars: HashMap, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct LangDates { - pub(in crate::provider) dates: DatesCalendars, +pub(crate) struct LangDates { + pub(crate) dates: DatesCalendars, } -pub(in crate::provider) type Resource = super::LocaleResource; +pub(crate) type Resource = super::LocaleResource; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/coverage_levels.rs b/provider/bikeshed/src/cldr_serde/coverage_levels.rs similarity index 70% rename from provider/datagen/src/transform/cldr/cldr_serde/coverage_levels.rs rename to provider/bikeshed/src/cldr_serde/coverage_levels.rs index 3241b1c8fc7..c71e9dd8db9 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/coverage_levels.rs +++ b/provider/bikeshed/src/cldr_serde/coverage_levels.rs @@ -7,8 +7,7 @@ use std::collections::HashMap; // cldr-core/coverageLevels.json #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Resource { +pub(crate) struct Resource { #[serde(rename = "coverageLevels")] - pub(in crate::provider) coverage_levels: - HashMap, + pub(crate) coverage_levels: HashMap, } diff --git a/provider/datagen/src/transform/cldr/cldr_serde/currencies/data.rs b/provider/bikeshed/src/cldr_serde/currencies/data.rs similarity index 55% rename from provider/datagen/src/transform/cldr/cldr_serde/currencies/data.rs rename to provider/bikeshed/src/cldr_serde/currencies/data.rs index 6411785ac8d..11dc4778649 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/currencies/data.rs +++ b/provider/bikeshed/src/cldr_serde/currencies/data.rs @@ -12,43 +12,43 @@ use std::collections::BTreeMap; use tinystr::UnvalidatedTinyAsciiStr; #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct CurrencyPatterns { +pub(crate) struct CurrencyPatterns { #[serde(rename = "symbol")] - pub(in crate::provider) short: Option, + pub(crate) short: Option, #[serde(rename = "symbol-alt-narrow")] - pub(in crate::provider) narrow: Option, + pub(crate) narrow: Option, #[serde(rename = "displayName")] - pub(in crate::provider) display_name: Option, + pub(crate) display_name: Option, #[serde(rename = "displayName-count-zero")] - pub(in crate::provider) zero: Option, + pub(crate) zero: Option, #[serde(rename = "displayName-count-one")] - pub(in crate::provider) one: Option, + pub(crate) one: Option, #[serde(rename = "displayName-count-two")] - pub(in crate::provider) two: Option, + pub(crate) two: Option, #[serde(rename = "displayName-count-few")] - pub(in crate::provider) few: Option, + pub(crate) few: Option, #[serde(rename = "displayName-count-many")] - pub(in crate::provider) many: Option, + pub(crate) many: Option, #[serde(rename = "displayName-count-other")] - pub(in crate::provider) other: Option, + pub(crate) other: Option, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Numbers { - pub(in crate::provider) currencies: BTreeMap, CurrencyPatterns>, +pub(crate) struct Numbers { + pub(crate) currencies: BTreeMap, CurrencyPatterns>, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct LangNumbers { - pub(in crate::provider) numbers: Numbers, +pub(crate) struct LangNumbers { + pub(crate) numbers: Numbers, } -pub(in crate::provider) type Resource = super::super::LocaleResource; +pub(crate) type Resource = super::super::LocaleResource; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/currencies/mod.rs b/provider/bikeshed/src/cldr_serde/currencies/mod.rs similarity index 100% rename from provider/datagen/src/transform/cldr/cldr_serde/currencies/mod.rs rename to provider/bikeshed/src/cldr_serde/currencies/mod.rs diff --git a/provider/datagen/src/transform/cldr/cldr_serde/currencies/supplemental.rs b/provider/bikeshed/src/cldr_serde/currencies/supplemental.rs similarity index 62% rename from provider/datagen/src/transform/cldr/cldr_serde/currencies/supplemental.rs rename to provider/bikeshed/src/cldr_serde/currencies/supplemental.rs index ff326f396a4..36f6917feb5 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/currencies/supplemental.rs +++ b/provider/bikeshed/src/cldr_serde/currencies/supplemental.rs @@ -14,43 +14,43 @@ use tinystr::TinyAsciiStr; type ISOCode = TinyAsciiStr<3>; #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct RoundingModes { +pub(crate) struct RoundingModes { // TODO: Get `deserialize_option_number_from_string` to work // HINT: #[serde(deserialize_with = "serde_aux::prelude::deserialize_option_number_from_string")]) #[serde(rename = "_rounding")] - pub(in crate::provider) rounding: Option, + pub(crate) rounding: Option, #[serde(rename = "_digits")] - pub(in crate::provider) digits: Option, + pub(crate) digits: Option, #[serde(rename = "_cashRounding")] - pub(in crate::provider) cash_rounding: Option, + pub(crate) cash_rounding: Option, #[serde(rename = "_cashDigits")] - pub(in crate::provider) cash_digits: Option, + pub(crate) cash_digits: Option, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Fractions { +pub(crate) struct Fractions { #[serde(rename = "DEFAULT")] default: RoundingModes, #[serde(flatten)] - pub(in crate::provider) currencies: BTreeMap, + pub(crate) currencies: BTreeMap, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct CurrencyData { - pub(in crate::provider) fractions: Fractions, +pub(crate) struct CurrencyData { + pub(crate) fractions: Fractions, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Supplemental { +pub(crate) struct Supplemental { #[serde(rename = "currencyData")] - pub(in crate::provider) currency_data: CurrencyData, + pub(crate) currency_data: CurrencyData, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Resource { - pub(in crate::provider) supplemental: Supplemental, +pub(crate) struct Resource { + pub(crate) supplemental: Supplemental, } diff --git a/provider/bikeshed/src/cldr_serde/currency_data.rs b/provider/bikeshed/src/cldr_serde/currency_data.rs new file mode 100644 index 00000000000..36f6917feb5 --- /dev/null +++ b/provider/bikeshed/src/cldr_serde/currency_data.rs @@ -0,0 +1,56 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +//! Serde structs representing CLDR JSON numbers.json files. +//! +//! Sample file: +//! + +use serde::Deserialize; +use std::collections::BTreeMap; +use tinystr::TinyAsciiStr; + +type ISOCode = TinyAsciiStr<3>; + +#[derive(PartialEq, Debug, Deserialize)] +pub(crate) struct RoundingModes { + // TODO: Get `deserialize_option_number_from_string` to work + // HINT: #[serde(deserialize_with = "serde_aux::prelude::deserialize_option_number_from_string")]) + #[serde(rename = "_rounding")] + pub(crate) rounding: Option, + + #[serde(rename = "_digits")] + pub(crate) digits: Option, + + #[serde(rename = "_cashRounding")] + pub(crate) cash_rounding: Option, + + #[serde(rename = "_cashDigits")] + pub(crate) cash_digits: Option, +} + +#[derive(PartialEq, Debug, Deserialize)] +pub(crate) struct Fractions { + #[serde(rename = "DEFAULT")] + default: RoundingModes, + + #[serde(flatten)] + pub(crate) currencies: BTreeMap, +} + +#[derive(PartialEq, Debug, Deserialize)] +pub(crate) struct CurrencyData { + pub(crate) fractions: Fractions, +} + +#[derive(PartialEq, Debug, Deserialize)] +pub(crate) struct Supplemental { + #[serde(rename = "currencyData")] + pub(crate) currency_data: CurrencyData, +} + +#[derive(PartialEq, Debug, Deserialize)] +pub(crate) struct Resource { + pub(crate) supplemental: Supplemental, +} diff --git a/provider/datagen/src/transform/cldr/cldr_serde/date_fields.rs b/provider/bikeshed/src/cldr_serde/date_fields.rs similarity index 76% rename from provider/datagen/src/transform/cldr/cldr_serde/date_fields.rs rename to provider/bikeshed/src/cldr_serde/date_fields.rs index f8438cb9030..563fa8481ea 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/date_fields.rs +++ b/provider/bikeshed/src/cldr_serde/date_fields.rs @@ -15,37 +15,37 @@ use serde::{ }; #[derive(Debug, Deserialize, Default)] -pub(in crate::provider) struct PluralRulesPattern { +pub(crate) struct PluralRulesPattern { #[serde(rename = "relativeTimePattern-count-zero")] - pub(in crate::provider) zero: Option, + pub(crate) zero: Option, #[serde(rename = "relativeTimePattern-count-one")] - pub(in crate::provider) one: Option, + pub(crate) one: Option, #[serde(rename = "relativeTimePattern-count-two")] - pub(in crate::provider) two: Option, + pub(crate) two: Option, #[serde(rename = "relativeTimePattern-count-few")] - pub(in crate::provider) few: Option, + pub(crate) few: Option, #[serde(rename = "relativeTimePattern-count-many")] - pub(in crate::provider) many: Option, + pub(crate) many: Option, #[serde(rename = "relativeTimePattern-count-other")] - pub(in crate::provider) other: String, + pub(crate) other: String, } #[derive(Debug)] -pub(in crate::provider) struct Relative { - pub(in crate::provider) count: i8, - pub(in crate::provider) pattern: String, +pub(crate) struct Relative { + pub(crate) count: i8, + pub(crate) pattern: String, } #[derive(Debug)] -pub(in crate::provider) struct Field { - pub(in crate::provider) _display_name: String, - pub(in crate::provider) _relative_period: Option, - pub(in crate::provider) relatives: Vec, - pub(in crate::provider) past: PluralRulesPattern, - pub(in crate::provider) future: PluralRulesPattern, +pub(crate) struct Field { + pub(crate) _display_name: String, + pub(crate) _relative_period: Option, + pub(crate) relatives: Vec, + pub(crate) past: PluralRulesPattern, + pub(crate) future: PluralRulesPattern, } -pub(in crate::provider) struct FieldVisitor; +pub(crate) struct FieldVisitor; impl<'de> Visitor<'de> for FieldVisitor { type Value = Field; @@ -120,16 +120,16 @@ impl<'de> Deserialize<'de> for Field { } #[derive(Debug, Deserialize)] -pub(in crate::provider) struct Fields(pub(in crate::provider) HashMap); +pub(crate) struct Fields(pub(crate) HashMap); #[derive(Debug, Deserialize)] -pub(in crate::provider) struct Dates { - pub(in crate::provider) fields: Fields, +pub(crate) struct Dates { + pub(crate) fields: Fields, } #[derive(Debug, Deserialize)] -pub(in crate::provider) struct RelativeTimeDates { - pub(in crate::provider) dates: Dates, +pub(crate) struct RelativeTimeDates { + pub(crate) dates: Dates, } -pub(in crate::provider) type Resource = super::LocaleResource; +pub(crate) type Resource = super::LocaleResource; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/directionality.rs b/provider/bikeshed/src/cldr_serde/directionality.rs similarity index 71% rename from provider/datagen/src/transform/cldr/cldr_serde/directionality.rs rename to provider/bikeshed/src/cldr_serde/directionality.rs index 90e38d9b127..6bfc451b4e2 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/directionality.rs +++ b/provider/bikeshed/src/cldr_serde/directionality.rs @@ -7,7 +7,7 @@ use std::collections::HashMap; use tinystr::TinyAsciiStr; #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) enum Rtl { +pub(crate) enum Rtl { #[serde(rename = "YES")] Yes, #[serde(rename = "NO")] @@ -17,13 +17,13 @@ pub(in crate::provider) enum Rtl { } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Metadata { - pub(in crate::provider) rtl: Rtl, +pub(crate) struct Metadata { + pub(crate) rtl: Rtl, } // cldr-core/scriptMetadata.json #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Resource { +pub(crate) struct Resource { #[serde(rename = "scriptMetadata")] - pub(in crate::provider) script_metadata: HashMap, Metadata>, + pub(crate) script_metadata: HashMap, Metadata>, } diff --git a/provider/datagen/src/transform/cldr/cldr_serde/displaynames/language.rs b/provider/bikeshed/src/cldr_serde/displaynames/language.rs similarity index 66% rename from provider/datagen/src/transform/cldr/cldr_serde/displaynames/language.rs rename to provider/bikeshed/src/cldr_serde/displaynames/language.rs index bebb9870bf9..3260aa7b45c 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/displaynames/language.rs +++ b/provider/bikeshed/src/cldr_serde/displaynames/language.rs @@ -11,14 +11,14 @@ use serde::Deserialize; use std::collections::HashMap; #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Languages { - pub(in crate::provider) languages: HashMap, +pub(crate) struct Languages { + pub(crate) languages: HashMap, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct LangDisplayNames { +pub(crate) struct LangDisplayNames { #[serde(rename = "localeDisplayNames")] - pub(in crate::provider) localedisplaynames: Languages, + pub(crate) localedisplaynames: Languages, } -pub(in crate::provider) type Resource = super::super::LocaleResource; +pub(crate) type Resource = super::super::LocaleResource; diff --git a/provider/datagen/src/transform/cldr/units/mod.rs b/provider/bikeshed/src/cldr_serde/displaynames/mod.rs similarity index 65% rename from provider/datagen/src/transform/cldr/units/mod.rs rename to provider/bikeshed/src/cldr_serde/displaynames/mod.rs index ed037e8d79f..056be5fdcfe 100644 --- a/provider/datagen/src/transform/cldr/units/mod.rs +++ b/provider/bikeshed/src/cldr_serde/displaynames/mod.rs @@ -2,6 +2,7 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -pub(in crate::provider) mod data; -pub(in crate::provider) mod helpers; -pub(in crate::provider) mod info; +pub(crate) mod language; +pub(crate) mod region; +pub(crate) mod script; +pub(crate) mod variant; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/displaynames/region.rs b/provider/bikeshed/src/cldr_serde/displaynames/region.rs similarity index 67% rename from provider/datagen/src/transform/cldr/cldr_serde/displaynames/region.rs rename to provider/bikeshed/src/cldr_serde/displaynames/region.rs index 8006ee91d8a..39c5f7d3638 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/displaynames/region.rs +++ b/provider/bikeshed/src/cldr_serde/displaynames/region.rs @@ -11,15 +11,15 @@ use serde::Deserialize; use std::collections::HashMap; #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Regions { +pub(crate) struct Regions { #[serde(rename = "territories")] - pub(in crate::provider) regions: HashMap, + pub(crate) regions: HashMap, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct LangDisplayNames { +pub(crate) struct LangDisplayNames { #[serde(rename = "localeDisplayNames")] - pub(in crate::provider) localedisplaynames: Regions, + pub(crate) localedisplaynames: Regions, } -pub(in crate::provider) type Resource = super::super::LocaleResource; +pub(crate) type Resource = super::super::LocaleResource; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/displaynames/script.rs b/provider/bikeshed/src/cldr_serde/displaynames/script.rs similarity index 66% rename from provider/datagen/src/transform/cldr/cldr_serde/displaynames/script.rs rename to provider/bikeshed/src/cldr_serde/displaynames/script.rs index 1152f597edb..687da2b3045 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/displaynames/script.rs +++ b/provider/bikeshed/src/cldr_serde/displaynames/script.rs @@ -11,14 +11,14 @@ use serde::Deserialize; use std::collections::HashMap; #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Scripts { - pub(in crate::provider) scripts: HashMap, +pub(crate) struct Scripts { + pub(crate) scripts: HashMap, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct LangDisplayNames { +pub(crate) struct LangDisplayNames { #[serde(rename = "localeDisplayNames")] - pub(in crate::provider) localedisplaynames: Scripts, + pub(crate) localedisplaynames: Scripts, } -pub(in crate::provider) type Resource = super::super::LocaleResource; +pub(crate) type Resource = super::super::LocaleResource; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/displaynames/variant.rs b/provider/bikeshed/src/cldr_serde/displaynames/variant.rs similarity index 66% rename from provider/datagen/src/transform/cldr/cldr_serde/displaynames/variant.rs rename to provider/bikeshed/src/cldr_serde/displaynames/variant.rs index a490bb02fae..ce9d4df1c90 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/displaynames/variant.rs +++ b/provider/bikeshed/src/cldr_serde/displaynames/variant.rs @@ -11,14 +11,14 @@ use serde::Deserialize; use std::collections::HashMap; #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Variants { - pub(in crate::provider) variants: HashMap, +pub(crate) struct Variants { + pub(crate) variants: HashMap, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct LangDisplayNames { +pub(crate) struct LangDisplayNames { #[serde(rename = "localeDisplayNames")] - pub(in crate::provider) localedisplaynames: Variants, + pub(crate) localedisplaynames: Variants, } -pub(in crate::provider) type Resource = super::super::LocaleResource; +pub(crate) type Resource = super::super::LocaleResource; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/exemplar_chars.rs b/provider/bikeshed/src/cldr_serde/exemplar_chars.rs similarity index 52% rename from provider/datagen/src/transform/cldr/cldr_serde/exemplar_chars.rs rename to provider/bikeshed/src/cldr_serde/exemplar_chars.rs index 6f7e67f6744..c51cc290f8e 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/exemplar_chars.rs +++ b/provider/bikeshed/src/cldr_serde/exemplar_chars.rs @@ -10,18 +10,18 @@ use serde::Deserialize; #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct LocaleExemplarCharacters { +pub(crate) struct LocaleExemplarCharacters { #[serde(rename = "exemplarCharacters")] - pub(in crate::provider) main: Option, - pub(in crate::provider) auxiliary: Option, - pub(in crate::provider) index: Option, - pub(in crate::provider) numbers: Option, - pub(in crate::provider) punctuation: Option, + pub(crate) main: Option, + pub(crate) auxiliary: Option, + pub(crate) index: Option, + pub(crate) numbers: Option, + pub(crate) punctuation: Option, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Characters { - pub(in crate::provider) characters: LocaleExemplarCharacters, +pub(crate) struct Characters { + pub(crate) characters: LocaleExemplarCharacters, } -pub(in crate::provider) type Resource = super::LocaleResource; +pub(crate) type Resource = super::LocaleResource; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/japanese.rs b/provider/bikeshed/src/cldr_serde/japanese.rs similarity index 54% rename from provider/datagen/src/transform/cldr/cldr_serde/japanese.rs rename to provider/bikeshed/src/cldr_serde/japanese.rs index f999d92c735..279b99044fe 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/japanese.rs +++ b/provider/bikeshed/src/cldr_serde/japanese.rs @@ -7,28 +7,28 @@ use std::collections::HashMap; // cldr-core/supplemental/calendarData.json #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Resource { - pub(in crate::provider) supplemental: Supplemental, +pub(crate) struct Resource { + pub(crate) supplemental: Supplemental, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Supplemental { +pub(crate) struct Supplemental { #[serde(rename = "calendarData")] - pub(in crate::provider) calendar_data: CalendarDatas, + pub(crate) calendar_data: CalendarDatas, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct CalendarDatas { - pub(in crate::provider) japanese: CalendarData, +pub(crate) struct CalendarDatas { + pub(crate) japanese: CalendarData, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct CalendarData { - pub(in crate::provider) eras: HashMap, +pub(crate) struct CalendarData { + pub(crate) eras: HashMap, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct EraStart { +pub(crate) struct EraStart { #[serde(rename = "_start")] - pub(in crate::provider) start: Option, + pub(crate) start: Option, } diff --git a/provider/datagen/src/transform/cldr/cldr_serde/likely_subtags.rs b/provider/bikeshed/src/cldr_serde/likely_subtags.rs similarity index 72% rename from provider/datagen/src/transform/cldr/cldr_serde/likely_subtags.rs rename to provider/bikeshed/src/cldr_serde/likely_subtags.rs index cd6c12edcf7..3e1d448acc9 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/likely_subtags.rs +++ b/provider/bikeshed/src/cldr_serde/likely_subtags.rs @@ -12,12 +12,12 @@ use serde::Deserialize; use std::collections::HashMap; #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Supplemental { +pub(crate) struct Supplemental { #[serde(rename = "likelySubtags")] - pub(in crate::provider) likely_subtags: HashMap, + pub(crate) likely_subtags: HashMap, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Resource { - pub(in crate::provider) supplemental: Supplemental, +pub(crate) struct Resource { + pub(crate) supplemental: Supplemental, } diff --git a/provider/datagen/src/transform/cldr/cldr_serde/list_patterns.rs b/provider/bikeshed/src/cldr_serde/list_patterns.rs similarity index 55% rename from provider/datagen/src/transform/cldr/cldr_serde/list_patterns.rs rename to provider/bikeshed/src/cldr_serde/list_patterns.rs index ea45b0d5d97..fec7617073d 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/list_patterns.rs +++ b/provider/bikeshed/src/cldr_serde/list_patterns.rs @@ -12,40 +12,40 @@ use serde::Deserialize; use super::locale_resource::LocaleResource; #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct ListPattern { - pub(in crate::provider) start: String, - pub(in crate::provider) middle: String, - pub(in crate::provider) end: String, +pub(crate) struct ListPattern { + pub(crate) start: String, + pub(crate) middle: String, + pub(crate) end: String, #[serde(rename = "2")] - pub(in crate::provider) pair: String, + pub(crate) pair: String, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct ListPatterns { +pub(crate) struct ListPatterns { #[serde(rename = "listPattern-type-standard")] - pub(in crate::provider) standard: ListPattern, + pub(crate) standard: ListPattern, #[serde(rename = "listPattern-type-standard-narrow")] - pub(in crate::provider) standard_narrow: ListPattern, + pub(crate) standard_narrow: ListPattern, #[serde(rename = "listPattern-type-standard-short")] - pub(in crate::provider) standard_short: ListPattern, + pub(crate) standard_short: ListPattern, #[serde(rename = "listPattern-type-or")] - pub(in crate::provider) or: ListPattern, + pub(crate) or: ListPattern, #[serde(rename = "listPattern-type-or-narrow")] - pub(in crate::provider) or_narrow: ListPattern, + pub(crate) or_narrow: ListPattern, #[serde(rename = "listPattern-type-or-short")] - pub(in crate::provider) or_short: ListPattern, + pub(crate) or_short: ListPattern, #[serde(rename = "listPattern-type-unit")] - pub(in crate::provider) unit: ListPattern, + pub(crate) unit: ListPattern, #[serde(rename = "listPattern-type-unit-narrow")] - pub(in crate::provider) unit_narrow: ListPattern, + pub(crate) unit_narrow: ListPattern, #[serde(rename = "listPattern-type-unit-short")] - pub(in crate::provider) unit_short: ListPattern, + pub(crate) unit_short: ListPattern, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct LangListPatterns { +pub(crate) struct LangListPatterns { #[serde(rename = "listPatterns")] - pub(in crate::provider) list_patterns: ListPatterns, + pub(crate) list_patterns: ListPatterns, } -pub(in crate::provider) type Resource = LocaleResource; +pub(crate) type Resource = LocaleResource; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/locale_resource.rs b/provider/bikeshed/src/cldr_serde/locale_resource.rs similarity index 91% rename from provider/datagen/src/transform/cldr/cldr_serde/locale_resource.rs rename to provider/bikeshed/src/cldr_serde/locale_resource.rs index a8c2512f37a..cf793480249 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/locale_resource.rs +++ b/provider/bikeshed/src/cldr_serde/locale_resource.rs @@ -27,15 +27,15 @@ use serde::Deserialize; /// This deserializer is generic over `T`, which is the type of the resource-specific fields, /// and will in effect "strip" the top two layers from the JSON when parsing. #[derive(Debug, Deserialize)] -pub(in crate::provider) struct LocaleResource { - pub(in crate::provider) main: SingleLocaleMap, +pub(crate) struct LocaleResource { + pub(crate) main: SingleLocaleMap, } /// A map containing a single locale key and value. #[derive(Debug)] -pub(in crate::provider) struct SingleLocaleMap { - pub(in crate::provider) _locale: LanguageIdentifier, - pub(in crate::provider) value: T, +pub(crate) struct SingleLocaleMap { + pub(crate) _locale: LanguageIdentifier, + pub(crate) value: T, } struct SingleLocaleMapVisitor(PhantomData); diff --git a/provider/bikeshed/src/cldr_serde/mod.rs b/provider/bikeshed/src/cldr_serde/mod.rs new file mode 100644 index 00000000000..e2615f11220 --- /dev/null +++ b/provider/bikeshed/src/cldr_serde/mod.rs @@ -0,0 +1,39 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +//! Serde structures for CLDR JSON. +//! +//! The modules below each contain Rust struct definitions for CLDR JSON files, with Serde +//! deserialization support. These structures can be used in the transformers. + +pub(crate) mod aliases; +pub(crate) mod ca; +pub(crate) mod coverage_levels; +#[cfg(feature = "experimental")] +pub(crate) mod currencies; +#[cfg(feature = "experimental")] +pub(crate) mod date_fields; +pub(crate) mod directionality; +#[cfg(feature = "experimental")] +pub(crate) mod displaynames; +pub(crate) mod exemplar_chars; +pub(crate) mod japanese; +pub(crate) mod likely_subtags; +pub(crate) mod list_patterns; +pub(crate) mod locale_resource; +pub(crate) mod numbering_systems; +pub(crate) mod numbers; +pub(crate) mod parent_locales; +#[cfg(feature = "experimental")] +pub(crate) mod personnames; +pub(crate) mod plural_ranges; +pub(crate) mod plurals; +pub(crate) mod time_zones; +#[cfg(feature = "experimental")] +pub(crate) mod transforms; +#[cfg(feature = "experimental")] +pub(crate) mod units; +pub(crate) mod week_data; + +use locale_resource::LocaleResource; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/numbering_systems.rs b/provider/bikeshed/src/cldr_serde/numbering_systems.rs similarity index 63% rename from provider/datagen/src/transform/cldr/cldr_serde/numbering_systems.rs rename to provider/bikeshed/src/cldr_serde/numbering_systems.rs index ffb6d6e211f..47c6e1e708c 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/numbering_systems.rs +++ b/provider/bikeshed/src/cldr_serde/numbering_systems.rs @@ -13,28 +13,28 @@ use tinystr::TinyStr8; #[derive(PartialEq, Debug, Deserialize)] #[serde(rename_all = "lowercase")] -pub(in crate::provider) enum NumberingSystemType { +pub(crate) enum NumberingSystemType { Numeric, Algorithmic, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct NumberingSystem { +pub(crate) struct NumberingSystem { #[serde(rename = "_type")] - pub(in crate::provider) nstype: NumberingSystemType, + pub(crate) nstype: NumberingSystemType, #[serde(rename = "_digits")] - pub(in crate::provider) digits: Option, + pub(crate) digits: Option, #[serde(rename = "_rules")] - pub(in crate::provider) rules: Option, + pub(crate) rules: Option, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct SupplementalData { +pub(crate) struct SupplementalData { #[serde(rename = "numberingSystems")] - pub(in crate::provider) numbering_systems: HashMap, + pub(crate) numbering_systems: HashMap, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Resource { - pub(in crate::provider) supplemental: SupplementalData, +pub(crate) struct Resource { + pub(crate) supplemental: SupplementalData, } diff --git a/provider/datagen/src/transform/cldr/cldr_serde/numbers.rs b/provider/bikeshed/src/cldr_serde/numbers.rs similarity index 72% rename from provider/datagen/src/transform/cldr/cldr_serde/numbers.rs rename to provider/bikeshed/src/cldr_serde/numbers.rs index da306dcdac8..c22ece376bd 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/numbers.rs +++ b/provider/bikeshed/src/cldr_serde/numbers.rs @@ -14,41 +14,41 @@ use std::collections::HashMap; use tinystr::TinyStr8; #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Symbols { +pub(crate) struct Symbols { // This list is not comprehensive; add more fields when needed - pub(in crate::provider) decimal: String, - pub(in crate::provider) group: String, + pub(crate) decimal: String, + pub(crate) group: String, #[serde(rename = "minusSign")] - pub(in crate::provider) minus_sign: String, + pub(crate) minus_sign: String, #[serde(rename = "plusSign")] - pub(in crate::provider) plus_sign: String, + pub(crate) plus_sign: String, #[serde(rename = "percentSign")] - pub(in crate::provider) percent_sign: String, + pub(crate) percent_sign: String, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct DecimalFormats { - pub(in crate::provider) standard: String, - pub(in crate::provider) long: DecimalFormatLength, - pub(in crate::provider) short: DecimalFormatLength, +pub(crate) struct DecimalFormats { + pub(crate) standard: String, + pub(crate) long: DecimalFormatLength, + pub(crate) short: DecimalFormatLength, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct DecimalFormatLength { +pub(crate) struct DecimalFormatLength { #[serde(rename = "decimalFormat")] - pub(in crate::provider) decimal_format: DecimalFormat, + pub(crate) decimal_format: DecimalFormat, } #[derive(PartialEq, Debug, Default)] -pub(in crate::provider) struct DecimalFormat { - pub(in crate::provider) patterns: Vec, +pub(crate) struct DecimalFormat { + pub(crate) patterns: Vec, } #[derive(PartialEq, Debug, Default)] -pub(in crate::provider) struct CompactDecimalPattern { - pub(in crate::provider) compact_decimal_type: String, - pub(in crate::provider) compact_decimal_count: String, - pub(in crate::provider) pattern: String, +pub(crate) struct CompactDecimalPattern { + pub(crate) compact_decimal_type: String, + pub(crate) compact_decimal_count: String, + pub(crate) pattern: String, } impl<'de> Deserialize<'de> for DecimalFormat { @@ -89,34 +89,34 @@ impl<'de> Visitor<'de> for DecimalFormatVisitor { } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct CurrencyFormattingPatterns { +pub(crate) struct CurrencyFormattingPatterns { /// Standard pattern - pub(in crate::provider) standard: String, + pub(crate) standard: String, /// Standard alphaNextToNumber pattern #[serde(rename = "standard-alphaNextToNumber")] - pub(in crate::provider) standard_alpha_next_to_number: Option, + pub(crate) standard_alpha_next_to_number: Option, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct PercentFormattingPatterns { +pub(crate) struct PercentFormattingPatterns { /// Standard pattern - pub(in crate::provider) standard: String, + pub(crate) standard: String, } #[derive(PartialEq, Debug, Default)] -pub(in crate::provider) struct NumberingSystemData { +pub(crate) struct NumberingSystemData { /// Map from numbering system to symbols - pub(in crate::provider) symbols: HashMap, + pub(crate) symbols: HashMap, /// Map from numbering system to decimal formats - pub(in crate::provider) formats: HashMap, + pub(crate) formats: HashMap, /// Map from numbering system to patterns - pub(in crate::provider) currency_patterns: HashMap, + pub(crate) currency_patterns: HashMap, /// Map from numbering system to percent patterns - pub(in crate::provider) percent_patterns: HashMap, + pub(crate) percent_patterns: HashMap, } -pub(in crate::provider) struct NumberingSystemDataVisitor; +pub(crate) struct NumberingSystemDataVisitor; impl<'de> Visitor<'de> for NumberingSystemDataVisitor { type Value = NumberingSystemData; @@ -177,19 +177,19 @@ impl<'de> Deserialize<'de> for NumberingSystemData { } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Numbers { +pub(crate) struct Numbers { #[serde(rename = "defaultNumberingSystem")] - pub(in crate::provider) default_numbering_system: TinyStr8, + pub(crate) default_numbering_system: TinyStr8, #[serde(rename = "minimumGroupingDigits")] #[serde(deserialize_with = "serde_aux::prelude::deserialize_number_from_string")] - pub(in crate::provider) minimum_grouping_digits: u8, + pub(crate) minimum_grouping_digits: u8, #[serde(flatten)] - pub(in crate::provider) numsys_data: NumberingSystemData, + pub(crate) numsys_data: NumberingSystemData, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct LangNumbers { - pub(in crate::provider) numbers: Numbers, +pub(crate) struct LangNumbers { + pub(crate) numbers: Numbers, } -pub(in crate::provider) type Resource = super::LocaleResource; +pub(crate) type Resource = super::LocaleResource; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/parent_locales.rs b/provider/bikeshed/src/cldr_serde/parent_locales.rs similarity index 61% rename from provider/datagen/src/transform/cldr/cldr_serde/parent_locales.rs rename to provider/bikeshed/src/cldr_serde/parent_locales.rs index 05e816a4417..d5d88ed36aa 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/parent_locales.rs +++ b/provider/bikeshed/src/cldr_serde/parent_locales.rs @@ -12,25 +12,25 @@ use serde::Deserialize; use std::collections::{BTreeMap, HashMap}; #[derive(PartialEq, Debug, Deserialize, PartialOrd, Ord, Eq)] -pub(in crate::provider) struct LocaleRule { +pub(crate) struct LocaleRule { #[serde(rename = "nonlikelyScript")] - pub(in crate::provider) non_likely_scripts: String, + pub(crate) non_likely_scripts: String, } #[derive(PartialEq, Debug, Deserialize, PartialOrd, Ord, Eq)] -pub(in crate::provider) struct LocaleRules { +pub(crate) struct LocaleRules { #[serde(rename = "parentLocale")] - pub(in crate::provider) parent_locale: Option, - pub(in crate::provider) collations: Option, + pub(crate) parent_locale: Option, + pub(crate) collations: Option, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct ParentLocales { +pub(crate) struct ParentLocales { #[serde(rename = "parentLocale")] - pub(in crate::provider) parent_locale: HashMap, - pub(in crate::provider) collations: BTreeMap, + pub(crate) parent_locale: HashMap, + pub(crate) collations: BTreeMap, #[serde(rename = "_localeRules", default = "rules_backport")] - pub(in crate::provider) rules: LocaleRules, + pub(crate) rules: LocaleRules, } fn rules_backport() -> LocaleRules { @@ -43,12 +43,12 @@ fn rules_backport() -> LocaleRules { } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Supplemental { +pub(crate) struct Supplemental { #[serde(rename = "parentLocales")] - pub(in crate::provider) parent_locales: ParentLocales, + pub(crate) parent_locales: ParentLocales, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Resource { - pub(in crate::provider) supplemental: Supplemental, +pub(crate) struct Resource { + pub(crate) supplemental: Supplemental, } diff --git a/provider/datagen/src/transform/cldr/cldr_serde/personnames/mod.rs b/provider/bikeshed/src/cldr_serde/personnames/mod.rs similarity index 100% rename from provider/datagen/src/transform/cldr/cldr_serde/personnames/mod.rs rename to provider/bikeshed/src/cldr_serde/personnames/mod.rs diff --git a/provider/bikeshed/src/cldr_serde/personnames/person_name_format_json_struct.rs b/provider/bikeshed/src/cldr_serde/personnames/person_name_format_json_struct.rs new file mode 100644 index 00000000000..17b0aa3aa32 --- /dev/null +++ b/provider/bikeshed/src/cldr_serde/personnames/person_name_format_json_struct.rs @@ -0,0 +1,46 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +//! Serde structs representing CLDR JSON person name files. +//! +//! Sample file: +//! + +use litemap::LiteMap; +use serde::Deserialize; + +#[derive(PartialEq, Debug, Deserialize)] +pub(crate) struct FormalityFormatting(pub(crate) LiteMap); + +#[derive(PartialEq, Debug, Deserialize)] +pub(crate) struct ReferringFormatting(pub(crate) LiteMap); + +#[derive(PartialEq, Debug, Deserialize)] +pub(crate) struct SizedFormatting(pub(crate) LiteMap); + +#[derive(PartialEq, Debug, Deserialize)] +pub(crate) struct OrderFormatting(pub(crate) LiteMap); + +#[derive(PartialEq, Debug, Deserialize)] +pub(crate) struct PersonNames { + #[serde(rename = "givenFirst")] + pub(crate) given_first: Vec, + #[serde(rename = "surnameFirst")] + pub(crate) surname_first: Vec, + #[serde(rename = "foreignSpaceReplacement")] + pub(crate) foreign_space_replacement: String, + pub(crate) initial: String, + #[serde(rename = "initialSequence")] + pub(crate) initial_sequence: String, + #[serde(rename = "personName")] + pub(crate) formatting_pattern: OrderFormatting, +} + +#[derive(PartialEq, Debug, Deserialize)] +pub(crate) struct CldrData { + #[serde(rename = "personNames")] + pub(crate) person_names: PersonNames, +} + +pub(crate) type Resource = super::super::LocaleResource; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/plural_ranges.rs b/provider/bikeshed/src/cldr_serde/plural_ranges.rs similarity index 79% rename from provider/datagen/src/transform/cldr/cldr_serde/plural_ranges.rs rename to provider/bikeshed/src/cldr_serde/plural_ranges.rs index ef272fc7949..70817b5112f 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/plural_ranges.rs +++ b/provider/bikeshed/src/cldr_serde/plural_ranges.rs @@ -12,9 +12,9 @@ use serde::{de::Visitor, Deserialize}; use std::collections::HashMap; #[derive(PartialEq, PartialOrd, Ord, Eq, Hash, Debug)] -pub(in crate::provider) struct PluralRange { - pub(in crate::provider) start: String, - pub(in crate::provider) end: String, +pub(crate) struct PluralRange { + pub(crate) start: String, + pub(crate) end: String, } impl<'de> Deserialize<'de> for PluralRange { @@ -59,21 +59,17 @@ impl<'de> Deserialize<'de> for PluralRange { } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct LocalePluralRanges( - pub(in crate::provider) HashMap, -); +pub(crate) struct LocalePluralRanges(pub(crate) HashMap); #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct PluralRanges( - pub(in crate::provider) HashMap, -); +pub(crate) struct PluralRanges(pub(crate) HashMap); #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Supplemental { - pub(in crate::provider) plurals: PluralRanges, +pub(crate) struct Supplemental { + pub(crate) plurals: PluralRanges, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Resource { - pub(in crate::provider) supplemental: Supplemental, +pub(crate) struct Resource { + pub(crate) supplemental: Supplemental, } diff --git a/provider/datagen/src/transform/cldr/cldr_serde/plurals.rs b/provider/bikeshed/src/cldr_serde/plurals.rs similarity index 59% rename from provider/datagen/src/transform/cldr/cldr_serde/plurals.rs rename to provider/bikeshed/src/cldr_serde/plurals.rs index f9ad72f176e..5699a6598c5 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/plurals.rs +++ b/provider/bikeshed/src/cldr_serde/plurals.rs @@ -12,33 +12,31 @@ use serde::Deserialize; use std::collections::HashMap; #[derive(PartialEq, PartialOrd, Ord, Eq, Debug, Deserialize)] -pub(in crate::provider) struct LocalePluralRules { +pub(crate) struct LocalePluralRules { #[serde(rename = "pluralRule-count-zero")] - pub(in crate::provider) zero: Option, + pub(crate) zero: Option, #[serde(rename = "pluralRule-count-one")] - pub(in crate::provider) one: Option, + pub(crate) one: Option, #[serde(rename = "pluralRule-count-two")] - pub(in crate::provider) two: Option, + pub(crate) two: Option, #[serde(rename = "pluralRule-count-few")] - pub(in crate::provider) few: Option, + pub(crate) few: Option, #[serde(rename = "pluralRule-count-many")] - pub(in crate::provider) many: Option, + pub(crate) many: Option, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Rules( - pub(in crate::provider) HashMap, -); +pub(crate) struct Rules(pub(crate) HashMap); #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Supplemental { +pub(crate) struct Supplemental { #[serde(rename = "plurals-type-cardinal")] - pub(in crate::provider) plurals_type_cardinal: Option, + pub(crate) plurals_type_cardinal: Option, #[serde(rename = "plurals-type-ordinal")] - pub(in crate::provider) plurals_type_ordinal: Option, + pub(crate) plurals_type_ordinal: Option, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Resource { - pub(in crate::provider) supplemental: Supplemental, +pub(crate) struct Resource { + pub(crate) supplemental: Supplemental, } diff --git a/provider/datagen/src/transform/cldr/cldr_serde/time_zones/bcp47_tzid.rs b/provider/bikeshed/src/cldr_serde/time_zones/bcp47_tzid.rs similarity index 53% rename from provider/datagen/src/transform/cldr/cldr_serde/time_zones/bcp47_tzid.rs rename to provider/bikeshed/src/cldr_serde/time_zones/bcp47_tzid.rs index 1e931846fa4..9211899bab7 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/time_zones/bcp47_tzid.rs +++ b/provider/bikeshed/src/cldr_serde/time_zones/bcp47_tzid.rs @@ -12,41 +12,41 @@ use serde::Deserialize; use std::collections::BTreeMap; #[derive(PartialEq, Debug, Clone, Deserialize)] -pub(in crate::provider) struct Bcp47TzidAliasData { +pub(crate) struct Bcp47TzidAliasData { #[serde(rename = "_deprecated")] - pub(in crate::provider) deprecated: Option, + pub(crate) deprecated: Option, #[serde(rename = "_preferred")] - pub(in crate::provider) preferred: Option, + pub(crate) preferred: Option, #[serde(rename = "_description")] - pub(in crate::provider) description: String, + pub(crate) description: String, #[serde(rename = "_alias")] - pub(in crate::provider) alias: Option, + pub(crate) alias: Option, #[serde(rename = "_since")] - pub(in crate::provider) since: Option, + pub(crate) since: Option, #[serde(rename = "_iana")] - pub(in crate::provider) iana: Option, + pub(crate) iana: Option, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Bcp47TimeZoneIds { - pub(in crate::provider) _alias: String, - pub(in crate::provider) _description: String, +pub(crate) struct Bcp47TimeZoneIds { + pub(crate) _alias: String, + pub(crate) _description: String, #[serde(flatten)] - pub(in crate::provider) values: BTreeMap, + pub(crate) values: BTreeMap, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct U { +pub(crate) struct U { #[serde(rename = "tz")] - pub(in crate::provider) time_zones: Bcp47TimeZoneIds, + pub(crate) time_zones: Bcp47TimeZoneIds, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Keyword { - pub(in crate::provider) u: U, +pub(crate) struct Keyword { + pub(crate) u: U, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Resource { - pub(in crate::provider) keyword: Keyword, +pub(crate) struct Resource { + pub(crate) keyword: Keyword, } diff --git a/provider/datagen/src/transform/cldr/cldr_serde/time_zones/meta_zones.rs b/provider/bikeshed/src/cldr_serde/time_zones/meta_zones.rs similarity index 53% rename from provider/datagen/src/transform/cldr/cldr_serde/time_zones/meta_zones.rs rename to provider/bikeshed/src/cldr_serde/time_zones/meta_zones.rs index 600d1a7fdac..18b6db1cb00 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/time_zones/meta_zones.rs +++ b/provider/bikeshed/src/cldr_serde/time_zones/meta_zones.rs @@ -12,93 +12,91 @@ use serde::Deserialize; use std::collections::BTreeMap; #[derive(PartialEq, Debug, Clone, Deserialize)] -pub(in crate::provider) struct MetazoneAliasData { +pub(crate) struct MetazoneAliasData { #[serde(rename = "_longId")] - pub(in crate::provider) long_id: String, + pub(crate) long_id: String, #[serde(rename = "_since")] - pub(in crate::provider) since: String, + pub(crate) since: String, } #[derive(Debug, Clone, Deserialize)] -pub(in crate::provider) struct MetazoneIds( - pub(in crate::provider) BTreeMap, -); +pub(crate) struct MetazoneIds(pub(crate) BTreeMap); #[derive(PartialEq, Debug, Clone, Deserialize)] -pub(in crate::provider) struct UsesMetazone { +pub(crate) struct UsesMetazone { #[serde(rename = "_mzone")] - pub(in crate::provider) mzone: String, + pub(crate) mzone: String, #[serde(rename = "_from")] - pub(in crate::provider) from: Option, + pub(crate) from: Option, #[serde(rename = "_to")] - pub(in crate::provider) to: Option, + pub(crate) to: Option, } #[derive(PartialEq, Debug, Clone, Deserialize)] -pub(in crate::provider) struct MetazoneForPeriod { +pub(crate) struct MetazoneForPeriod { #[serde(rename = "usesMetazone")] - pub(in crate::provider) uses_meta_zone: UsesMetazone, + pub(crate) uses_meta_zone: UsesMetazone, } #[derive(PartialEq, Debug, Clone, Deserialize)] #[serde(untagged)] -pub(in crate::provider) enum MetaLocationOrSubRegion { +pub(crate) enum MetaLocationOrSubRegion { Location(Vec), SubRegion(BTreeMap>), } #[derive(PartialEq, Debug, Clone, Deserialize)] #[serde(untagged)] -pub(in crate::provider) enum ZonePeriod { +pub(crate) enum ZonePeriod { Region(Vec), LocationOrSubRegion(BTreeMap), } #[derive(PartialEq, Debug, Clone, Deserialize)] -pub(in crate::provider) struct TimeZonePeriod(pub(in crate::provider) BTreeMap); +pub(crate) struct TimeZonePeriod(pub(crate) BTreeMap); #[derive(PartialEq, Debug, Clone, Deserialize)] -pub(in crate::provider) struct MetazoneInfo { +pub(crate) struct MetazoneInfo { #[serde(rename = "timezone")] - pub(in crate::provider) time_zone: TimeZonePeriod, + pub(crate) time_zone: TimeZonePeriod, } #[derive(PartialEq, Debug, Clone, Deserialize)] -pub(in crate::provider) struct MapZone { +pub(crate) struct MapZone { #[serde(rename = "_other")] - pub(in crate::provider) other: String, + pub(crate) other: String, #[serde(rename = "_type")] - pub(in crate::provider) zone_type: String, + pub(crate) zone_type: String, #[serde(rename = "_territory")] - pub(in crate::provider) territory: String, + pub(crate) territory: String, } #[derive(PartialEq, Debug, Clone, Deserialize)] -pub(in crate::provider) struct MetazoneTerritory { +pub(crate) struct MetazoneTerritory { #[serde(rename = "mapZone")] - pub(in crate::provider) map_zone: MapZone, + pub(crate) map_zone: MapZone, } #[derive(PartialEq, Debug, Clone, Deserialize)] -pub(in crate::provider) struct MetazonesTerritory(pub(in crate::provider) Vec); +pub(crate) struct MetazonesTerritory(pub(crate) Vec); #[derive(Debug, Clone, Deserialize)] -pub(in crate::provider) struct Metazones { +pub(crate) struct Metazones { #[serde(rename = "metazoneInfo")] - pub(in crate::provider) meta_zone_info: MetazoneInfo, + pub(crate) meta_zone_info: MetazoneInfo, #[serde(rename = "metazones")] - pub(in crate::provider) _meta_zones_territory: MetazonesTerritory, + pub(crate) _meta_zones_territory: MetazonesTerritory, #[serde(rename = "metazoneIds")] - pub(in crate::provider) meta_zone_ids: MetazoneIds, + pub(crate) meta_zone_ids: MetazoneIds, } #[derive(Debug, Clone, Deserialize)] -pub(in crate::provider) struct Supplemental { +pub(crate) struct Supplemental { #[serde(rename = "metaZones")] - pub(in crate::provider) meta_zones: Metazones, + pub(crate) meta_zones: Metazones, } #[derive(Debug, Clone, Deserialize)] -pub(in crate::provider) struct Resource { - pub(in crate::provider) supplemental: Supplemental, +pub(crate) struct Resource { + pub(crate) supplemental: Supplemental, } diff --git a/provider/datagen/src/transform/cldr/cldr_serde/time_zones/mod.rs b/provider/bikeshed/src/cldr_serde/time_zones/mod.rs similarity index 61% rename from provider/datagen/src/transform/cldr/cldr_serde/time_zones/mod.rs rename to provider/bikeshed/src/cldr_serde/time_zones/mod.rs index b52351ba228..e46af4d16ba 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/time_zones/mod.rs +++ b/provider/bikeshed/src/cldr_serde/time_zones/mod.rs @@ -2,6 +2,6 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -pub(in crate::provider) mod bcp47_tzid; -pub(in crate::provider) mod meta_zones; -pub(in crate::provider) mod time_zone_names; +pub(crate) mod bcp47_tzid; +pub(crate) mod meta_zones; +pub(crate) mod time_zone_names; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/time_zones/time_zone_names.rs b/provider/bikeshed/src/cldr_serde/time_zones/time_zone_names.rs similarity index 70% rename from provider/datagen/src/transform/cldr/cldr_serde/time_zones/time_zone_names.rs rename to provider/bikeshed/src/cldr_serde/time_zones/time_zone_names.rs index b36a1f6c179..683340eae60 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/time_zones/time_zone_names.rs +++ b/provider/bikeshed/src/cldr_serde/time_zones/time_zone_names.rs @@ -14,16 +14,16 @@ use serde::{ use std::collections::BTreeMap; #[derive(PartialEq, Debug, Clone, Deserialize)] -pub(in crate::provider) struct ZoneFormat(pub(in crate::provider) BTreeMap); +pub(crate) struct ZoneFormat(pub(crate) BTreeMap); #[derive(PartialEq, Debug, Clone, Deserialize)] -pub(in crate::provider) struct Metazone { - pub(in crate::provider) long: Option, - pub(in crate::provider) short: Option, +pub(crate) struct Metazone { + pub(crate) long: Option, + pub(crate) short: Option, } #[derive(PartialEq, Debug, Clone, Deserialize)] -pub(in crate::provider) struct Metazones(pub(in crate::provider) BTreeMap); +pub(crate) struct Metazones(pub(crate) BTreeMap); #[derive(PartialEq, Debug, Clone, Deserialize)] // Since this value can be either a Location or a table of sub-regions, we use @@ -35,43 +35,41 @@ pub(in crate::provider) struct Metazones(pub(in crate::provider) BTreeMap, - pub(in crate::provider) short: Option, +pub(crate) struct Location { + pub(crate) long: Option, + pub(crate) short: Option, #[serde(rename = "exemplarCity")] - pub(in crate::provider) exemplar_city: Option, + pub(crate) exemplar_city: Option, #[serde(rename = "exemplarCity-alt-secondary")] - pub(in crate::provider) exemplar_city_alt_secondary: Option, + pub(crate) exemplar_city_alt_secondary: Option, } #[derive(PartialEq, Debug, Clone, Deserialize)] #[serde(untagged)] -pub(in crate::provider) enum LocationOrSubRegion { +pub(crate) enum LocationOrSubRegion { Location(Location), SubRegion(BTreeMap), } #[derive(PartialEq, Debug, Clone, Default, Deserialize)] -pub(in crate::provider) struct Region( - pub(in crate::provider) BTreeMap, -); +pub(crate) struct Region(pub(crate) BTreeMap); #[derive(PartialEq, Debug, Clone, Default, Deserialize)] -pub(in crate::provider) struct Zones(pub(in crate::provider) BTreeMap); +pub(crate) struct Zones(pub(crate) BTreeMap); #[derive(PartialEq, Debug, Default, Clone)] -pub(in crate::provider) struct TimeZoneNames { - pub(in crate::provider) hour_format: String, - pub(in crate::provider) gmt_format: String, - pub(in crate::provider) gmt_zero_format: String, - pub(in crate::provider) region_format: String, - pub(in crate::provider) region_format_variants: BTreeMap, - pub(in crate::provider) fallback_format: String, - pub(in crate::provider) zone: Zones, - pub(in crate::provider) metazone: Option, +pub(crate) struct TimeZoneNames { + pub(crate) hour_format: String, + pub(crate) gmt_format: String, + pub(crate) gmt_zero_format: String, + pub(crate) region_format: String, + pub(crate) region_format_variants: BTreeMap, + pub(crate) fallback_format: String, + pub(crate) zone: Zones, + pub(crate) metazone: Option, } -pub(in crate::provider) struct TimeZoneNamesVisitor; +pub(crate) struct TimeZoneNamesVisitor; impl<'de> Visitor<'de> for TimeZoneNamesVisitor { type Value = TimeZoneNames; @@ -135,14 +133,14 @@ impl<'de> Deserialize<'de> for TimeZoneNames { } #[derive(PartialEq, Debug, Clone, Deserialize)] -pub(in crate::provider) struct Dates { +pub(crate) struct Dates { #[serde(rename = "timeZoneNames")] - pub(in crate::provider) time_zone_names: TimeZoneNames, + pub(crate) time_zone_names: TimeZoneNames, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct LangTimeZones { - pub(in crate::provider) dates: Dates, +pub(crate) struct LangTimeZones { + pub(crate) dates: Dates, } -pub(in crate::provider) type Resource = super::super::LocaleResource; +pub(crate) type Resource = super::super::LocaleResource; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/transforms.rs b/provider/bikeshed/src/cldr_serde/transforms.rs similarity index 73% rename from provider/datagen/src/transform/cldr/cldr_serde/transforms.rs rename to provider/bikeshed/src/cldr_serde/transforms.rs index d4ad3a89c8f..46527a659cc 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/transforms.rs +++ b/provider/bikeshed/src/cldr_serde/transforms.rs @@ -9,7 +9,7 @@ use serde::{Deserialize, Deserializer}; #[derive(PartialEq, Debug, Deserialize)] #[serde(rename_all = "lowercase")] -pub(in crate::provider) enum Direction { +pub(crate) enum Direction { Forward, Backward, Both, @@ -17,14 +17,14 @@ pub(in crate::provider) enum Direction { #[derive(PartialEq, Debug, Default, Copy, Clone, Deserialize)] #[serde(rename_all = "lowercase")] -pub(in crate::provider) enum Visibility { +pub(crate) enum Visibility { Internal, #[default] External, } #[derive(PartialEq, Debug, Clone)] -pub(in crate::provider) enum TransformAlias { +pub(crate) enum TransformAlias { Bcp47(Locale), LegacyId(String), } @@ -54,17 +54,17 @@ impl Display for TransformAlias { // cldr-transforms-full/main//metadata.json #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Resource { - pub(in crate::provider) direction: Direction, +pub(crate) struct Resource { + pub(crate) direction: Direction, #[serde(default)] - pub(in crate::provider) visibility: Visibility, - pub(in crate::provider) source: String, - pub(in crate::provider) target: String, + pub(crate) visibility: Visibility, + pub(crate) source: String, + pub(crate) target: String, #[serde(default)] - pub(in crate::provider) variant: Option, + pub(crate) variant: Option, #[serde(default)] - pub(in crate::provider) alias: Vec, + pub(crate) alias: Vec, #[serde(default)] #[serde(rename = "backwardAlias")] - pub(in crate::provider) backward_alias: Vec, + pub(crate) backward_alias: Vec, } diff --git a/provider/datagen/src/transform/cldr/cldr_serde/units/data.rs b/provider/bikeshed/src/cldr_serde/units/data.rs similarity index 56% rename from provider/datagen/src/transform/cldr/cldr_serde/units/data.rs rename to provider/bikeshed/src/cldr_serde/units/data.rs index cfe4006ea94..b2f6625a866 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/units/data.rs +++ b/provider/bikeshed/src/cldr_serde/units/data.rs @@ -12,39 +12,39 @@ use std::collections::BTreeMap; // TODO(youneis): Check if there are more cases. #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Patterns { +pub(crate) struct Patterns { #[serde(rename = "unitPattern-count-zero")] - pub(in crate::provider) zero: Option, + pub(crate) zero: Option, #[serde(rename = "unitPattern-count-one")] - pub(in crate::provider) one: Option, + pub(crate) one: Option, #[serde(rename = "unitPattern-count-two")] - pub(in crate::provider) two: Option, + pub(crate) two: Option, #[serde(rename = "unitPattern-count-few")] - pub(in crate::provider) few: Option, + pub(crate) few: Option, #[serde(rename = "unitPattern-count-many")] - pub(in crate::provider) many: Option, + pub(crate) many: Option, #[serde(rename = "unitPattern-count-other")] - pub(in crate::provider) other: Option, + pub(crate) other: Option, } // TODO: replace Value with specific structs #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct UnitsData { - pub(in crate::provider) long: BTreeMap, +pub(crate) struct UnitsData { + pub(crate) long: BTreeMap, - pub(in crate::provider) short: BTreeMap, + pub(crate) short: BTreeMap, - pub(in crate::provider) narrow: BTreeMap, + pub(crate) narrow: BTreeMap, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct LangUnits { - pub(in crate::provider) units: UnitsData, +pub(crate) struct LangUnits { + pub(crate) units: UnitsData, } -pub(in crate::provider) type Resource = super::super::LocaleResource; +pub(crate) type Resource = super::super::LocaleResource; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/units/info.rs b/provider/bikeshed/src/cldr_serde/units/info.rs similarity index 50% rename from provider/datagen/src/transform/cldr/cldr_serde/units/info.rs rename to provider/bikeshed/src/cldr_serde/units/info.rs index 886c52ad6db..e833dc8280b 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/units/info.rs +++ b/provider/bikeshed/src/cldr_serde/units/info.rs @@ -11,72 +11,72 @@ use serde::Deserialize; use std::collections::BTreeMap; #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Constant { +pub(crate) struct Constant { #[serde(rename = "_value")] - pub(in crate::provider) value: String, + pub(crate) value: String, #[serde(rename = "_status")] - pub(in crate::provider) status: Option, + pub(crate) status: Option, #[serde(rename = "_description")] - pub(in crate::provider) description: Option, + pub(crate) description: Option, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Quantity { +pub(crate) struct Quantity { #[serde(rename = "_quantity")] - pub(in crate::provider) quantity: String, + pub(crate) quantity: String, #[serde(rename = "_status")] - pub(in crate::provider) status: Option, + pub(crate) status: Option, #[serde(rename = "_description")] - pub(in crate::provider) description: Option, + pub(crate) description: Option, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct ConvertUnit { +pub(crate) struct ConvertUnit { #[serde(rename = "_baseUnit")] - pub(in crate::provider) base_unit: String, + pub(crate) base_unit: String, #[serde(rename = "_factor")] - pub(in crate::provider) factor: Option, + pub(crate) factor: Option, #[serde(rename = "_offset")] - pub(in crate::provider) offset: Option, + pub(crate) offset: Option, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct UnitConstants { +pub(crate) struct UnitConstants { #[serde(flatten)] - pub(in crate::provider) constants: BTreeMap, + pub(crate) constants: BTreeMap, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct UnitQuantities { +pub(crate) struct UnitQuantities { #[serde(flatten)] - pub(in crate::provider) quantities: BTreeMap, + pub(crate) quantities: BTreeMap, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct ConvertUnits { +pub(crate) struct ConvertUnits { #[serde(flatten)] - pub(in crate::provider) convert_units: BTreeMap, + pub(crate) convert_units: BTreeMap, } #[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct Supplemental { +pub(crate) struct Supplemental { #[serde(rename = "unitConstants")] - pub(in crate::provider) unit_constants: UnitConstants, + pub(crate) unit_constants: UnitConstants, #[serde(rename = "unitQuantities")] - pub(in crate::provider) unit_quantities: UnitQuantities, + pub(crate) unit_quantities: UnitQuantities, #[serde(rename = "convertUnits")] - pub(in crate::provider) convert_units: ConvertUnits, + pub(crate) convert_units: ConvertUnits, } #[derive(Deserialize)] -pub(in crate::provider) struct Resource { - pub(in crate::provider) supplemental: Supplemental, +pub(crate) struct Resource { + pub(crate) supplemental: Supplemental, } diff --git a/provider/datagen/src/transform/cldr/cldr_serde/units/mod.rs b/provider/bikeshed/src/cldr_serde/units/mod.rs similarity index 74% rename from provider/datagen/src/transform/cldr/cldr_serde/units/mod.rs rename to provider/bikeshed/src/cldr_serde/units/mod.rs index 11f81352220..d27b4c151eb 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/units/mod.rs +++ b/provider/bikeshed/src/cldr_serde/units/mod.rs @@ -2,5 +2,5 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -pub(in crate::provider) mod data; -pub(in crate::provider) mod info; +pub(crate) mod data; +pub(crate) mod info; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/week_data.rs b/provider/bikeshed/src/cldr_serde/week_data.rs similarity index 83% rename from provider/datagen/src/transform/cldr/cldr_serde/week_data.rs rename to provider/bikeshed/src/cldr_serde/week_data.rs index 44bc4d5f60f..ad93d7db6e3 100644 --- a/provider/datagen/src/transform/cldr/cldr_serde/week_data.rs +++ b/provider/bikeshed/src/cldr_serde/week_data.rs @@ -16,7 +16,7 @@ use std::str::FromStr; #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub(in crate::provider) enum Weekday { +pub(crate) enum Weekday { Mon, Tue, Wed, @@ -54,7 +54,7 @@ impl From for icu::calendar::types::IsoWeekday { /// The contained types are strings rather than [`icu::locale::subtags::Region`] /// to avoid an extra parsing step of the variant in data providers. #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] -pub(in crate::provider) enum Territory { +pub(crate) enum Territory { // A territory string, e.g. "AD" for Andorra. Region(Region), // An alternative variant for a given territory (e.g. the first day of the @@ -64,7 +64,7 @@ pub(in crate::provider) enum Territory { } /// The string used to represent the default territory. -pub(in crate::provider) const DEFAULT_TERRITORY: Territory = Territory::Region(region!("001")); +pub(crate) const DEFAULT_TERRITORY: Territory = Territory::Region(region!("001")); /// Suffix used to denote alternative week data variants for a given territory (e.g. English BC/AD v English BCE/CE). const ALT_VARIANT_SUFFIX: &str = "-alt-variant"; @@ -109,7 +109,7 @@ impl<'de> Deserialize<'de> for Territory { /// Wrapper used to deserialize json string keys as u8s. #[derive(Debug, Deserialize)] #[serde(try_from = "String")] -pub(in crate::provider) struct U8(pub(in crate::provider) u8); +pub(crate) struct U8(pub(crate) u8); impl TryFrom for U8 { type Error = ParseIntError; @@ -121,20 +121,20 @@ impl TryFrom for U8 { #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] -pub(in crate::provider) struct WeekData { - pub(in crate::provider) min_days: BTreeMap, - pub(in crate::provider) first_day: BTreeMap, - pub(in crate::provider) weekend_start: BTreeMap, - pub(in crate::provider) weekend_end: BTreeMap, +pub(crate) struct WeekData { + pub(crate) min_days: BTreeMap, + pub(crate) first_day: BTreeMap, + pub(crate) weekend_start: BTreeMap, + pub(crate) weekend_end: BTreeMap, } #[derive(Deserialize)] #[serde(rename_all = "camelCase")] -pub(in crate::provider) struct Supplemental { - pub(in crate::provider) week_data: WeekData, +pub(crate) struct Supplemental { + pub(crate) week_data: WeekData, } #[derive(Deserialize)] -pub(in crate::provider) struct Resource { - pub(in crate::provider) supplemental: Supplemental, +pub(crate) struct Resource { + pub(crate) supplemental: Supplemental, } diff --git a/provider/bikeshed/src/collator/collator_serde.rs b/provider/bikeshed/src/collator/collator_serde.rs new file mode 100644 index 00000000000..f7b642c6b07 --- /dev/null +++ b/provider/bikeshed/src/collator/collator_serde.rs @@ -0,0 +1,48 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +use icu::collections::codepointtrie::toml::CodePointTrieToml; + +/// Serde counterpart for `CollationDataV1`. +#[derive(serde::Deserialize)] +pub(crate) struct CollationData { + pub(crate) trie: CodePointTrieToml, + pub(crate) contexts: Vec, + pub(crate) ce32s: Vec, + // TOML integers are signed 64-bit, so the range of u64 isn't available + pub(crate) ces: Vec, +} + +/// Serde counterpart for `CollationDiacriticsV1`. +#[derive(serde::Deserialize)] +pub(crate) struct CollationDiacritics { + pub(crate) secondaries: Vec, +} + +/// Serde counterpart for `CollationJamoV1`. +#[derive(serde::Deserialize)] +pub(crate) struct CollationJamo { + pub(crate) ce32s: Vec, +} + +/// Serde counterpart for `CollationMetadataV1`. +#[derive(serde::Deserialize)] +pub(crate) struct CollationMetadata { + pub(crate) bits: u32, +} + +/// Serde counterpart for `CollationReorderingV1`. +#[derive(serde::Deserialize)] +pub(crate) struct CollationReordering { + pub(crate) min_high_no_reorder: u32, + pub(crate) reorder_table: Vec, + pub(crate) reorder_ranges: Vec, +} + +/// Serde counterpart for `CollationSpecialPrimariesV1`. +#[derive(serde::Deserialize)] +pub(crate) struct CollationSpecialPrimaries { + pub(crate) last_primaries: Vec, // length always supposed to be 4 + pub(crate) numeric_primary: u8, +} diff --git a/provider/datagen/src/transform/icuexport/collator/mod.rs b/provider/bikeshed/src/collator/mod.rs similarity index 97% rename from provider/datagen/src/transform/icuexport/collator/mod.rs rename to provider/bikeshed/src/collator/mod.rs index d49d9bf780c..b13c1c2ba02 100644 --- a/provider/datagen/src/transform/icuexport/collator/mod.rs +++ b/provider/bikeshed/src/collator/mod.rs @@ -5,8 +5,8 @@ //! This module contains provider implementations backed by TOML files //! exported from ICU. -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use icu::collator::provider::*; use icu::collections::codepointtrie::CodePointTrie; use icu::locale::extensions::unicode::{key, value}; @@ -37,9 +37,11 @@ impl DataProvider for DatagenProvider { let parent_locales = &self .cldr()? .core() - .read_and_parse::( + .read_and_parse::( "supplemental/parentLocales.json", - )?.supplemental.parent_locales; + )? + .supplemental + .parent_locales; let additional = if parent_locales .rules diff --git a/provider/datagen/src/transform/cldr/currency/essentials.rs b/provider/bikeshed/src/currency/essentials.rs similarity index 98% rename from provider/datagen/src/transform/cldr/currency/essentials.rs rename to provider/bikeshed/src/currency/essentials.rs index 51359fb9360..f186f6a3b99 100644 --- a/provider/datagen/src/transform/cldr/currency/essentials.rs +++ b/provider/bikeshed/src/currency/essentials.rs @@ -2,10 +2,10 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::transform::cldr::decimal::decimal_pattern::DecimalPattern; -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::cldr_serde; +use crate::decimal::decimal_pattern::DecimalPattern; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use std::borrow::Cow; diff --git a/provider/datagen/src/transform/cldr/currency/extended.rs b/provider/bikeshed/src/currency/extended.rs similarity index 99% rename from provider/datagen/src/transform/cldr/currency/extended.rs rename to provider/bikeshed/src/currency/extended.rs index 7e7bfe58f37..8fae25b5947 100644 --- a/provider/datagen/src/transform/cldr/currency/extended.rs +++ b/provider/bikeshed/src/currency/extended.rs @@ -2,7 +2,7 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde; +use crate::cldr_serde; use crate::DatagenProvider; use std::borrow::Cow; diff --git a/provider/datagen/src/transform/cldr/currency/mod.rs b/provider/bikeshed/src/currency/mod.rs similarity index 72% rename from provider/datagen/src/transform/cldr/currency/mod.rs rename to provider/bikeshed/src/currency/mod.rs index b508c8ba7b2..aaa3553ce0f 100644 --- a/provider/datagen/src/transform/cldr/currency/mod.rs +++ b/provider/bikeshed/src/currency/mod.rs @@ -2,5 +2,5 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -pub(in crate::provider) mod essentials; -pub(in crate::provider) mod extended; +pub(crate) mod essentials; +pub(crate) mod extended; diff --git a/provider/datagen/src/transform/cldr/datetime/mod.rs b/provider/bikeshed/src/datetime/mod.rs similarity index 98% rename from provider/datagen/src/transform/cldr/datetime/mod.rs rename to provider/bikeshed/src/datetime/mod.rs index 70abb0146f8..d58f0ffccaa 100644 --- a/provider/datagen/src/transform/cldr/datetime/mod.rs +++ b/provider/bikeshed/src/datetime/mod.rs @@ -2,9 +2,9 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::cldr_serde; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use either::Either; use icu::datetime::provider::calendar::*; use icu::locale::extensions::unicode::Value; @@ -20,9 +20,9 @@ mod neo_skeleton; mod patterns; mod skeletons; mod symbols; -pub(in crate::provider) mod week_data; +pub(crate) mod week_data; -pub(in crate::provider) static SUPPORTED_CALS: OnceLock< +pub(crate) static SUPPORTED_CALS: OnceLock< HashMap, > = OnceLock::new(); diff --git a/provider/datagen/src/transform/cldr/datetime/neo.rs b/provider/bikeshed/src/datetime/neo.rs similarity index 99% rename from provider/datagen/src/transform/cldr/datetime/neo.rs rename to provider/bikeshed/src/datetime/neo.rs index 298d48f6882..9ab568d600c 100644 --- a/provider/datagen/src/transform/cldr/datetime/neo.rs +++ b/provider/bikeshed/src/datetime/neo.rs @@ -3,9 +3,9 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use super::supported_cals; -use crate::provider::transform::cldr::cldr_serde::ca; -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::cldr_serde::ca; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use icu::datetime::pattern::{self, CoarseHourCycle}; use icu::datetime::provider::calendar::{ diff --git a/provider/datagen/src/transform/cldr/datetime/neo_skeleton.rs b/provider/bikeshed/src/datetime/neo_skeleton.rs similarity index 99% rename from provider/datagen/src/transform/cldr/datetime/neo_skeleton.rs rename to provider/bikeshed/src/datetime/neo_skeleton.rs index 9ad972fb2a8..305083fa04a 100644 --- a/provider/datagen/src/transform/cldr/datetime/neo_skeleton.rs +++ b/provider/bikeshed/src/datetime/neo_skeleton.rs @@ -4,7 +4,7 @@ use std::collections::HashSet; -use crate::provider::{DatagenProvider, IterableDataProviderCached}; +use crate::{DatagenProvider, IterableDataProviderCached}; use either::Either; use icu::datetime::neo_skeleton::{ NeoDateComponents, NeoDateSkeleton, NeoSkeletonLength, NeoTimeComponents, NeoTimeSkeleton, diff --git a/provider/datagen/src/transform/cldr/datetime/patterns.rs b/provider/bikeshed/src/datetime/patterns.rs similarity index 99% rename from provider/datagen/src/transform/cldr/datetime/patterns.rs rename to provider/bikeshed/src/datetime/patterns.rs index 9e0cc980758..b2899d90a4b 100644 --- a/provider/datagen/src/transform/cldr/datetime/patterns.rs +++ b/provider/bikeshed/src/datetime/patterns.rs @@ -2,7 +2,7 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde; +use crate::cldr_serde; use icu::datetime::pattern; use icu::datetime::pattern::CoarseHourCycle; use icu::datetime::provider::calendar::*; diff --git a/provider/datagen/src/transform/cldr/datetime/skeletons.rs b/provider/bikeshed/src/datetime/skeletons.rs similarity index 98% rename from provider/datagen/src/transform/cldr/datetime/skeletons.rs rename to provider/bikeshed/src/datetime/skeletons.rs index 71d95c9fd3c..a70830ed096 100644 --- a/provider/datagen/src/transform/cldr/datetime/skeletons.rs +++ b/provider/bikeshed/src/datetime/skeletons.rs @@ -2,7 +2,7 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde; +use crate::cldr_serde; use icu::datetime::pattern::runtime::{PatternPlurals, PluralPattern}; use icu::datetime::provider::calendar::*; use icu::datetime::skeleton::reference::Skeleton; diff --git a/provider/datagen/src/transform/cldr/datetime/symbols.rs b/provider/bikeshed/src/datetime/symbols.rs similarity index 93% rename from provider/datagen/src/transform/cldr/datetime/symbols.rs rename to provider/bikeshed/src/datetime/symbols.rs index 623f3f11807..a76241a443e 100644 --- a/provider/datagen/src/transform/cldr/datetime/symbols.rs +++ b/provider/bikeshed/src/datetime/symbols.rs @@ -2,14 +2,14 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde::{self, ca}; +use crate::cldr_serde::{self, ca}; use icu::calendar::types::MonthCode; use icu::datetime::provider::calendar::*; use std::borrow::Cow; use std::collections::BTreeMap; use tinystr::{tinystr, TinyStr16, TinyStr4}; -pub(in crate::provider) fn convert_dates( +pub(crate) fn convert_dates( other: &cldr_serde::ca::Dates, calendar: &str, ) -> DateSymbolsV1<'static> { @@ -25,7 +25,7 @@ pub(in crate::provider) fn convert_dates( } } -pub(in crate::provider) fn convert_times(other: &cldr_serde::ca::Dates) -> TimeSymbolsV1<'static> { +pub(crate) fn convert_times(other: &cldr_serde::ca::Dates) -> TimeSymbolsV1<'static> { TimeSymbolsV1 { day_periods: other.day_periods.get(&()), } @@ -49,7 +49,7 @@ fn convert_eras(eras: &cldr_serde::ca::Eras, calendar: &str) -> Eras<'static> { out_eras } /// Returns a month code map and whether the map has leap months -pub(in crate::provider) fn get_month_code_map(calendar: &str) -> &'static [TinyStr4] { +pub(crate) fn get_month_code_map(calendar: &str) -> &'static [TinyStr4] { // This will need to be more complicated to handle lunar calendars // https://github.com/unicode-org/icu4x/issues/2066 static SOLAR_MONTH_CODES: &[TinyStr4] = &[ @@ -96,9 +96,7 @@ pub(in crate::provider) fn get_month_code_map(calendar: &str) -> &'static [TinyS } } -pub(in crate::provider) fn get_era_code_map( - calendar: &str, -) -> impl Iterator { +pub(crate) fn get_era_code_map(calendar: &str) -> impl Iterator { use either::Either; let array: &[_] = match calendar { @@ -106,7 +104,7 @@ pub(in crate::provider) fn get_era_code_map( "buddhist" => &[("0", tinystr!(16, "be"))], "japanese" | "japanext" => { return Either::Right( - crate::provider::transform::cldr::calendar::japanese::get_era_code_map() + crate::calendar::japanese::get_era_code_map() .iter() .map(|(k, v)| (&**k, *v)), ) @@ -165,7 +163,7 @@ macro_rules! symbols_from { ([$symbols: path, $name2: ident], $ctx:ty) => { impl $symbols { // Helper function which returns `None` if the two groups of symbols overlap. - pub(in crate::provider) fn get_unaliased(&self, other: &Self) -> Option { + pub(crate) fn get_unaliased(&self, other: &Self) -> Option { if self == other { None } else { @@ -187,7 +185,7 @@ macro_rules! symbols_from { impl ca::StandAloneWidths<$symbols> { // Helper function which returns `None` if the two groups of symbols overlap. - pub(in crate::provider) fn get_unaliased(&self, other: &ca::FormatWidths<$symbols>) -> Option { + pub(crate) fn get_unaliased(&self, other: &ca::FormatWidths<$symbols>) -> Option { let abbreviated = self.abbreviated.as_ref().and_then(|v| v.get_unaliased(&other.abbreviated)); let narrow = self.narrow.as_ref().and_then(|v| v.get_unaliased(&other.narrow)); let short = if self.short == other.short { diff --git a/provider/datagen/src/transform/cldr/datetime/week_data.rs b/provider/bikeshed/src/datetime/week_data.rs similarity index 98% rename from provider/datagen/src/transform/cldr/datetime/week_data.rs rename to provider/bikeshed/src/datetime/week_data.rs index 8cf294f7a7e..35f5d712ec0 100644 --- a/provider/datagen/src/transform/cldr/datetime/week_data.rs +++ b/provider/bikeshed/src/datetime/week_data.rs @@ -2,12 +2,12 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde::{ +use crate::cldr_serde::{ self, week_data::{Territory, DEFAULT_TERRITORY}, }; -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use icu::calendar::provider::{ WeekDataV1, WeekDataV1Marker, WeekDataV2, WeekDataV2Marker, WeekdaySet, }; diff --git a/provider/datagen/src/transform/cldr/decimal/compact.rs b/provider/bikeshed/src/decimal/compact.rs similarity index 98% rename from provider/datagen/src/transform/cldr/decimal/compact.rs rename to provider/bikeshed/src/decimal/compact.rs index f652f2290ea..11a8294580c 100644 --- a/provider/datagen/src/transform/cldr/decimal/compact.rs +++ b/provider/bikeshed/src/decimal/compact.rs @@ -2,9 +2,9 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::cldr_serde; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use icu::experimental::compactdecimal::provider::*; use icu::locale::{extensions::unicode::key, subtags::Subtag}; use icu_provider::prelude::*; diff --git a/provider/datagen/src/transform/cldr/decimal/compact_decimal_pattern.rs b/provider/bikeshed/src/decimal/compact_decimal_pattern.rs similarity index 98% rename from provider/datagen/src/transform/cldr/decimal/compact_decimal_pattern.rs rename to provider/bikeshed/src/decimal/compact_decimal_pattern.rs index 9b8399cebf7..12b043b6d4b 100644 --- a/provider/datagen/src/transform/cldr/decimal/compact_decimal_pattern.rs +++ b/provider/bikeshed/src/decimal/compact_decimal_pattern.rs @@ -2,7 +2,7 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde::numbers::DecimalFormat; +use crate::cldr_serde::numbers::DecimalFormat; use icu::experimental::compactdecimal::provider::CompactDecimalPatternDataV1; use icu::experimental::compactdecimal::provider::*; use itertools::Itertools; @@ -20,9 +20,9 @@ use zerovec::ule::encode_varule_to_box; struct ParsedPattern { /// The unescaped literal text, e.g., " mille" for the pattern "00 mille", /// "mille" for the pattern "mille". - pub(in crate::provider) literal_text: Cow<'static, str>, + pub(crate) literal_text: Cow<'static, str>, /// The placeholder; `None` for patterns such as "mille". - pub(in crate::provider) placeholder: Option, + pub(crate) placeholder: Option, } /// Represents the placeholder in a compact decimal pattern as its position in @@ -33,8 +33,8 @@ struct ParsedPlaceholder { /// The position in the literal text where the placeholder is to be inserted; /// in particular, this is 0 for insertion at the beginning, which is the /// most frequent case, as in "00 mille". - pub(in crate::provider) index: usize, - pub(in crate::provider) number_of_0s: i8, + pub(crate) index: usize, + pub(crate) number_of_0s: i8, } /// Parses a compact decimal pattern string, performing any validation that can diff --git a/provider/datagen/src/transform/cldr/decimal/decimal_pattern.rs b/provider/bikeshed/src/decimal/decimal_pattern.rs similarity index 88% rename from provider/datagen/src/transform/cldr/decimal/decimal_pattern.rs rename to provider/bikeshed/src/decimal/decimal_pattern.rs index 6df889047b4..05e621b69f0 100644 --- a/provider/datagen/src/transform/cldr/decimal/decimal_pattern.rs +++ b/provider/bikeshed/src/decimal/decimal_pattern.rs @@ -8,14 +8,14 @@ use displaydoc::Display; use icu::decimal::provider::AffixesV1; -#[cfg(feature = "experimental_components")] +#[cfg(feature = "experimental")] use icu_pattern::{DoublePlaceholderKey, PatternItemCow}; use itertools::Itertools; use std::borrow::Cow; use std::str::FromStr; #[derive(Display, Debug, PartialEq)] -pub(in crate::provider) enum Error { +pub(crate) enum Error { #[displaydoc("No body in decimal subpattern")] NoBodyInSubpattern, #[displaydoc("Unknown decimal body: {0}")] @@ -26,13 +26,13 @@ impl std::error::Error for Error {} /// Representation of a UTS-35 number subpattern (part of a number pattern between ';'s). #[derive(Debug, PartialEq)] -pub(in crate::provider) struct DecimalSubPattern { - pub(in crate::provider) prefix: String, - pub(in crate::provider) suffix: String, - pub(in crate::provider) primary_grouping: u8, - pub(in crate::provider) secondary_grouping: u8, - pub(in crate::provider) min_fraction_digits: u8, - pub(in crate::provider) max_fraction_digits: u8, +pub(crate) struct DecimalSubPattern { + pub(crate) prefix: String, + pub(crate) suffix: String, + pub(crate) primary_grouping: u8, + pub(crate) secondary_grouping: u8, + pub(crate) min_fraction_digits: u8, + pub(crate) max_fraction_digits: u8, } impl FromStr for DecimalSubPattern { @@ -81,10 +81,8 @@ impl FromStr for DecimalSubPattern { } impl DecimalSubPattern { - #[cfg(feature = "experimental_components")] - pub(in crate::provider) fn to_pattern_items( - &self, - ) -> Vec> { + #[cfg(feature = "experimental")] + pub(crate) fn to_pattern_items(&self) -> Vec> { vec![ PatternItemCow::Literal(Cow::Borrowed(&self.prefix)), PatternItemCow::Placeholder(DoublePlaceholderKey::Place0), @@ -96,9 +94,9 @@ impl DecimalSubPattern { /// Representation of a UTS-35 number pattern, including positive subpattern (required) and negative /// subpattern (optional). #[derive(Debug, PartialEq)] -pub(in crate::provider) struct DecimalPattern { - pub(in crate::provider) positive: DecimalSubPattern, - pub(in crate::provider) negative: Option, +pub(crate) struct DecimalPattern { + pub(crate) positive: DecimalSubPattern, + pub(crate) negative: Option, } impl FromStr for DecimalPattern { @@ -119,7 +117,7 @@ impl FromStr for DecimalPattern { } impl DecimalPattern { - pub(in crate::provider) fn localize_sign(&self, sign_str: &str) -> AffixesV1<'static> { + pub(crate) fn localize_sign(&self, sign_str: &str) -> AffixesV1<'static> { // UTS 35: the absence of a negative pattern means a single prefixed sign let signed_affixes = self .negative @@ -137,8 +135,8 @@ impl DecimalPattern { fn test_basic() { #[derive(Debug)] struct TestCase<'s> { - pub(in crate::provider) pattern: &'s str, - pub(in crate::provider) expected: Result, + pub(crate) pattern: &'s str, + pub(crate) expected: Result, } let cases = [ TestCase { diff --git a/provider/datagen/src/transform/cldr/decimal/mod.rs b/provider/bikeshed/src/decimal/mod.rs similarity index 93% rename from provider/datagen/src/transform/cldr/decimal/mod.rs rename to provider/bikeshed/src/decimal/mod.rs index 4f8f2e0007e..71c8f274161 100644 --- a/provider/datagen/src/transform/cldr/decimal/mod.rs +++ b/provider/bikeshed/src/decimal/mod.rs @@ -4,8 +4,8 @@ use std::collections::HashSet; -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; +use crate::cldr_serde; +use crate::DatagenProvider; use icu::locale::extensions::unicode::key; use icu::locale::extensions::unicode::Value; use icu::locale::subtags::Subtag; @@ -13,11 +13,11 @@ use icu::locale::LanguageIdentifier; use icu_provider::prelude::*; use tinystr::TinyAsciiStr; -#[cfg(feature = "experimental_components")] +#[cfg(feature = "experimental")] mod compact; -#[cfg(feature = "experimental_components")] +#[cfg(feature = "experimental")] mod compact_decimal_pattern; -pub(in crate::provider) mod decimal_pattern; +pub(crate) mod decimal_pattern; mod symbols; impl DatagenProvider { diff --git a/provider/datagen/src/transform/cldr/decimal/symbols.rs b/provider/bikeshed/src/decimal/symbols.rs similarity index 94% rename from provider/datagen/src/transform/cldr/decimal/symbols.rs rename to provider/bikeshed/src/decimal/symbols.rs index 70f963f43e7..2c7be782116 100644 --- a/provider/datagen/src/transform/cldr/decimal/symbols.rs +++ b/provider/bikeshed/src/decimal/symbols.rs @@ -2,9 +2,9 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::cldr_serde; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use icu::decimal::provider::*; use icu::locale::{extensions::unicode::key, subtags::Subtag}; use icu_provider::prelude::*; @@ -58,8 +58,8 @@ impl IterableDataProviderCached for DatagenProvider { #[derive(Debug)] struct NumbersWithNumsys<'a>( - pub(in crate::provider) &'a cldr_serde::numbers::Numbers, - pub(in crate::provider) Subtag, + pub(crate) &'a cldr_serde::numbers::Numbers, + pub(crate) Subtag, ); impl TryFrom> for DecimalSymbolsV1<'static> { diff --git a/provider/datagen/src/transform/cldr/displaynames/language.rs b/provider/bikeshed/src/displaynames/language.rs similarity index 98% rename from provider/datagen/src/transform/cldr/displaynames/language.rs rename to provider/bikeshed/src/displaynames/language.rs index 27708b44a96..a7bd0f3939b 100644 --- a/provider/datagen/src/transform/cldr/displaynames/language.rs +++ b/provider/bikeshed/src/displaynames/language.rs @@ -2,9 +2,9 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::cldr_serde; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use icu::experimental::displaynames::provider::*; use icu::locale::subtags::Language; diff --git a/provider/bikeshed/src/displaynames/mod.rs b/provider/bikeshed/src/displaynames/mod.rs new file mode 100644 index 00000000000..056be5fdcfe --- /dev/null +++ b/provider/bikeshed/src/displaynames/mod.rs @@ -0,0 +1,8 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +pub(crate) mod language; +pub(crate) mod region; +pub(crate) mod script; +pub(crate) mod variant; diff --git a/provider/datagen/src/transform/cldr/displaynames/region.rs b/provider/bikeshed/src/displaynames/region.rs similarity index 97% rename from provider/datagen/src/transform/cldr/displaynames/region.rs rename to provider/bikeshed/src/displaynames/region.rs index 5a0ec6bd679..53ca626c186 100644 --- a/provider/datagen/src/transform/cldr/displaynames/region.rs +++ b/provider/bikeshed/src/displaynames/region.rs @@ -2,9 +2,9 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::cldr_serde; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use core::convert::TryFrom; use icu::experimental::displaynames::provider::*; use icu::locale::subtags::Region; diff --git a/provider/datagen/src/transform/cldr/displaynames/script.rs b/provider/bikeshed/src/displaynames/script.rs similarity index 97% rename from provider/datagen/src/transform/cldr/displaynames/script.rs rename to provider/bikeshed/src/displaynames/script.rs index 6220bf437c9..a465e83db01 100644 --- a/provider/datagen/src/transform/cldr/displaynames/script.rs +++ b/provider/bikeshed/src/displaynames/script.rs @@ -2,9 +2,9 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::cldr_serde; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use core::convert::TryFrom; use icu::experimental::displaynames::provider::*; use icu::locale::{subtags::Script, ParseError}; diff --git a/provider/datagen/src/transform/cldr/displaynames/variant.rs b/provider/bikeshed/src/displaynames/variant.rs similarity index 96% rename from provider/datagen/src/transform/cldr/displaynames/variant.rs rename to provider/bikeshed/src/displaynames/variant.rs index 5f974e744e2..22ac91bc1f4 100644 --- a/provider/datagen/src/transform/cldr/displaynames/variant.rs +++ b/provider/bikeshed/src/displaynames/variant.rs @@ -2,9 +2,9 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::cldr_serde; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use core::convert::TryFrom; use icu::experimental::displaynames::provider::*; use icu::locale::{subtags::Variant, ParseError}; diff --git a/provider/datagen/src/transform/cldr/fallback/mod.rs b/provider/bikeshed/src/fallback/mod.rs similarity index 98% rename from provider/datagen/src/transform/cldr/fallback/mod.rs rename to provider/bikeshed/src/fallback/mod.rs index d8d3685f243..adeacb03e42 100644 --- a/provider/datagen/src/transform/cldr/fallback/mod.rs +++ b/provider/bikeshed/src/fallback/mod.rs @@ -2,8 +2,8 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; +use crate::cldr_serde; +use crate::DatagenProvider; use super::locale_canonicalizer::likely_subtags::LikelySubtagsResources; use icu::locale::provider::*; diff --git a/provider/bikeshed/src/hello_world/mod.rs b/provider/bikeshed/src/hello_world/mod.rs new file mode 100644 index 00000000000..d2a49b63884 --- /dev/null +++ b/provider/bikeshed/src/hello_world/mod.rs @@ -0,0 +1,22 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +use crate::DatagenProvider; +use icu_provider::datagen::*; +use icu_provider::hello_world::*; +use icu_provider::prelude::*; +use std::collections::HashSet; + +impl DataProvider for DatagenProvider { + fn load(&self, req: DataRequest) -> Result, DataError> { + self.check_req::(req)?; + HelloWorldProvider.load(req) + } +} + +impl IterableDataProvider for DatagenProvider { + fn supported_requests(&self) -> Result, DataError> { + HelloWorldProvider.supported_requests() + } +} diff --git a/provider/datagen/src/provider.rs b/provider/bikeshed/src/lib.rs similarity index 83% rename from provider/datagen/src/provider.rs rename to provider/bikeshed/src/lib.rs index dff1d719ffa..dbe0c82ad2b 100644 --- a/provider/datagen/src/provider.rs +++ b/provider/bikeshed/src/lib.rs @@ -2,6 +2,22 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). +//! `icu_datagen_bikeshed` defines [`DatagenProvider`], the authorative ICU4X [`DataProvider`] that produces data from +//! CLDR and ICU sources. +//! +//! As the name suggests, [`DatagenProvider`] is mainly intended as a source for the `icu_datagen` crate, +//! which transforms the data into a more efficient format. +//! +//! # Cargo features +//! +//! * `networking` +//! * enables networking support to download CLDR and ICU source data from GitHub +//! * `use_wasm` / `use_icu4c` +//! * see the documentation on [`icu_codepointtrie_builder`](icu_codepointtrie_builder#build-configuration) +//! * `experimental` +//! * enables markers defined in the unstable `icu::experimental` module + +use cldr_cache::CldrCache; use elsa::sync::FrozenMap; use icu_provider::datagen::IterableDataProvider; use icu_provider::prelude::*; @@ -11,11 +27,39 @@ use std::collections::HashSet; use std::fmt::Debug; use std::path::PathBuf; use std::sync::Arc; -use transform::cldr::source::CldrCache; - -#[path = "transform/mod.rs"] -mod transform; +mod calendar; +mod characters; +mod cldr_serde; +mod collator; +#[cfg(feature = "experimental")] +mod currency; +mod datetime; +mod decimal; +#[cfg(feature = "experimental")] +mod displaynames; +mod fallback; +mod hello_world; +mod list; +mod locale_canonicalizer; +mod normalizer; +#[cfg(feature = "experimental")] +mod percent; +#[cfg(feature = "experimental")] +mod personnames; +mod plurals; +mod properties; +#[cfg(feature = "experimental")] +mod relativetime; +mod segmenter; +mod time_zones; +#[cfg(feature = "experimental")] +mod transforms; +mod ucase; +#[cfg(feature = "experimental")] +mod units; + +mod cldr_cache; mod source; #[cfg(test)] @@ -24,7 +68,7 @@ mod tests; /// An [`ExportableProvider`](icu_provider::datagen::ExportableProvider) backed by raw CLDR and ICU data. /// /// This provider covers all markers that are used by ICU4X. It is intended as the canonical -/// provider for [`DatagenDriver::export`](crate::DatagenDriver::export). +/// provider for `DatagenDriver::export`. /// /// If a required data source has not been set, `DataProvider::load` will /// fail with the appropriate error: @@ -55,36 +99,25 @@ pub struct DatagenProvider { macro_rules! cb { ($($marker:path = $path:literal,)+ #[experimental] $($emarker:path = $epath:literal,)+) => { - icu_provider::make_exportable_provider!( - DatagenProvider, - [ - icu_provider::hello_world::HelloWorldV1Marker, - $( - $marker, - )+ - $( - #[cfg(feature = "experimental_components")] - $emarker, - )+ - ] - ); + icu_provider::make_exportable_provider!(DatagenProvider, [ + $($marker,)+ + $(#[cfg(feature = "experimental")] $emarker,)+ + ]); } } icu_registry::registry!(cb); -icu_provider::impl_data_provider_never_marker!(DatagenProvider); - impl DatagenProvider { - /// The latest CLDR JSON tag that has been verified to work with this version of `icu_datagen`. + /// The latest CLDR JSON tag that has been verified to work with this version of `icu_datagen_bikeshed`. pub const LATEST_TESTED_CLDR_TAG: &'static str = "45.0.0"; - /// The latest ICU export tag that has been verified to work with this version of `icu_datagen`. + /// The latest ICU export tag that has been verified to work with this version of `icu_datagen_bikeshed`. pub const LATEST_TESTED_ICUEXPORT_TAG: &'static str = "icu4x/2024-05-16/75.x"; - /// The latest segmentation LSTM model tag that has been verified to work with this version of `icu_datagen`. + /// The latest segmentation LSTM model tag that has been verified to work with this version of `icu_datagen_bikeshed`. pub const LATEST_TESTED_SEGMENTER_LSTM_TAG: &'static str = "v0.1.0"; - /// A provider using the latest data that has been verified to work with this version of `icu_datagen`. + /// A provider using the latest data that has been verified to work with this version of `icu_datagen_bikeshed`. /// /// See [`LATEST_TESTED_CLDR_TAG`](Self::LATEST_TESTED_CLDR_TAG), /// [`LATEST_TESTED_ICUEXPORT_TAG`](Self::LATEST_TESTED_ICUEXPORT_TAG), @@ -280,10 +313,99 @@ impl DatagenProvider { } } +impl DatagenProvider { + fn check_req(&self, req: DataRequest) -> Result<(), DataError> + where + DatagenProvider: IterableDataProvider, + { + if ::INFO.is_singleton && !req.locale.is_empty() { + Err(DataErrorKind::ExtraneousLocale) + } else if !self.supports_request(req.locale, req.marker_attributes)? { + Err(DataErrorKind::MissingLocale) + } else { + Ok(()) + } + .map_err(|e| e.with_req(::INFO, req)) + } +} + +#[test] +fn test_missing_locale() { + use icu::locale::langid; + use icu_provider::hello_world::*; + let provider = DatagenProvider::new_testing(); + assert!(DataProvider::::load( + &provider, + DataRequest { + locale: &langid!("fi").into(), + ..Default::default() + } + ) + .is_ok()); + assert!(DataProvider::::load( + &provider, + DataRequest { + locale: &langid!("arc").into(), + ..Default::default() + } + ) + .is_err()); +} + +trait IterableDataProviderCached: DataProvider { + fn supported_requests_cached( + &self, + ) -> Result, DataError>; +} + +impl DatagenProvider { + #[allow(clippy::type_complexity)] // not as complex as it appears + fn populate_supported_requests_cache( + &self, + ) -> Result<&HashSet<(Cow<'static, DataLocale>, Cow<'static, DataMarkerAttributes>)>, DataError> + where + DatagenProvider: IterableDataProviderCached, + { + self.supported_requests_cache + .insert_with(M::INFO, || { + Box::new(self.supported_requests_cached().map(|m| { + m.into_iter() + .map(|(k, v)| (Cow::Owned(k), Cow::Owned(v))) + .collect() + })) + }) + .as_ref() + .map_err(|&e| e) + } +} + +impl IterableDataProvider for DatagenProvider +where + DatagenProvider: IterableDataProviderCached, +{ + fn supported_requests(&self) -> Result, DataError> { + Ok(self + .populate_supported_requests_cache()? + .iter() + .map(|(k, v)| (k.clone().into_owned(), v.clone().into_owned())) + .collect()) + } + + fn supports_request( + &self, + locale: &DataLocale, + marker_attributes: &DataMarkerAttributes, + ) -> Result { + Ok(self + .populate_supported_requests_cache()? + .contains(&(Cow::Borrowed(locale), Cow::Borrowed(marker_attributes)))) + } +} + /// Specifies the collation Han database to use. /// /// Unihan is more precise but significantly increases data size. See -/// +/// #[derive(Debug, Copy, Clone, PartialEq, Eq, Default, serde::Serialize, serde::Deserialize)] #[non_exhaustive] pub enum CollationHanDatabase { @@ -353,53 +475,3 @@ impl std::fmt::Display for TrieType { } } } - -trait IterableDataProviderCached: DataProvider { - fn supported_requests_cached( - &self, - ) -> Result, DataError>; -} - -impl DatagenProvider { - #[allow(clippy::type_complexity)] // not as complex as it appears - fn populate_supported_requests_cache( - &self, - ) -> Result<&HashSet<(Cow<'static, DataLocale>, Cow<'static, DataMarkerAttributes>)>, DataError> - where - DatagenProvider: IterableDataProviderCached, - { - self.supported_requests_cache - .insert_with(M::INFO, || { - Box::new(self.supported_requests_cached().map(|m| { - m.into_iter() - .map(|(k, v)| (Cow::Owned(k), Cow::Owned(v))) - .collect() - })) - }) - .as_ref() - .map_err(|&e| e) - } -} - -impl IterableDataProvider for DatagenProvider -where - DatagenProvider: IterableDataProviderCached, -{ - fn supported_requests(&self) -> Result, DataError> { - Ok(self - .populate_supported_requests_cache()? - .iter() - .map(|(k, v)| (k.clone().into_owned(), v.clone().into_owned())) - .collect()) - } - - fn supports_request( - &self, - locale: &DataLocale, - marker_attributes: &DataMarkerAttributes, - ) -> Result { - Ok(self - .populate_supported_requests_cache()? - .contains(&(Cow::Borrowed(locale), Cow::Borrowed(marker_attributes)))) - } -} diff --git a/provider/datagen/src/transform/cldr/list/mod.rs b/provider/bikeshed/src/list/mod.rs similarity index 97% rename from provider/datagen/src/transform/cldr/list/mod.rs rename to provider/bikeshed/src/list/mod.rs index a4192aa057a..46961428b2a 100644 --- a/provider/datagen/src/transform/cldr/list/mod.rs +++ b/provider/bikeshed/src/list/mod.rs @@ -2,9 +2,9 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::cldr_serde; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use icu::list::provider::*; use icu::locale::subtags::language; use icu_provider::prelude::*; diff --git a/provider/datagen/src/transform/cldr/locale_canonicalizer/aliases.rs b/provider/bikeshed/src/locale_canonicalizer/aliases.rs similarity index 99% rename from provider/datagen/src/transform/cldr/locale_canonicalizer/aliases.rs rename to provider/bikeshed/src/locale_canonicalizer/aliases.rs index ba14512f39e..78e2e84b554 100644 --- a/provider/datagen/src/transform/cldr/locale_canonicalizer/aliases.rs +++ b/provider/bikeshed/src/locale_canonicalizer/aliases.rs @@ -2,8 +2,8 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; +use crate::cldr_serde; +use crate::DatagenProvider; use icu::locale::provider::*; use icu::locale::{ subtags::{self, language}, diff --git a/provider/datagen/src/transform/cldr/locale_canonicalizer/directionality.rs b/provider/bikeshed/src/locale_canonicalizer/directionality.rs similarity index 97% rename from provider/datagen/src/transform/cldr/locale_canonicalizer/directionality.rs rename to provider/bikeshed/src/locale_canonicalizer/directionality.rs index c9befed92ce..efcf264b4a9 100644 --- a/provider/datagen/src/transform/cldr/locale_canonicalizer/directionality.rs +++ b/provider/bikeshed/src/locale_canonicalizer/directionality.rs @@ -4,8 +4,8 @@ use std::collections::HashSet; -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; +use crate::cldr_serde; +use crate::DatagenProvider; use icu::locale::provider::*; use icu_provider::datagen::IterableDataProvider; diff --git a/provider/datagen/src/transform/cldr/locale_canonicalizer/likely_subtags.rs b/provider/bikeshed/src/locale_canonicalizer/likely_subtags.rs similarity index 96% rename from provider/datagen/src/transform/cldr/locale_canonicalizer/likely_subtags.rs rename to provider/bikeshed/src/locale_canonicalizer/likely_subtags.rs index 1314fac74a8..4323ba05a27 100644 --- a/provider/datagen/src/transform/cldr/locale_canonicalizer/likely_subtags.rs +++ b/provider/bikeshed/src/locale_canonicalizer/likely_subtags.rs @@ -2,9 +2,9 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::CoverageLevel; -use crate::provider::DatagenProvider; +use crate::cldr_serde; +use crate::CoverageLevel; +use crate::DatagenProvider; use icu::locale::provider::*; use icu::locale::subtags::Language; use icu::locale::LanguageIdentifier; @@ -91,14 +91,14 @@ impl IterableDataProvider for DatagenProvi } } -pub(in crate::provider) struct LikelySubtagsResources<'a> { +pub(crate) struct LikelySubtagsResources<'a> { likely_subtags: &'a cldr_serde::likely_subtags::Resource, basic_plus_languages: HashSet, } impl<'a> LikelySubtagsResources<'a> { - pub(in crate::provider) fn try_from_cldr_cache( - cache: &'a super::super::source::CldrCache, + pub(crate) fn try_from_cldr_cache( + cache: &'a super::super::CldrCache, ) -> Result { let likely_subtags: &cldr_serde::likely_subtags::Resource = cache .core() @@ -136,7 +136,7 @@ impl<'a> LikelySubtagsResources<'a> { || **minimized == LanguageIdentifier::UND } - pub(in crate::provider) fn get_common( + pub(crate) fn get_common( &self, ) -> impl Iterator + '_ { self.likely_subtags @@ -146,7 +146,7 @@ impl<'a> LikelySubtagsResources<'a> { .filter(|min_max| self.common_predicate(min_max)) } - pub(in crate::provider) fn get_extended( + pub(crate) fn get_extended( &self, ) -> impl Iterator + '_ { self.likely_subtags @@ -157,7 +157,7 @@ impl<'a> LikelySubtagsResources<'a> { } } -pub(in crate::provider) fn transform<'x>( +pub(crate) fn transform<'x>( it: impl Iterator + 'x, ) -> LikelySubtagsV1<'static> { let mut language_script = BTreeMap::new(); diff --git a/provider/bikeshed/src/locale_canonicalizer/mod.rs b/provider/bikeshed/src/locale_canonicalizer/mod.rs new file mode 100644 index 00000000000..aef33286e2a --- /dev/null +++ b/provider/bikeshed/src/locale_canonicalizer/mod.rs @@ -0,0 +1,7 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +pub(crate) mod aliases; +pub(crate) mod directionality; +pub(crate) mod likely_subtags; diff --git a/provider/datagen/src/transform/icuexport/normalizer/mod.rs b/provider/bikeshed/src/normalizer/mod.rs similarity index 99% rename from provider/datagen/src/transform/icuexport/normalizer/mod.rs rename to provider/bikeshed/src/normalizer/mod.rs index e7cd9198a9d..f56a2da4447 100644 --- a/provider/datagen/src/transform/icuexport/normalizer/mod.rs +++ b/provider/bikeshed/src/normalizer/mod.rs @@ -5,7 +5,7 @@ //! This module contains provider implementations backed by TOML files //! exported from ICU. -use crate::provider::DatagenProvider; +use crate::DatagenProvider; use icu::collections::char16trie::Char16Trie; use icu::collections::codepointtrie::CodePointTrie; use icu::normalizer::provider::*; diff --git a/provider/bikeshed/src/normalizer/normalizer_serde.rs b/provider/bikeshed/src/normalizer/normalizer_serde.rs new file mode 100644 index 00000000000..fbe321fc5e1 --- /dev/null +++ b/provider/bikeshed/src/normalizer/normalizer_serde.rs @@ -0,0 +1,42 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +use icu::collections::codepointtrie::toml::CodePointTrieToml; + +#[derive(serde::Deserialize)] +pub(crate) struct DecompositionData { + pub(crate) trie: CodePointTrieToml, +} + +#[derive(serde::Deserialize)] +pub(crate) struct DecompositionSupplement { + pub(crate) trie: CodePointTrieToml, + pub(crate) flags: u8, + pub(crate) cap: u16, +} + +#[derive(serde::Deserialize)] +pub(crate) struct DecompositionTables { + pub(crate) scalars16: Vec, + pub(crate) scalars32: Vec, +} + +#[derive(serde::Deserialize)] +pub(crate) struct CompositionPassthrough { + #[serde(rename = "trie")] + pub(crate) _trie: CodePointTrieToml, + #[serde(rename = "first")] + pub(crate) _first: u32, +} + +#[derive(serde::Deserialize)] +pub(crate) struct CanonicalCompositions { + pub(crate) compositions: Vec, +} + +#[derive(serde::Deserialize)] +pub(crate) struct NonRecursiveDecompositionSupplement { + pub(crate) trie: CodePointTrieToml, + pub(crate) scalars32: Vec, +} diff --git a/provider/datagen/src/transform/cldr/percent/mod.rs b/provider/bikeshed/src/percent/mod.rs similarity index 97% rename from provider/datagen/src/transform/cldr/percent/mod.rs rename to provider/bikeshed/src/percent/mod.rs index 8a2c7edd20c..d4681f3136e 100644 --- a/provider/datagen/src/transform/cldr/percent/mod.rs +++ b/provider/bikeshed/src/percent/mod.rs @@ -4,9 +4,9 @@ use std::collections::HashSet; -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::cldr_serde; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use icu::experimental::dimension::provider::percent::*; use icu_provider::prelude::*; diff --git a/provider/datagen/src/transform/cldr/personnames/mod.rs b/provider/bikeshed/src/personnames/mod.rs similarity index 100% rename from provider/datagen/src/transform/cldr/personnames/mod.rs rename to provider/bikeshed/src/personnames/mod.rs diff --git a/provider/datagen/src/transform/cldr/personnames/person_names_format_data_providers.rs b/provider/bikeshed/src/personnames/person_names_format_data_providers.rs similarity index 98% rename from provider/datagen/src/transform/cldr/personnames/person_names_format_data_providers.rs rename to provider/bikeshed/src/personnames/person_names_format_data_providers.rs index 9ffeb2bd350..0930cf4c394 100644 --- a/provider/datagen/src/transform/cldr/personnames/person_names_format_data_providers.rs +++ b/provider/bikeshed/src/personnames/person_names_format_data_providers.rs @@ -10,8 +10,8 @@ use icu::experimental::personnames::provider::*; use icu_provider::prelude::*; use zerovec::VarZeroVec; -use crate::provider::transform::cldr::cldr_serde::personnames::person_name_format_json_struct::Resource; -use crate::provider::IterableDataProviderCached; +use crate::cldr_serde::personnames::person_name_format_json_struct::Resource; +use crate::IterableDataProviderCached; impl DataProvider for crate::DatagenProvider { fn load(&self, req: DataRequest) -> Result, DataError> { diff --git a/provider/datagen/src/transform/cldr/plurals/mod.rs b/provider/bikeshed/src/plurals/mod.rs similarity index 98% rename from provider/datagen/src/transform/cldr/plurals/mod.rs rename to provider/bikeshed/src/plurals/mod.rs index a95bb75839b..72c809c0a2a 100644 --- a/provider/datagen/src/transform/cldr/plurals/mod.rs +++ b/provider/bikeshed/src/plurals/mod.rs @@ -5,9 +5,9 @@ use std::collections::BTreeMap; use std::collections::HashSet; -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::cldr_serde; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use icu::plurals::rules::runtime::ast::Rule; use icu::plurals::{provider::*, PluralCategory}; use icu_provider::prelude::*; diff --git a/provider/datagen/src/transform/icuexport/uprops/bidi_data.rs b/provider/bikeshed/src/properties/bidi_data.rs similarity index 97% rename from provider/datagen/src/transform/icuexport/uprops/bidi_data.rs rename to provider/bikeshed/src/properties/bidi_data.rs index 264c681f0f9..d5bea7f1f07 100644 --- a/provider/datagen/src/transform/icuexport/uprops/bidi_data.rs +++ b/provider/bikeshed/src/properties/bidi_data.rs @@ -4,7 +4,7 @@ use std::collections::HashSet; -use crate::provider::DatagenProvider; +use crate::DatagenProvider; use icu::properties::provider::bidi_data::BidiAuxiliaryPropertiesV1Marker; use icu_provider::datagen::*; use icu_provider::prelude::*; @@ -106,7 +106,7 @@ impl DataProvider for DatagenProvider { ) -> Result, DataError> { self.check_req::(req)?; return Err(DataError::custom( - "icu_datagen must be built with use_icu4c or use_wasm to build Bidi auxiliary properties data", + "icu_datagen_bikeshed must be built with use_icu4c or use_wasm to build Bidi auxiliary properties data", )); } } diff --git a/provider/datagen/src/transform/icuexport/uprops/bin_cp_set.rs b/provider/bikeshed/src/properties/bin_cp_set.rs similarity index 99% rename from provider/datagen/src/transform/icuexport/uprops/bin_cp_set.rs rename to provider/bikeshed/src/properties/bin_cp_set.rs index 2d6ce5512f2..660fc613eef 100644 --- a/provider/datagen/src/transform/icuexport/uprops/bin_cp_set.rs +++ b/provider/bikeshed/src/properties/bin_cp_set.rs @@ -2,7 +2,7 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::DatagenProvider; +use crate::DatagenProvider; use icu::collections::codepointinvlist::CodePointInversionListBuilder; use icu::properties::provider::*; use icu_provider::datagen::*; diff --git a/provider/datagen/src/transform/icuexport/uprops/bin_uniset.rs b/provider/bikeshed/src/properties/bin_uniset.rs similarity index 99% rename from provider/datagen/src/transform/icuexport/uprops/bin_uniset.rs rename to provider/bikeshed/src/properties/bin_uniset.rs index 9c6dbed0a1e..49770a2d26e 100644 --- a/provider/datagen/src/transform/icuexport/uprops/bin_uniset.rs +++ b/provider/bikeshed/src/properties/bin_uniset.rs @@ -2,7 +2,7 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::DatagenProvider; +use crate::DatagenProvider; use icu::collections::codepointinvlist::CodePointInversionListBuilder; use icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList; use icu::properties::provider::*; diff --git a/provider/datagen/src/transform/icuexport/uprops/enum_codepointtrie.rs b/provider/bikeshed/src/properties/enum_codepointtrie.rs similarity index 99% rename from provider/datagen/src/transform/icuexport/uprops/enum_codepointtrie.rs rename to provider/bikeshed/src/properties/enum_codepointtrie.rs index 6b9cee673f4..f72a83f58da 100644 --- a/provider/datagen/src/transform/icuexport/uprops/enum_codepointtrie.rs +++ b/provider/bikeshed/src/properties/enum_codepointtrie.rs @@ -2,7 +2,7 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::DatagenProvider; +use crate::DatagenProvider; use icu::collections::codepointtrie::CodePointTrie; use icu::properties::provider::{names::*, *}; use icu_provider::datagen::*; diff --git a/provider/datagen/src/transform/icuexport/uprops/mod.rs b/provider/bikeshed/src/properties/mod.rs similarity index 100% rename from provider/datagen/src/transform/icuexport/uprops/mod.rs rename to provider/bikeshed/src/properties/mod.rs diff --git a/provider/datagen/src/transform/icuexport/uprops/script.rs b/provider/bikeshed/src/properties/script.rs similarity index 99% rename from provider/datagen/src/transform/icuexport/uprops/script.rs rename to provider/bikeshed/src/properties/script.rs index 6536208890e..5dbdafea928 100644 --- a/provider/datagen/src/transform/icuexport/uprops/script.rs +++ b/provider/bikeshed/src/properties/script.rs @@ -2,7 +2,7 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::DatagenProvider; +use crate::DatagenProvider; use icu::collections::codepointtrie::CodePointTrie; use icu::properties::provider::{ ScriptWithExtensionsPropertyV1, ScriptWithExtensionsPropertyV1Marker, diff --git a/provider/bikeshed/src/properties/uprops_serde.rs b/provider/bikeshed/src/properties/uprops_serde.rs new file mode 100644 index 00000000000..f93e2d1bc7d --- /dev/null +++ b/provider/bikeshed/src/properties/uprops_serde.rs @@ -0,0 +1,136 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +use icu::collections::codepointtrie::toml::CodePointTrieToml; + +pub(crate) mod binary { + #[derive(serde::Deserialize)] + pub(crate) struct BinaryProperty { + #[serde(rename = "long_name")] + pub(crate) _long_name: String, + #[serde(skip)] + #[serde(rename = "short_name")] + pub(crate) _short_name: String, + pub(crate) ranges: Vec<(u32, u32)>, + pub(crate) strings: Option>, + } + + #[derive(serde::Deserialize)] + pub(crate) struct Main { + #[serde(default)] + pub(crate) binary_property: Vec, + } +} + +#[derive(serde::Deserialize)] +pub(crate) struct PropertyValue { + pub(crate) discr: u32, + pub(crate) long: String, + pub(crate) short: Option, + #[serde(default)] + pub(crate) aliases: Vec, +} + +pub(crate) mod enumerated { + #[derive(serde::Deserialize)] + pub(crate) struct EnumeratedPropertyMapRange { + #[serde(rename = "a")] + pub(crate) _a: u32, + #[serde(rename = "b")] + pub(crate) _b: u32, + #[serde(rename = "v")] + pub(crate) _v: u32, + #[serde(rename = "name")] + pub(crate) _name: String, + } + + #[derive(serde::Deserialize)] + pub(crate) struct EnumeratedPropertyMap { + #[serde(rename = "long_name")] + pub(crate) _long_name: String, + #[serde(rename = "short_name")] + pub(crate) _short_name: String, + pub(crate) values: Vec, + #[serde(rename = "ranges")] + pub(crate) _ranges: Vec, + pub(crate) code_point_trie: super::CodePointTrieToml, + } + + #[derive(serde::Deserialize)] + pub(crate) struct Main { + #[serde(default)] + pub(crate) enum_property: Vec, + } +} + +pub(crate) mod code_point_prop { + #[derive(serde::Deserialize)] + pub(crate) struct CodePointPropertyMapRange { + #[serde(rename = "a")] + pub(crate) _a: u32, + #[serde(rename = "b")] + pub(crate) _b: u32, + #[serde(rename = "v")] + pub(crate) _v: u32, + } + + #[derive(serde::Deserialize)] + pub(crate) struct CodePointPropertyMap { + #[serde(rename = "long_name")] + pub(crate) _long_name: String, + #[serde(rename = "short_name")] + pub(crate) _short_name: String, + #[serde(rename = "ranges")] + pub(crate) _ranges: Vec, + #[cfg(any(feature = "use_wasm", feature = "use_icu4c"))] + pub(crate) code_point_trie: super::CodePointTrieToml, + } + + #[derive(serde::Deserialize)] + pub(crate) struct Main { + // TODO: update icuexportdata to print a different TOML header than "enum_property" + #[serde(default)] + #[cfg(any(feature = "use_wasm", feature = "use_icu4c"))] + pub(crate) enum_property: Vec, + } +} + +pub(crate) mod mask { + #[derive(serde::Deserialize)] + pub(crate) struct MaskPropertyMap { + #[serde(rename = "long_name")] + pub(crate) _long_name: String, + #[serde(rename = "short_name")] + pub(crate) _short_name: String, + #[serde(rename = "mask_for")] + pub(crate) _mask_for: String, + pub(crate) values: Vec, + } + + #[derive(serde::Deserialize)] + pub(crate) struct Main { + #[serde(default)] + pub(crate) mask_property: Vec, + } +} + +pub(crate) mod script_extensions { + use super::CodePointTrieToml; + + #[derive(serde::Deserialize)] + pub(crate) struct ScriptWithExtensionsPropertyV1Property { + #[serde(rename = "long_name")] + pub(crate) _long_name: String, + #[serde(rename = "short_name")] + pub(crate) _short_name: String, + pub(crate) script_code_array: Vec>, + pub(crate) code_point_trie: CodePointTrieToml, + } + + #[derive(serde::Deserialize)] + pub(crate) struct Main { + #[serde(default)] + pub(crate) script_extensions: Vec, + } +} diff --git a/provider/datagen/src/transform/cldr/relativetime/mod.rs b/provider/bikeshed/src/relativetime/mod.rs similarity index 97% rename from provider/datagen/src/transform/cldr/relativetime/mod.rs rename to provider/bikeshed/src/relativetime/mod.rs index 2592b0a4414..1b7378ba937 100644 --- a/provider/datagen/src/transform/cldr/relativetime/mod.rs +++ b/provider/bikeshed/src/relativetime/mod.rs @@ -4,17 +4,16 @@ use std::borrow::Borrow; -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::cldr_serde; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use icu::experimental::relativetime::provider::*; use icu_provider::prelude::*; use std::collections::{BTreeMap, HashMap, HashSet}; use std::str::FromStr; use std::sync::OnceLock; -pub(in crate::provider) static MARKER_FILTERS: OnceLock> = - OnceLock::new(); +pub(crate) static MARKER_FILTERS: OnceLock> = OnceLock::new(); fn marker_filters() -> &'static HashMap { MARKER_FILTERS.get_or_init(|| { diff --git a/provider/datagen/src/transform/segmenter/dictionary.rs b/provider/bikeshed/src/segmenter/dictionary.rs similarity index 89% rename from provider/datagen/src/transform/segmenter/dictionary.rs rename to provider/bikeshed/src/segmenter/dictionary.rs index 5e4670ec69f..038f4483e3f 100644 --- a/provider/datagen/src/transform/segmenter/dictionary.rs +++ b/provider/bikeshed/src/segmenter/dictionary.rs @@ -2,10 +2,12 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use icu::locale::langid; -use icu::segmenter::provider::*; +use icu::segmenter::provider::DictionaryForWordLineExtendedV1Marker; +use icu::segmenter::provider::DictionaryForWordOnlyAutoV1Marker; +use icu::segmenter::provider::UCharDictionaryBreakDataV1; use icu_provider::datagen::IterableDataProvider; use icu_provider::prelude::*; use std::collections::HashSet; diff --git a/provider/datagen/src/transform/segmenter/lstm.rs b/provider/bikeshed/src/segmenter/lstm.rs similarity index 96% rename from provider/datagen/src/transform/segmenter/lstm.rs rename to provider/bikeshed/src/segmenter/lstm.rs index 64e27c3fc3c..241d2ea84bd 100644 --- a/provider/datagen/src/transform/segmenter/lstm.rs +++ b/provider/bikeshed/src/segmenter/lstm.rs @@ -4,9 +4,12 @@ //! This module contains provider implementations backed by LSTM segmentation data. -use crate::provider::{DatagenProvider, IterableDataProviderCached}; +use crate::{DatagenProvider, IterableDataProviderCached}; use icu::locale::langid; -use icu::segmenter::provider::*; +use icu::segmenter::provider::{ + LstmDataFloat32, LstmDataV1, LstmForWordLineAutoV1Marker, LstmMatrix1, LstmMatrix2, + LstmMatrix3, ModelType, +}; use icu_provider::datagen::IterableDataProvider; use icu_provider::prelude::*; use ndarray::{Array, Array1, Array2, ArrayBase, Dim, Dimension, OwnedRepr}; @@ -18,9 +21,9 @@ use zerovec::{ule::UnvalidatedStr, ZeroVec}; #[derive(serde::Deserialize, Debug)] struct RawLstmMatrix { #[allow(dead_code)] - pub(in crate::provider) v: i16, - pub(in crate::provider) dim: Vec, - pub(in crate::provider) data: Vec, + pub(crate) v: i16, + pub(crate) dim: Vec, + pub(crate) data: Vec, } impl RawLstmMatrix { @@ -65,7 +68,7 @@ struct RawLstmData { } impl RawLstmData { - pub(in crate::provider) fn try_convert(&self) -> Result, DataError> { + pub(crate) fn try_convert(&self) -> Result, DataError> { let embedding = self.embedding.to_ndarray2()?; let fw_w = self.fw_w.to_ndarray2()?; let fw_u = self.fw_u.to_ndarray2()?; diff --git a/provider/datagen/src/transform/segmenter/mod.rs b/provider/bikeshed/src/segmenter/mod.rs similarity index 93% rename from provider/datagen/src/transform/segmenter/mod.rs rename to provider/bikeshed/src/segmenter/mod.rs index ab390f05b36..ca2d95a1ab8 100644 --- a/provider/datagen/src/transform/segmenter/mod.rs +++ b/provider/bikeshed/src/segmenter/mod.rs @@ -7,7 +7,7 @@ #![allow(dead_code)] #![allow(unused_imports)] -use crate::provider::DatagenProvider; +use crate::DatagenProvider; use icu::collections::codepointtrie; use icu::properties::{ maps, sets, CanonicalCombiningClass, EastAsianWidth, GeneralCategory, GraphemeClusterBreak, @@ -87,7 +87,7 @@ struct SegmenterRuleTable { fn generate_rule_break_data( provider: &DatagenProvider, rules_file: &str, - trie_type: crate::provider::TrieType, + trie_type: crate::TrieType, ) -> RuleBreakDataV1<'static> { let segmenter = provider .icuexport() @@ -540,8 +540,8 @@ fn generate_rule_break_data( default_value: 0, error_value: 0, trie_type: match trie_type { - crate::provider::TrieType::Fast => codepointtrie::TrieType::Fast, - crate::provider::TrieType::Small => codepointtrie::TrieType::Small, + crate::TrieType::Fast => codepointtrie::TrieType::Fast, + crate::TrieType::Small => codepointtrie::TrieType::Small, }, } .build(), @@ -583,7 +583,7 @@ macro_rules! implement { fn load(&self, req: DataRequest) -> Result, DataError> { #[cfg(not(any(feature = "use_wasm", feature = "use_icu4c")))] return Err(DataError::custom( - "icu_datagen must be built with use_icu4c or use_wasm to build segmentation rules", + "icu_datagen_bikeshed must be built with use_icu4c or use_wasm to build segmentation rules", ) .with_req($marker::INFO, req)); #[cfg(any(feature = "use_wasm", feature = "use_icu4c"))] @@ -612,7 +612,7 @@ macro_rules! implement { } fn hardcoded_segmenter_provider() -> DatagenProvider { - use crate::provider::{ + use crate::{ source::{AbstractFs, SerdeCache}, DatagenProvider, }; @@ -626,69 +626,61 @@ fn hardcoded_segmenter_provider() -> DatagenProvider { [ ( "uprops/small/ccc.toml", - include_bytes!("../../../data/segmenter/uprops/small/ccc.toml") - .as_slice(), + include_bytes!("../../data/segmenter/uprops/small/ccc.toml").as_slice(), ), ( "uprops/small/ea.toml", - include_bytes!("../../../data/segmenter/uprops/small/ea.toml") - .as_slice(), + include_bytes!("../../data/segmenter/uprops/small/ea.toml").as_slice(), ), ( "uprops/small/ExtPict.toml", - include_bytes!("../../../data/segmenter/uprops/small/ExtPict.toml") + include_bytes!("../../data/segmenter/uprops/small/ExtPict.toml") .as_slice(), ), ( "uprops/small/gc.toml", - include_bytes!("../../../data/segmenter/uprops/small/gc.toml") - .as_slice(), + include_bytes!("../../data/segmenter/uprops/small/gc.toml").as_slice(), ), ( "uprops/small/GCB.toml", - include_bytes!("../../../data/segmenter/uprops/small/GCB.toml") - .as_slice(), + include_bytes!("../../data/segmenter/uprops/small/GCB.toml").as_slice(), ), ( "uprops/small/InSC.toml", - include_bytes!("../../../data/segmenter/uprops/small/InSC.toml") + include_bytes!("../../data/segmenter/uprops/small/InSC.toml") .as_slice(), ), ( "uprops/small/lb.toml", - include_bytes!("../../../data/segmenter/uprops/small/lb.toml") - .as_slice(), + include_bytes!("../../data/segmenter/uprops/small/lb.toml").as_slice(), ), ( "uprops/small/SB.toml", - include_bytes!("../../../data/segmenter/uprops/small/SB.toml") - .as_slice(), + include_bytes!("../../data/segmenter/uprops/small/SB.toml").as_slice(), ), ( "uprops/small/sc.toml", - include_bytes!("../../../data/segmenter/uprops/small/sc.toml") - .as_slice(), + include_bytes!("../../data/segmenter/uprops/small/sc.toml").as_slice(), ), ( "uprops/small/WB.toml", - include_bytes!("../../../data/segmenter/uprops/small/WB.toml") - .as_slice(), + include_bytes!("../../data/segmenter/uprops/small/WB.toml").as_slice(), ), ( "segmenter/grapheme.toml", - include_bytes!("../../../data/segmenter/grapheme.toml").as_slice(), + include_bytes!("../../data/segmenter/grapheme.toml").as_slice(), ), ( "segmenter/line.toml", - include_bytes!("../../../data/segmenter/line.toml").as_slice(), + include_bytes!("../../data/segmenter/line.toml").as_slice(), ), ( "segmenter/sentence.toml", - include_bytes!("../../../data/segmenter/sentence.toml").as_slice(), + include_bytes!("../../data/segmenter/sentence.toml").as_slice(), ), ( "segmenter/word.toml", - include_bytes!("../../../data/segmenter/word.toml").as_slice(), + include_bytes!("../../data/segmenter/word.toml").as_slice(), ), ] .into_iter() diff --git a/provider/datagen/src/provider/source.rs b/provider/bikeshed/src/source.rs similarity index 97% rename from provider/datagen/src/provider/source.rs rename to provider/bikeshed/src/source.rs index e78d829f31a..86d3eec33ea 100644 --- a/provider/datagen/src/provider/source.rs +++ b/provider/bikeshed/src/source.rs @@ -19,8 +19,8 @@ use std::path::PathBuf; use std::sync::RwLock; use zip::ZipArchive; -pub(super) struct SerdeCache { - pub(super) root: AbstractFs, +pub(crate) struct SerdeCache { + pub(crate) root: AbstractFs, cache: FrozenMap>, } @@ -92,12 +92,12 @@ impl SerdeCache { } } -pub(super) struct ZipData { +pub(crate) struct ZipData { archive: ZipArchive>>, file_list: HashSet, } -pub(super) enum AbstractFs { +pub(crate) enum AbstractFs { Fs(PathBuf), Zip(RwLock>), Memory(BTreeMap<&'static str, &'static [u8]>), @@ -209,7 +209,7 @@ impl AbstractFs { } #[allow(dead_code)] - pub(super) fn read_to_string(&self, path: &str) -> Result { + pub(crate) fn read_to_string(&self, path: &str) -> Result { let vec = self.read_to_buf(path)?; let s = String::from_utf8(vec) .map_err(|e| DataError::custom("Invalid UTF-8").with_display_context(&e))?; diff --git a/provider/bikeshed/src/tests/data.rs b/provider/bikeshed/src/tests/data.rs new file mode 100644 index 00000000000..73ad6584268 --- /dev/null +++ b/provider/bikeshed/src/tests/data.rs @@ -0,0 +1,697 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +//! Generated by `download-repo-sources.rs` + +use crate::{AbstractFs, CldrCache, DatagenProvider, SerdeCache}; +use std::sync::{Arc, OnceLock}; +impl DatagenProvider { + // This is equivalent to `new_latest_tested` for the files defined in `tools/testdata-scripts/globs.rs.data`. + pub fn new_testing() -> Self { + // Singleton so that all instantiations share the same cache. + static SINGLETON: OnceLock = OnceLock::new(); + SINGLETON + .get_or_init(|| Self { + cldr_paths: Some(Arc::new(CldrCache::from_serde_cache(SerdeCache::new(AbstractFs::Memory( + [ + ("cldr-bcp47/bcp47/timezone.json", include_bytes!("../../tests/data/cldr/cldr-bcp47/bcp47/timezone.json").as_slice()), + ("cldr-cal-buddhist-full/main/ar/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/ar/ca-buddhist.json").as_slice()), + ("cldr-cal-buddhist-full/main/ar-EG/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/ar-EG/ca-buddhist.json").as_slice()), + ("cldr-cal-buddhist-full/main/bn/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/bn/ca-buddhist.json").as_slice()), + ("cldr-cal-buddhist-full/main/ccp/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/ccp/ca-buddhist.json").as_slice()), + ("cldr-cal-buddhist-full/main/en/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/en/ca-buddhist.json").as_slice()), + ("cldr-cal-buddhist-full/main/en-001/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/en-001/ca-buddhist.json").as_slice()), + ("cldr-cal-buddhist-full/main/en-ZA/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/en-ZA/ca-buddhist.json").as_slice()), + ("cldr-cal-buddhist-full/main/es/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/es/ca-buddhist.json").as_slice()), + ("cldr-cal-buddhist-full/main/es-AR/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/es-AR/ca-buddhist.json").as_slice()), + ("cldr-cal-buddhist-full/main/fr/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/fr/ca-buddhist.json").as_slice()), + ("cldr-cal-buddhist-full/main/fil/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/fil/ca-buddhist.json").as_slice()), + ("cldr-cal-buddhist-full/main/ja/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/ja/ca-buddhist.json").as_slice()), + ("cldr-cal-buddhist-full/main/ru/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/ru/ca-buddhist.json").as_slice()), + ("cldr-cal-buddhist-full/main/sr/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/sr/ca-buddhist.json").as_slice()), + ("cldr-cal-buddhist-full/main/sr-Latn/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/sr-Latn/ca-buddhist.json").as_slice()), + ("cldr-cal-buddhist-full/main/th/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/th/ca-buddhist.json").as_slice()), + ("cldr-cal-buddhist-full/main/tr/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/tr/ca-buddhist.json").as_slice()), + ("cldr-cal-buddhist-full/main/und/ca-buddhist.json", include_bytes!("../../tests/data/cldr/cldr-cal-buddhist-full/main/und/ca-buddhist.json").as_slice()), + ("cldr-cal-chinese-full/main/ar/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/ar/ca-chinese.json").as_slice()), + ("cldr-cal-chinese-full/main/ar-EG/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/ar-EG/ca-chinese.json").as_slice()), + ("cldr-cal-chinese-full/main/bn/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/bn/ca-chinese.json").as_slice()), + ("cldr-cal-chinese-full/main/ccp/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/ccp/ca-chinese.json").as_slice()), + ("cldr-cal-chinese-full/main/en/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/en/ca-chinese.json").as_slice()), + ("cldr-cal-chinese-full/main/en-001/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/en-001/ca-chinese.json").as_slice()), + ("cldr-cal-chinese-full/main/en-ZA/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/en-ZA/ca-chinese.json").as_slice()), + ("cldr-cal-chinese-full/main/es/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/es/ca-chinese.json").as_slice()), + ("cldr-cal-chinese-full/main/es-AR/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/es-AR/ca-chinese.json").as_slice()), + ("cldr-cal-chinese-full/main/fr/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/fr/ca-chinese.json").as_slice()), + ("cldr-cal-chinese-full/main/fil/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/fil/ca-chinese.json").as_slice()), + ("cldr-cal-chinese-full/main/ja/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/ja/ca-chinese.json").as_slice()), + ("cldr-cal-chinese-full/main/ru/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/ru/ca-chinese.json").as_slice()), + ("cldr-cal-chinese-full/main/sr/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/sr/ca-chinese.json").as_slice()), + ("cldr-cal-chinese-full/main/sr-Latn/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/sr-Latn/ca-chinese.json").as_slice()), + ("cldr-cal-chinese-full/main/th/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/th/ca-chinese.json").as_slice()), + ("cldr-cal-chinese-full/main/tr/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/tr/ca-chinese.json").as_slice()), + ("cldr-cal-chinese-full/main/und/ca-chinese.json", include_bytes!("../../tests/data/cldr/cldr-cal-chinese-full/main/und/ca-chinese.json").as_slice()), + ("cldr-cal-coptic-full/main/ar/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/ar/ca-coptic.json").as_slice()), + ("cldr-cal-coptic-full/main/ar-EG/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/ar-EG/ca-coptic.json").as_slice()), + ("cldr-cal-coptic-full/main/bn/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/bn/ca-coptic.json").as_slice()), + ("cldr-cal-coptic-full/main/ccp/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/ccp/ca-coptic.json").as_slice()), + ("cldr-cal-coptic-full/main/en/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/en/ca-coptic.json").as_slice()), + ("cldr-cal-coptic-full/main/en-001/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/en-001/ca-coptic.json").as_slice()), + ("cldr-cal-coptic-full/main/en-ZA/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/en-ZA/ca-coptic.json").as_slice()), + ("cldr-cal-coptic-full/main/es/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/es/ca-coptic.json").as_slice()), + ("cldr-cal-coptic-full/main/es-AR/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/es-AR/ca-coptic.json").as_slice()), + ("cldr-cal-coptic-full/main/fr/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/fr/ca-coptic.json").as_slice()), + ("cldr-cal-coptic-full/main/fil/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/fil/ca-coptic.json").as_slice()), + ("cldr-cal-coptic-full/main/ja/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/ja/ca-coptic.json").as_slice()), + ("cldr-cal-coptic-full/main/ru/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/ru/ca-coptic.json").as_slice()), + ("cldr-cal-coptic-full/main/sr/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/sr/ca-coptic.json").as_slice()), + ("cldr-cal-coptic-full/main/sr-Latn/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/sr-Latn/ca-coptic.json").as_slice()), + ("cldr-cal-coptic-full/main/th/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/th/ca-coptic.json").as_slice()), + ("cldr-cal-coptic-full/main/tr/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/tr/ca-coptic.json").as_slice()), + ("cldr-cal-coptic-full/main/und/ca-coptic.json", include_bytes!("../../tests/data/cldr/cldr-cal-coptic-full/main/und/ca-coptic.json").as_slice()), + ("cldr-cal-dangi-full/main/ar/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/ar/ca-dangi.json").as_slice()), + ("cldr-cal-dangi-full/main/ar-EG/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/ar-EG/ca-dangi.json").as_slice()), + ("cldr-cal-dangi-full/main/bn/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/bn/ca-dangi.json").as_slice()), + ("cldr-cal-dangi-full/main/ccp/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/ccp/ca-dangi.json").as_slice()), + ("cldr-cal-dangi-full/main/en/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/en/ca-dangi.json").as_slice()), + ("cldr-cal-dangi-full/main/en-001/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/en-001/ca-dangi.json").as_slice()), + ("cldr-cal-dangi-full/main/en-ZA/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/en-ZA/ca-dangi.json").as_slice()), + ("cldr-cal-dangi-full/main/es/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/es/ca-dangi.json").as_slice()), + ("cldr-cal-dangi-full/main/es-AR/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/es-AR/ca-dangi.json").as_slice()), + ("cldr-cal-dangi-full/main/fr/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/fr/ca-dangi.json").as_slice()), + ("cldr-cal-dangi-full/main/fil/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/fil/ca-dangi.json").as_slice()), + ("cldr-cal-dangi-full/main/ja/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/ja/ca-dangi.json").as_slice()), + ("cldr-cal-dangi-full/main/ru/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/ru/ca-dangi.json").as_slice()), + ("cldr-cal-dangi-full/main/sr/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/sr/ca-dangi.json").as_slice()), + ("cldr-cal-dangi-full/main/sr-Latn/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/sr-Latn/ca-dangi.json").as_slice()), + ("cldr-cal-dangi-full/main/th/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/th/ca-dangi.json").as_slice()), + ("cldr-cal-dangi-full/main/tr/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/tr/ca-dangi.json").as_slice()), + ("cldr-cal-dangi-full/main/und/ca-dangi.json", include_bytes!("../../tests/data/cldr/cldr-cal-dangi-full/main/und/ca-dangi.json").as_slice()), + ("cldr-cal-ethiopic-full/main/ar/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/ar/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/ar-EG/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/ar-EG/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/bn/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/bn/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/ccp/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/ccp/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/en/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/en/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/en-001/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/en-001/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/en-ZA/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/en-ZA/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/es/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/es/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/es-AR/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/es-AR/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/fr/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/fr/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/fil/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/fil/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/ja/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/ja/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/ru/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/ru/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/sr/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/sr/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/sr-Latn/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/sr-Latn/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/th/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/th/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/tr/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/tr/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/und/ca-ethiopic-amete-alem.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/und/ca-ethiopic-amete-alem.json").as_slice()), + ("cldr-cal-ethiopic-full/main/ar/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/ar/ca-ethiopic.json").as_slice()), + ("cldr-cal-ethiopic-full/main/ar-EG/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/ar-EG/ca-ethiopic.json").as_slice()), + ("cldr-cal-ethiopic-full/main/bn/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/bn/ca-ethiopic.json").as_slice()), + ("cldr-cal-ethiopic-full/main/ccp/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/ccp/ca-ethiopic.json").as_slice()), + ("cldr-cal-ethiopic-full/main/en/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/en/ca-ethiopic.json").as_slice()), + ("cldr-cal-ethiopic-full/main/en-001/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/en-001/ca-ethiopic.json").as_slice()), + ("cldr-cal-ethiopic-full/main/en-ZA/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/en-ZA/ca-ethiopic.json").as_slice()), + ("cldr-cal-ethiopic-full/main/es/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/es/ca-ethiopic.json").as_slice()), + ("cldr-cal-ethiopic-full/main/es-AR/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/es-AR/ca-ethiopic.json").as_slice()), + ("cldr-cal-ethiopic-full/main/fr/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/fr/ca-ethiopic.json").as_slice()), + ("cldr-cal-ethiopic-full/main/fil/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/fil/ca-ethiopic.json").as_slice()), + ("cldr-cal-ethiopic-full/main/ja/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/ja/ca-ethiopic.json").as_slice()), + ("cldr-cal-ethiopic-full/main/ru/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/ru/ca-ethiopic.json").as_slice()), + ("cldr-cal-ethiopic-full/main/sr/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/sr/ca-ethiopic.json").as_slice()), + ("cldr-cal-ethiopic-full/main/sr-Latn/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/sr-Latn/ca-ethiopic.json").as_slice()), + ("cldr-cal-ethiopic-full/main/th/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/th/ca-ethiopic.json").as_slice()), + ("cldr-cal-ethiopic-full/main/tr/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/tr/ca-ethiopic.json").as_slice()), + ("cldr-cal-ethiopic-full/main/und/ca-ethiopic.json", include_bytes!("../../tests/data/cldr/cldr-cal-ethiopic-full/main/und/ca-ethiopic.json").as_slice()), + ("cldr-cal-indian-full/main/ar/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/ar/ca-indian.json").as_slice()), + ("cldr-cal-indian-full/main/ar-EG/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/ar-EG/ca-indian.json").as_slice()), + ("cldr-cal-indian-full/main/bn/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/bn/ca-indian.json").as_slice()), + ("cldr-cal-indian-full/main/ccp/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/ccp/ca-indian.json").as_slice()), + ("cldr-cal-indian-full/main/en/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/en/ca-indian.json").as_slice()), + ("cldr-cal-indian-full/main/en-001/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/en-001/ca-indian.json").as_slice()), + ("cldr-cal-indian-full/main/en-ZA/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/en-ZA/ca-indian.json").as_slice()), + ("cldr-cal-indian-full/main/es/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/es/ca-indian.json").as_slice()), + ("cldr-cal-indian-full/main/es-AR/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/es-AR/ca-indian.json").as_slice()), + ("cldr-cal-indian-full/main/fr/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/fr/ca-indian.json").as_slice()), + ("cldr-cal-indian-full/main/fil/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/fil/ca-indian.json").as_slice()), + ("cldr-cal-indian-full/main/ja/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/ja/ca-indian.json").as_slice()), + ("cldr-cal-indian-full/main/ru/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/ru/ca-indian.json").as_slice()), + ("cldr-cal-indian-full/main/sr/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/sr/ca-indian.json").as_slice()), + ("cldr-cal-indian-full/main/sr-Latn/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/sr-Latn/ca-indian.json").as_slice()), + ("cldr-cal-indian-full/main/th/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/th/ca-indian.json").as_slice()), + ("cldr-cal-indian-full/main/tr/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/tr/ca-indian.json").as_slice()), + ("cldr-cal-indian-full/main/und/ca-indian.json", include_bytes!("../../tests/data/cldr/cldr-cal-indian-full/main/und/ca-indian.json").as_slice()), + ("cldr-cal-japanese-full/main/ar/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/ar/ca-japanese.json").as_slice()), + ("cldr-cal-japanese-full/main/ar-EG/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/ar-EG/ca-japanese.json").as_slice()), + ("cldr-cal-japanese-full/main/bn/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/bn/ca-japanese.json").as_slice()), + ("cldr-cal-japanese-full/main/ccp/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/ccp/ca-japanese.json").as_slice()), + ("cldr-cal-japanese-full/main/en/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/en/ca-japanese.json").as_slice()), + ("cldr-cal-japanese-full/main/en-001/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/en-001/ca-japanese.json").as_slice()), + ("cldr-cal-japanese-full/main/en-ZA/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/en-ZA/ca-japanese.json").as_slice()), + ("cldr-cal-japanese-full/main/es/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/es/ca-japanese.json").as_slice()), + ("cldr-cal-japanese-full/main/es-AR/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/es-AR/ca-japanese.json").as_slice()), + ("cldr-cal-japanese-full/main/fr/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/fr/ca-japanese.json").as_slice()), + ("cldr-cal-japanese-full/main/fil/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/fil/ca-japanese.json").as_slice()), + ("cldr-cal-japanese-full/main/ja/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/ja/ca-japanese.json").as_slice()), + ("cldr-cal-japanese-full/main/ru/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/ru/ca-japanese.json").as_slice()), + ("cldr-cal-japanese-full/main/sr/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/sr/ca-japanese.json").as_slice()), + ("cldr-cal-japanese-full/main/sr-Latn/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/sr-Latn/ca-japanese.json").as_slice()), + ("cldr-cal-japanese-full/main/th/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/th/ca-japanese.json").as_slice()), + ("cldr-cal-japanese-full/main/tr/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/tr/ca-japanese.json").as_slice()), + ("cldr-cal-japanese-full/main/und/ca-japanese.json", include_bytes!("../../tests/data/cldr/cldr-cal-japanese-full/main/und/ca-japanese.json").as_slice()), + ("cldr-cal-persian-full/main/ar/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/ar/ca-persian.json").as_slice()), + ("cldr-cal-persian-full/main/ar-EG/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/ar-EG/ca-persian.json").as_slice()), + ("cldr-cal-persian-full/main/bn/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/bn/ca-persian.json").as_slice()), + ("cldr-cal-persian-full/main/ccp/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/ccp/ca-persian.json").as_slice()), + ("cldr-cal-persian-full/main/en/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/en/ca-persian.json").as_slice()), + ("cldr-cal-persian-full/main/en-001/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/en-001/ca-persian.json").as_slice()), + ("cldr-cal-persian-full/main/en-ZA/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/en-ZA/ca-persian.json").as_slice()), + ("cldr-cal-persian-full/main/es/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/es/ca-persian.json").as_slice()), + ("cldr-cal-persian-full/main/es-AR/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/es-AR/ca-persian.json").as_slice()), + ("cldr-cal-persian-full/main/fr/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/fr/ca-persian.json").as_slice()), + ("cldr-cal-persian-full/main/fil/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/fil/ca-persian.json").as_slice()), + ("cldr-cal-persian-full/main/ja/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/ja/ca-persian.json").as_slice()), + ("cldr-cal-persian-full/main/ru/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/ru/ca-persian.json").as_slice()), + ("cldr-cal-persian-full/main/sr/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/sr/ca-persian.json").as_slice()), + ("cldr-cal-persian-full/main/sr-Latn/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/sr-Latn/ca-persian.json").as_slice()), + ("cldr-cal-persian-full/main/th/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/th/ca-persian.json").as_slice()), + ("cldr-cal-persian-full/main/tr/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/tr/ca-persian.json").as_slice()), + ("cldr-cal-persian-full/main/und/ca-persian.json", include_bytes!("../../tests/data/cldr/cldr-cal-persian-full/main/und/ca-persian.json").as_slice()), + ("cldr-cal-hebrew-full/main/ar/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/ar/ca-hebrew.json").as_slice()), + ("cldr-cal-hebrew-full/main/ar-EG/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/ar-EG/ca-hebrew.json").as_slice()), + ("cldr-cal-hebrew-full/main/bn/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/bn/ca-hebrew.json").as_slice()), + ("cldr-cal-hebrew-full/main/ccp/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/ccp/ca-hebrew.json").as_slice()), + ("cldr-cal-hebrew-full/main/en/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/en/ca-hebrew.json").as_slice()), + ("cldr-cal-hebrew-full/main/en-001/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/en-001/ca-hebrew.json").as_slice()), + ("cldr-cal-hebrew-full/main/en-ZA/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/en-ZA/ca-hebrew.json").as_slice()), + ("cldr-cal-hebrew-full/main/es/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/es/ca-hebrew.json").as_slice()), + ("cldr-cal-hebrew-full/main/es-AR/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/es-AR/ca-hebrew.json").as_slice()), + ("cldr-cal-hebrew-full/main/fr/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/fr/ca-hebrew.json").as_slice()), + ("cldr-cal-hebrew-full/main/fil/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/fil/ca-hebrew.json").as_slice()), + ("cldr-cal-hebrew-full/main/ja/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/ja/ca-hebrew.json").as_slice()), + ("cldr-cal-hebrew-full/main/ru/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/ru/ca-hebrew.json").as_slice()), + ("cldr-cal-hebrew-full/main/sr/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/sr/ca-hebrew.json").as_slice()), + ("cldr-cal-hebrew-full/main/sr-Latn/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/sr-Latn/ca-hebrew.json").as_slice()), + ("cldr-cal-hebrew-full/main/th/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/th/ca-hebrew.json").as_slice()), + ("cldr-cal-hebrew-full/main/tr/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/tr/ca-hebrew.json").as_slice()), + ("cldr-cal-hebrew-full/main/und/ca-hebrew.json", include_bytes!("../../tests/data/cldr/cldr-cal-hebrew-full/main/und/ca-hebrew.json").as_slice()), + ("cldr-cal-islamic-full/main/ar/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/ar/ca-islamic.json").as_slice()), + ("cldr-cal-islamic-full/main/ar-EG/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/ar-EG/ca-islamic.json").as_slice()), + ("cldr-cal-islamic-full/main/bn/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/bn/ca-islamic.json").as_slice()), + ("cldr-cal-islamic-full/main/ccp/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/ccp/ca-islamic.json").as_slice()), + ("cldr-cal-islamic-full/main/en/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/en/ca-islamic.json").as_slice()), + ("cldr-cal-islamic-full/main/en-001/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/en-001/ca-islamic.json").as_slice()), + ("cldr-cal-islamic-full/main/en-ZA/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/en-ZA/ca-islamic.json").as_slice()), + ("cldr-cal-islamic-full/main/es/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/es/ca-islamic.json").as_slice()), + ("cldr-cal-islamic-full/main/es-AR/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/es-AR/ca-islamic.json").as_slice()), + ("cldr-cal-islamic-full/main/fr/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/fr/ca-islamic.json").as_slice()), + ("cldr-cal-islamic-full/main/fil/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/fil/ca-islamic.json").as_slice()), + ("cldr-cal-islamic-full/main/ja/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/ja/ca-islamic.json").as_slice()), + ("cldr-cal-islamic-full/main/ru/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/ru/ca-islamic.json").as_slice()), + ("cldr-cal-islamic-full/main/sr/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/sr/ca-islamic.json").as_slice()), + ("cldr-cal-islamic-full/main/sr-Latn/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/sr-Latn/ca-islamic.json").as_slice()), + ("cldr-cal-islamic-full/main/th/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/th/ca-islamic.json").as_slice()), + ("cldr-cal-islamic-full/main/tr/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/tr/ca-islamic.json").as_slice()), + ("cldr-cal-islamic-full/main/und/ca-islamic.json", include_bytes!("../../tests/data/cldr/cldr-cal-islamic-full/main/und/ca-islamic.json").as_slice()), + ("cldr-cal-roc-full/main/ar/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/ar/ca-roc.json").as_slice()), + ("cldr-cal-roc-full/main/ar-EG/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/ar-EG/ca-roc.json").as_slice()), + ("cldr-cal-roc-full/main/bn/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/bn/ca-roc.json").as_slice()), + ("cldr-cal-roc-full/main/ccp/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/ccp/ca-roc.json").as_slice()), + ("cldr-cal-roc-full/main/en/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/en/ca-roc.json").as_slice()), + ("cldr-cal-roc-full/main/en-001/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/en-001/ca-roc.json").as_slice()), + ("cldr-cal-roc-full/main/en-ZA/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/en-ZA/ca-roc.json").as_slice()), + ("cldr-cal-roc-full/main/es/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/es/ca-roc.json").as_slice()), + ("cldr-cal-roc-full/main/es-AR/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/es-AR/ca-roc.json").as_slice()), + ("cldr-cal-roc-full/main/fr/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/fr/ca-roc.json").as_slice()), + ("cldr-cal-roc-full/main/fil/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/fil/ca-roc.json").as_slice()), + ("cldr-cal-roc-full/main/ja/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/ja/ca-roc.json").as_slice()), + ("cldr-cal-roc-full/main/ru/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/ru/ca-roc.json").as_slice()), + ("cldr-cal-roc-full/main/sr/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/sr/ca-roc.json").as_slice()), + ("cldr-cal-roc-full/main/sr-Latn/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/sr-Latn/ca-roc.json").as_slice()), + ("cldr-cal-roc-full/main/th/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/th/ca-roc.json").as_slice()), + ("cldr-cal-roc-full/main/tr/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/tr/ca-roc.json").as_slice()), + ("cldr-cal-roc-full/main/und/ca-roc.json", include_bytes!("../../tests/data/cldr/cldr-cal-roc-full/main/und/ca-roc.json").as_slice()), + ("cldr-core/coverageLevels.json", include_bytes!("../../tests/data/cldr/cldr-core/coverageLevels.json").as_slice()), + ("cldr-core/scriptMetadata.json", include_bytes!("../../tests/data/cldr/cldr-core/scriptMetadata.json").as_slice()), + ("cldr-core/supplemental/aliases.json", include_bytes!("../../tests/data/cldr/cldr-core/supplemental/aliases.json").as_slice()), + ("cldr-core/supplemental/calendarData.json", include_bytes!("../../tests/data/cldr/cldr-core/supplemental/calendarData.json").as_slice()), + ("cldr-core/supplemental/currencyData.json", include_bytes!("../../tests/data/cldr/cldr-core/supplemental/currencyData.json").as_slice()), + ("cldr-core/supplemental/units.json", include_bytes!("../../tests/data/cldr/cldr-core/supplemental/units.json").as_slice()), + ("cldr-core/supplemental/likelySubtags.json", include_bytes!("../../tests/data/cldr/cldr-core/supplemental/likelySubtags.json").as_slice()), + ("cldr-core/supplemental/metaZones.json", include_bytes!("../../tests/data/cldr/cldr-core/supplemental/metaZones.json").as_slice()), + ("cldr-core/supplemental/numberingSystems.json", include_bytes!("../../tests/data/cldr/cldr-core/supplemental/numberingSystems.json").as_slice()), + ("cldr-core/supplemental/ordinals.json", include_bytes!("../../tests/data/cldr/cldr-core/supplemental/ordinals.json").as_slice()), + ("cldr-core/supplemental/parentLocales.json", include_bytes!("../../tests/data/cldr/cldr-core/supplemental/parentLocales.json").as_slice()), + ("cldr-core/supplemental/pluralRanges.json", include_bytes!("../../tests/data/cldr/cldr-core/supplemental/pluralRanges.json").as_slice()), + ("cldr-core/supplemental/plurals.json", include_bytes!("../../tests/data/cldr/cldr-core/supplemental/plurals.json").as_slice()), + ("cldr-core/supplemental/weekData.json", include_bytes!("../../tests/data/cldr/cldr-core/supplemental/weekData.json").as_slice()), + ("cldr-dates-full/main/ar/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ar/ca-generic.json").as_slice()), + ("cldr-dates-full/main/ar-EG/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ar-EG/ca-generic.json").as_slice()), + ("cldr-dates-full/main/bn/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/bn/ca-generic.json").as_slice()), + ("cldr-dates-full/main/ccp/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ccp/ca-generic.json").as_slice()), + ("cldr-dates-full/main/en/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/en/ca-generic.json").as_slice()), + ("cldr-dates-full/main/en-001/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/en-001/ca-generic.json").as_slice()), + ("cldr-dates-full/main/en-ZA/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/en-ZA/ca-generic.json").as_slice()), + ("cldr-dates-full/main/es/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/es/ca-generic.json").as_slice()), + ("cldr-dates-full/main/es-AR/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/es-AR/ca-generic.json").as_slice()), + ("cldr-dates-full/main/fr/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/fr/ca-generic.json").as_slice()), + ("cldr-dates-full/main/fil/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/fil/ca-generic.json").as_slice()), + ("cldr-dates-full/main/ja/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ja/ca-generic.json").as_slice()), + ("cldr-dates-full/main/ru/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ru/ca-generic.json").as_slice()), + ("cldr-dates-full/main/sr/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/sr/ca-generic.json").as_slice()), + ("cldr-dates-full/main/sr-Latn/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/sr-Latn/ca-generic.json").as_slice()), + ("cldr-dates-full/main/th/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/th/ca-generic.json").as_slice()), + ("cldr-dates-full/main/tr/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/tr/ca-generic.json").as_slice()), + ("cldr-dates-full/main/und/ca-generic.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/und/ca-generic.json").as_slice()), + ("cldr-dates-full/main/ar/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ar/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/ar-EG/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ar-EG/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/bn/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/bn/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/ccp/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ccp/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/en/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/en/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/en-001/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/en-001/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/en-ZA/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/en-ZA/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/es/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/es/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/es-AR/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/es-AR/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/fr/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/fr/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/fil/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/fil/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/ja/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ja/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/ru/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ru/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/sr/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/sr/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/sr-Latn/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/sr-Latn/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/th/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/th/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/tr/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/tr/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/und/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/und/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/ar/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ar/dateFields.json").as_slice()), + ("cldr-dates-full/main/ar-EG/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ar-EG/dateFields.json").as_slice()), + ("cldr-dates-full/main/bn/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/bn/dateFields.json").as_slice()), + ("cldr-dates-full/main/ccp/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ccp/dateFields.json").as_slice()), + ("cldr-dates-full/main/en/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/en/dateFields.json").as_slice()), + ("cldr-dates-full/main/en-001/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/en-001/dateFields.json").as_slice()), + ("cldr-dates-full/main/en-ZA/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/en-ZA/dateFields.json").as_slice()), + ("cldr-dates-full/main/es/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/es/dateFields.json").as_slice()), + ("cldr-dates-full/main/es-AR/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/es-AR/dateFields.json").as_slice()), + ("cldr-dates-full/main/fr/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/fr/dateFields.json").as_slice()), + ("cldr-dates-full/main/fil/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/fil/dateFields.json").as_slice()), + ("cldr-dates-full/main/ja/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ja/dateFields.json").as_slice()), + ("cldr-dates-full/main/ru/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ru/dateFields.json").as_slice()), + ("cldr-dates-full/main/sr/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/sr/dateFields.json").as_slice()), + ("cldr-dates-full/main/sr-Latn/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/sr-Latn/dateFields.json").as_slice()), + ("cldr-dates-full/main/th/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/th/dateFields.json").as_slice()), + ("cldr-dates-full/main/tr/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/tr/dateFields.json").as_slice()), + ("cldr-dates-full/main/und/dateFields.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/und/dateFields.json").as_slice()), + ("cldr-dates-full/main/ar/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ar/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/ar-EG/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ar-EG/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/bn/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/bn/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/ccp/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ccp/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/en/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/en/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/en-001/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/en-001/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/en-ZA/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/en-ZA/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/es/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/es/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/es-AR/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/es-AR/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/fr/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/fr/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/fil/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/fil/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/ja/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ja/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/ru/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/ru/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/sr/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/sr/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/sr-Latn/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/sr-Latn/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/th/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/th/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/tr/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/tr/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/und/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/und/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/cs/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/cs/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/cs/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/cs/timeZoneNames.json").as_slice()), + ("cldr-dates-full/main/haw/ca-gregorian.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/haw/ca-gregorian.json").as_slice()), + ("cldr-dates-full/main/haw/timeZoneNames.json", include_bytes!("../../tests/data/cldr/cldr-dates-full/main/haw/timeZoneNames.json").as_slice()), + ("cldr-localenames-full/main/ar/languages.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ar/languages.json").as_slice()), + ("cldr-localenames-full/main/ar-EG/languages.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ar-EG/languages.json").as_slice()), + ("cldr-localenames-full/main/bn/languages.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/bn/languages.json").as_slice()), + ("cldr-localenames-full/main/ccp/languages.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ccp/languages.json").as_slice()), + ("cldr-localenames-full/main/en/languages.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/en/languages.json").as_slice()), + ("cldr-localenames-full/main/en-001/languages.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/en-001/languages.json").as_slice()), + ("cldr-localenames-full/main/en-ZA/languages.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/en-ZA/languages.json").as_slice()), + ("cldr-localenames-full/main/es/languages.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/es/languages.json").as_slice()), + ("cldr-localenames-full/main/es-AR/languages.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/es-AR/languages.json").as_slice()), + ("cldr-localenames-full/main/fr/languages.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/fr/languages.json").as_slice()), + ("cldr-localenames-full/main/fil/languages.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/fil/languages.json").as_slice()), + ("cldr-localenames-full/main/ja/languages.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ja/languages.json").as_slice()), + ("cldr-localenames-full/main/ru/languages.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ru/languages.json").as_slice()), + ("cldr-localenames-full/main/sr/languages.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/sr/languages.json").as_slice()), + ("cldr-localenames-full/main/sr-Latn/languages.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/sr-Latn/languages.json").as_slice()), + ("cldr-localenames-full/main/th/languages.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/th/languages.json").as_slice()), + ("cldr-localenames-full/main/tr/languages.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/tr/languages.json").as_slice()), + ("cldr-localenames-full/main/ar/scripts.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ar/scripts.json").as_slice()), + ("cldr-localenames-full/main/ar-EG/scripts.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ar-EG/scripts.json").as_slice()), + ("cldr-localenames-full/main/bn/scripts.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/bn/scripts.json").as_slice()), + ("cldr-localenames-full/main/ccp/scripts.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ccp/scripts.json").as_slice()), + ("cldr-localenames-full/main/en/scripts.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/en/scripts.json").as_slice()), + ("cldr-localenames-full/main/en-001/scripts.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/en-001/scripts.json").as_slice()), + ("cldr-localenames-full/main/en-ZA/scripts.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/en-ZA/scripts.json").as_slice()), + ("cldr-localenames-full/main/es/scripts.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/es/scripts.json").as_slice()), + ("cldr-localenames-full/main/es-AR/scripts.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/es-AR/scripts.json").as_slice()), + ("cldr-localenames-full/main/fr/scripts.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/fr/scripts.json").as_slice()), + ("cldr-localenames-full/main/fil/scripts.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/fil/scripts.json").as_slice()), + ("cldr-localenames-full/main/ja/scripts.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ja/scripts.json").as_slice()), + ("cldr-localenames-full/main/ru/scripts.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ru/scripts.json").as_slice()), + ("cldr-localenames-full/main/sr/scripts.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/sr/scripts.json").as_slice()), + ("cldr-localenames-full/main/sr-Latn/scripts.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/sr-Latn/scripts.json").as_slice()), + ("cldr-localenames-full/main/th/scripts.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/th/scripts.json").as_slice()), + ("cldr-localenames-full/main/tr/scripts.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/tr/scripts.json").as_slice()), + ("cldr-localenames-full/main/ar/territories.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ar/territories.json").as_slice()), + ("cldr-localenames-full/main/ar-EG/territories.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ar-EG/territories.json").as_slice()), + ("cldr-localenames-full/main/bn/territories.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/bn/territories.json").as_slice()), + ("cldr-localenames-full/main/ccp/territories.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ccp/territories.json").as_slice()), + ("cldr-localenames-full/main/en/territories.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/en/territories.json").as_slice()), + ("cldr-localenames-full/main/en-001/territories.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/en-001/territories.json").as_slice()), + ("cldr-localenames-full/main/en-ZA/territories.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/en-ZA/territories.json").as_slice()), + ("cldr-localenames-full/main/es/territories.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/es/territories.json").as_slice()), + ("cldr-localenames-full/main/es-AR/territories.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/es-AR/territories.json").as_slice()), + ("cldr-localenames-full/main/fr/territories.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/fr/territories.json").as_slice()), + ("cldr-localenames-full/main/fil/territories.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/fil/territories.json").as_slice()), + ("cldr-localenames-full/main/ja/territories.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ja/territories.json").as_slice()), + ("cldr-localenames-full/main/ru/territories.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ru/territories.json").as_slice()), + ("cldr-localenames-full/main/sr/territories.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/sr/territories.json").as_slice()), + ("cldr-localenames-full/main/sr-Latn/territories.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/sr-Latn/territories.json").as_slice()), + ("cldr-localenames-full/main/th/territories.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/th/territories.json").as_slice()), + ("cldr-localenames-full/main/tr/territories.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/tr/territories.json").as_slice()), + ("cldr-localenames-full/main/ar/variants.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ar/variants.json").as_slice()), + ("cldr-localenames-full/main/ar-EG/variants.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ar-EG/variants.json").as_slice()), + ("cldr-localenames-full/main/en/variants.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/en/variants.json").as_slice()), + ("cldr-localenames-full/main/en-001/variants.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/en-001/variants.json").as_slice()), + ("cldr-localenames-full/main/en-ZA/variants.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/en-ZA/variants.json").as_slice()), + ("cldr-localenames-full/main/es/variants.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/es/variants.json").as_slice()), + ("cldr-localenames-full/main/es-AR/variants.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/es-AR/variants.json").as_slice()), + ("cldr-localenames-full/main/fr/variants.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/fr/variants.json").as_slice()), + ("cldr-localenames-full/main/fil/variants.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/fil/variants.json").as_slice()), + ("cldr-localenames-full/main/ja/variants.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ja/variants.json").as_slice()), + ("cldr-localenames-full/main/ru/variants.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/ru/variants.json").as_slice()), + ("cldr-localenames-full/main/sr/variants.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/sr/variants.json").as_slice()), + ("cldr-localenames-full/main/sr-Latn/variants.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/sr-Latn/variants.json").as_slice()), + ("cldr-localenames-full/main/th/variants.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/th/variants.json").as_slice()), + ("cldr-localenames-full/main/tr/variants.json", include_bytes!("../../tests/data/cldr/cldr-localenames-full/main/tr/variants.json").as_slice()), + ("cldr-misc-full/main/ar/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/ar/characters.json").as_slice()), + ("cldr-misc-full/main/ar-EG/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/ar-EG/characters.json").as_slice()), + ("cldr-misc-full/main/bn/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/bn/characters.json").as_slice()), + ("cldr-misc-full/main/ccp/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/ccp/characters.json").as_slice()), + ("cldr-misc-full/main/en/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/en/characters.json").as_slice()), + ("cldr-misc-full/main/en-001/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/en-001/characters.json").as_slice()), + ("cldr-misc-full/main/en-ZA/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/en-ZA/characters.json").as_slice()), + ("cldr-misc-full/main/es/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/es/characters.json").as_slice()), + ("cldr-misc-full/main/es-AR/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/es-AR/characters.json").as_slice()), + ("cldr-misc-full/main/fr/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/fr/characters.json").as_slice()), + ("cldr-misc-full/main/fil/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/fil/characters.json").as_slice()), + ("cldr-misc-full/main/ja/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/ja/characters.json").as_slice()), + ("cldr-misc-full/main/ru/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/ru/characters.json").as_slice()), + ("cldr-misc-full/main/sr/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/sr/characters.json").as_slice()), + ("cldr-misc-full/main/sr-Latn/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/sr-Latn/characters.json").as_slice()), + ("cldr-misc-full/main/th/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/th/characters.json").as_slice()), + ("cldr-misc-full/main/tr/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/tr/characters.json").as_slice()), + ("cldr-misc-full/main/und/characters.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/und/characters.json").as_slice()), + ("cldr-misc-full/main/ar/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/ar/listPatterns.json").as_slice()), + ("cldr-misc-full/main/ar-EG/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/ar-EG/listPatterns.json").as_slice()), + ("cldr-misc-full/main/bn/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/bn/listPatterns.json").as_slice()), + ("cldr-misc-full/main/ccp/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/ccp/listPatterns.json").as_slice()), + ("cldr-misc-full/main/en/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/en/listPatterns.json").as_slice()), + ("cldr-misc-full/main/en-001/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/en-001/listPatterns.json").as_slice()), + ("cldr-misc-full/main/en-ZA/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/en-ZA/listPatterns.json").as_slice()), + ("cldr-misc-full/main/es/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/es/listPatterns.json").as_slice()), + ("cldr-misc-full/main/es-AR/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/es-AR/listPatterns.json").as_slice()), + ("cldr-misc-full/main/fr/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/fr/listPatterns.json").as_slice()), + ("cldr-misc-full/main/fil/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/fil/listPatterns.json").as_slice()), + ("cldr-misc-full/main/ja/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/ja/listPatterns.json").as_slice()), + ("cldr-misc-full/main/ru/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/ru/listPatterns.json").as_slice()), + ("cldr-misc-full/main/sr/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/sr/listPatterns.json").as_slice()), + ("cldr-misc-full/main/sr-Latn/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/sr-Latn/listPatterns.json").as_slice()), + ("cldr-misc-full/main/th/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/th/listPatterns.json").as_slice()), + ("cldr-misc-full/main/tr/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/tr/listPatterns.json").as_slice()), + ("cldr-misc-full/main/und/listPatterns.json", include_bytes!("../../tests/data/cldr/cldr-misc-full/main/und/listPatterns.json").as_slice()), + ("cldr-numbers-full/main/ar/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/ar/currencies.json").as_slice()), + ("cldr-numbers-full/main/ar-EG/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/ar-EG/currencies.json").as_slice()), + ("cldr-numbers-full/main/bn/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/bn/currencies.json").as_slice()), + ("cldr-numbers-full/main/ccp/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/ccp/currencies.json").as_slice()), + ("cldr-numbers-full/main/en/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/en/currencies.json").as_slice()), + ("cldr-numbers-full/main/en-001/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/en-001/currencies.json").as_slice()), + ("cldr-numbers-full/main/en-ZA/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/en-ZA/currencies.json").as_slice()), + ("cldr-numbers-full/main/es/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/es/currencies.json").as_slice()), + ("cldr-numbers-full/main/es-AR/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/es-AR/currencies.json").as_slice()), + ("cldr-numbers-full/main/fr/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/fr/currencies.json").as_slice()), + ("cldr-numbers-full/main/fil/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/fil/currencies.json").as_slice()), + ("cldr-numbers-full/main/ja/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/ja/currencies.json").as_slice()), + ("cldr-numbers-full/main/ru/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/ru/currencies.json").as_slice()), + ("cldr-numbers-full/main/sr/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/sr/currencies.json").as_slice()), + ("cldr-numbers-full/main/sr-Latn/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/sr-Latn/currencies.json").as_slice()), + ("cldr-numbers-full/main/th/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/th/currencies.json").as_slice()), + ("cldr-numbers-full/main/tr/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/tr/currencies.json").as_slice()), + ("cldr-numbers-full/main/und/currencies.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/und/currencies.json").as_slice()), + ("cldr-numbers-full/main/ar/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/ar/numbers.json").as_slice()), + ("cldr-numbers-full/main/ar-EG/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/ar-EG/numbers.json").as_slice()), + ("cldr-numbers-full/main/bn/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/bn/numbers.json").as_slice()), + ("cldr-numbers-full/main/ccp/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/ccp/numbers.json").as_slice()), + ("cldr-numbers-full/main/en/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/en/numbers.json").as_slice()), + ("cldr-numbers-full/main/en-001/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/en-001/numbers.json").as_slice()), + ("cldr-numbers-full/main/en-ZA/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/en-ZA/numbers.json").as_slice()), + ("cldr-numbers-full/main/es/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/es/numbers.json").as_slice()), + ("cldr-numbers-full/main/es-AR/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/es-AR/numbers.json").as_slice()), + ("cldr-numbers-full/main/fr/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/fr/numbers.json").as_slice()), + ("cldr-numbers-full/main/fil/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/fil/numbers.json").as_slice()), + ("cldr-numbers-full/main/ja/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/ja/numbers.json").as_slice()), + ("cldr-numbers-full/main/ru/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/ru/numbers.json").as_slice()), + ("cldr-numbers-full/main/sr/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/sr/numbers.json").as_slice()), + ("cldr-numbers-full/main/sr-Latn/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/sr-Latn/numbers.json").as_slice()), + ("cldr-numbers-full/main/th/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/th/numbers.json").as_slice()), + ("cldr-numbers-full/main/tr/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/tr/numbers.json").as_slice()), + ("cldr-numbers-full/main/und/numbers.json", include_bytes!("../../tests/data/cldr/cldr-numbers-full/main/und/numbers.json").as_slice()), + ("cldr-units-full/main/ar/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/ar/units.json").as_slice()), + ("cldr-units-full/main/ar-EG/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/ar-EG/units.json").as_slice()), + ("cldr-units-full/main/bn/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/bn/units.json").as_slice()), + ("cldr-units-full/main/ccp/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/ccp/units.json").as_slice()), + ("cldr-units-full/main/en/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/en/units.json").as_slice()), + ("cldr-units-full/main/en-001/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/en-001/units.json").as_slice()), + ("cldr-units-full/main/en-ZA/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/en-ZA/units.json").as_slice()), + ("cldr-units-full/main/es/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/es/units.json").as_slice()), + ("cldr-units-full/main/es-AR/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/es-AR/units.json").as_slice()), + ("cldr-units-full/main/fr/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/fr/units.json").as_slice()), + ("cldr-units-full/main/fil/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/fil/units.json").as_slice()), + ("cldr-units-full/main/ja/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/ja/units.json").as_slice()), + ("cldr-units-full/main/ru/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/ru/units.json").as_slice()), + ("cldr-units-full/main/sr/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/sr/units.json").as_slice()), + ("cldr-units-full/main/sr-Latn/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/sr-Latn/units.json").as_slice()), + ("cldr-units-full/main/th/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/th/units.json").as_slice()), + ("cldr-units-full/main/tr/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/tr/units.json").as_slice()), + ("cldr-units-full/main/und/units.json", include_bytes!("../../tests/data/cldr/cldr-units-full/main/und/units.json").as_slice()), + ("cldr-person-names-full/main/ar/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/ar/personNames.json").as_slice()), + ("cldr-person-names-full/main/ar-EG/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/ar-EG/personNames.json").as_slice()), + ("cldr-person-names-full/main/bn/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/bn/personNames.json").as_slice()), + ("cldr-person-names-full/main/ccp/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/ccp/personNames.json").as_slice()), + ("cldr-person-names-full/main/en/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/en/personNames.json").as_slice()), + ("cldr-person-names-full/main/en-001/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/en-001/personNames.json").as_slice()), + ("cldr-person-names-full/main/en-ZA/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/en-ZA/personNames.json").as_slice()), + ("cldr-person-names-full/main/es/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/es/personNames.json").as_slice()), + ("cldr-person-names-full/main/es-AR/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/es-AR/personNames.json").as_slice()), + ("cldr-person-names-full/main/fr/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/fr/personNames.json").as_slice()), + ("cldr-person-names-full/main/fil/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/fil/personNames.json").as_slice()), + ("cldr-person-names-full/main/ja/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/ja/personNames.json").as_slice()), + ("cldr-person-names-full/main/ru/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/ru/personNames.json").as_slice()), + ("cldr-person-names-full/main/sr/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/sr/personNames.json").as_slice()), + ("cldr-person-names-full/main/sr-Latn/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/sr-Latn/personNames.json").as_slice()), + ("cldr-person-names-full/main/th/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/th/personNames.json").as_slice()), + ("cldr-person-names-full/main/tr/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/tr/personNames.json").as_slice()), + ("cldr-person-names-full/main/und/personNames.json", include_bytes!("../../tests/data/cldr/cldr-person-names-full/main/und/personNames.json").as_slice()), + ("cldr-transforms-full/main/Any-Publishing/metadata.json", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Any-Publishing/metadata.json").as_slice()), + ("cldr-transforms-full/main/Any-Publishing/source.txt", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Any-Publishing/source.txt").as_slice()), + ("cldr-transforms-full/main/Bengali-Arabic/metadata.json", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Bengali-Arabic/metadata.json").as_slice()), + ("cldr-transforms-full/main/Bengali-Arabic/source.txt", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Bengali-Arabic/source.txt").as_slice()), + ("cldr-transforms-full/main/Bengali-InterIndic/metadata.json", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Bengali-InterIndic/metadata.json").as_slice()), + ("cldr-transforms-full/main/Bengali-InterIndic/source.txt", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Bengali-InterIndic/source.txt").as_slice()), + ("cldr-transforms-full/main/InterIndic-Arabic/metadata.json", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/InterIndic-Arabic/metadata.json").as_slice()), + ("cldr-transforms-full/main/InterIndic-Arabic/source.txt", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/InterIndic-Arabic/source.txt").as_slice()), + ("cldr-transforms-full/main/Latin-ASCII/metadata.json", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Latin-ASCII/metadata.json").as_slice()), + ("cldr-transforms-full/main/Latin-ASCII/source.txt", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Latin-ASCII/source.txt").as_slice()), + ("cldr-transforms-full/main/Test-Test-CursorFilters/metadata.json", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Test-Test-CursorFilters/metadata.json").as_slice()), + ("cldr-transforms-full/main/Test-Test-CursorFilters/source.txt", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Test-Test-CursorFilters/source.txt").as_slice()), + ("cldr-transforms-full/main/Test-Test-EmptyMatches/metadata.json", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Test-Test-EmptyMatches/metadata.json").as_slice()), + ("cldr-transforms-full/main/Test-Test-EmptyMatches/source.txt", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Test-Test-EmptyMatches/source.txt").as_slice()), + ("cldr-transforms-full/main/Test-Test-HexRustWrapper/metadata.json", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Test-Test-HexRustWrapper/metadata.json").as_slice()), + ("cldr-transforms-full/main/Test-Test-HexRustWrapper/source.txt", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Test-Test-HexRustWrapper/source.txt").as_slice()), + ("cldr-transforms-full/main/Test-Test-HexUnicodeWrapper/metadata.json", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Test-Test-HexUnicodeWrapper/metadata.json").as_slice()), + ("cldr-transforms-full/main/Test-Test-HexUnicodeWrapper/source.txt", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Test-Test-HexUnicodeWrapper/source.txt").as_slice()), + ("cldr-transforms-full/main/Test-Test-NielsFunctionalityTest/metadata.json", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Test-Test-NielsFunctionalityTest/metadata.json").as_slice()), + ("cldr-transforms-full/main/Test-Test-NielsFunctionalityTest/source.txt", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Test-Test-NielsFunctionalityTest/source.txt").as_slice()), + ("cldr-transforms-full/main/Test-Test-RecursiveSuiteA/metadata.json", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteA/metadata.json").as_slice()), + ("cldr-transforms-full/main/Test-Test-RecursiveSuiteA/source.txt", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteA/source.txt").as_slice()), + ("cldr-transforms-full/main/Test-Test-RecursiveSuiteRoot/metadata.json", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteRoot/metadata.json").as_slice()), + ("cldr-transforms-full/main/Test-Test-RecursiveSuiteRoot/source.txt", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteRoot/source.txt").as_slice()), + ("cldr-transforms-full/main/de-ASCII/metadata.json", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/de-ASCII/metadata.json").as_slice()), + ("cldr-transforms-full/main/de-ASCII/source.txt", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/de-ASCII/source.txt").as_slice()), + ("cldr-transforms-full/main/el-el_Latn-BGN/metadata.json", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/el-el_Latn-BGN/metadata.json").as_slice()), + ("cldr-transforms-full/main/el-el_Latn-BGN/source.txt", include_bytes!("../../tests/data/cldr/cldr-transforms-full/main/el-el_Latn-BGN/source.txt").as_slice()) + ].into_iter().collect(), + ))))), + icuexport_paths: Some(Arc::new(SerdeCache::new(AbstractFs::Memory( + [ + ("collation/implicithan/ar_compat_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ar_compat_data.toml").as_slice()), + ("collation/implicithan/ar_compat_meta.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ar_compat_meta.toml").as_slice()), + ("collation/implicithan/ar_compat_reord.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ar_compat_reord.toml").as_slice()), + ("collation/implicithan/ar_standard_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ar_standard_data.toml").as_slice()), + ("collation/implicithan/bn_standard_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/bn_standard_data.toml").as_slice()), + ("collation/implicithan/es_standard_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/es_standard_data.toml").as_slice()), + ("collation/implicithan/fil_standard_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/fil_standard_data.toml").as_slice()), + ("collation/implicithan/ja_standard_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ja_standard_data.toml").as_slice()), + ("collation/implicithan/sr_standard_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/sr_standard_data.toml").as_slice()), + ("collation/implicithan/sr_Latn_standard_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/sr_Latn_standard_data.toml").as_slice()), + ("collation/implicithan/th_standard_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/th_standard_data.toml").as_slice()), + ("collation/implicithan/tr_standard_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/tr_standard_data.toml").as_slice()), + ("collation/implicithan/root_standard_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/root_standard_data.toml").as_slice()), + ("collation/implicithan/root_standard_dia.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/root_standard_dia.toml").as_slice()), + ("collation/implicithan/root_standard_jamo.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/root_standard_jamo.toml").as_slice()), + ("collation/implicithan/ar_standard_meta.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ar_standard_meta.toml").as_slice()), + ("collation/implicithan/bn_standard_meta.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/bn_standard_meta.toml").as_slice()), + ("collation/implicithan/es_standard_meta.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/es_standard_meta.toml").as_slice()), + ("collation/implicithan/fil_standard_meta.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/fil_standard_meta.toml").as_slice()), + ("collation/implicithan/ja_standard_meta.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ja_standard_meta.toml").as_slice()), + ("collation/implicithan/ru_standard_meta.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ru_standard_meta.toml").as_slice()), + ("collation/implicithan/sr_standard_meta.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/sr_standard_meta.toml").as_slice()), + ("collation/implicithan/sr_Latn_standard_meta.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/sr_Latn_standard_meta.toml").as_slice()), + ("collation/implicithan/th_standard_meta.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/th_standard_meta.toml").as_slice()), + ("collation/implicithan/tr_standard_meta.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/tr_standard_meta.toml").as_slice()), + ("collation/implicithan/root_standard_meta.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/root_standard_meta.toml").as_slice()), + ("collation/implicithan/root_standard_prim.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/root_standard_prim.toml").as_slice()), + ("collation/implicithan/ar_standard_reord.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ar_standard_reord.toml").as_slice()), + ("collation/implicithan/bn_standard_reord.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/bn_standard_reord.toml").as_slice()), + ("collation/implicithan/ja_standard_reord.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ja_standard_reord.toml").as_slice()), + ("collation/implicithan/ru_standard_reord.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ru_standard_reord.toml").as_slice()), + ("collation/implicithan/sr_standard_reord.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/sr_standard_reord.toml").as_slice()), + ("collation/implicithan/sr_Latn_standard_reord.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/sr_Latn_standard_reord.toml").as_slice()), + ("collation/implicithan/th_standard_reord.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/th_standard_reord.toml").as_slice()), + ("collation/implicithan/bn_traditional_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/bn_traditional_data.toml").as_slice()), + ("collation/implicithan/es_traditional_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/es_traditional_data.toml").as_slice()), + ("collation/implicithan/bn_traditional_meta.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/bn_traditional_meta.toml").as_slice()), + ("collation/implicithan/es_traditional_meta.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/es_traditional_meta.toml").as_slice()), + ("collation/implicithan/bn_traditional_reord.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/bn_traditional_reord.toml").as_slice()), + ("collation/implicithan/ja_unihan_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ja_unihan_data.toml").as_slice()), + ("collation/implicithan/ja_unihan_meta.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ja_unihan_meta.toml").as_slice()), + ("collation/implicithan/ja_unihan_reord.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ja_unihan_reord.toml").as_slice()), + ("collation/implicithan/ko_search_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ko_search_data.toml").as_slice()), + ("collation/implicithan/ko_searchjl_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ko_searchjl_data.toml").as_slice()), + ("collation/implicithan/ko_standard_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ko_standard_data.toml").as_slice()), + ("collation/implicithan/ko_unihan_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/ko_unihan_data.toml").as_slice()), + ("collation/implicithan/root_emoji_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/root_emoji_data.toml").as_slice()), + ("collation/implicithan/root_emoji_meta.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/root_emoji_meta.toml").as_slice()), + ("collation/implicithan/root_eor_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/root_eor_data.toml").as_slice()), + ("collation/implicithan/root_eor_meta.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/root_eor_meta.toml").as_slice()), + ("collation/implicithan/zh_big5han_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/zh_big5han_data.toml").as_slice()), + ("collation/implicithan/zh_gb2312han_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/zh_gb2312han_data.toml").as_slice()), + ("collation/implicithan/zh_pinyin_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/zh_pinyin_data.toml").as_slice()), + ("collation/implicithan/zh_stroke_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/zh_stroke_data.toml").as_slice()), + ("collation/implicithan/zh_unihan_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/zh_unihan_data.toml").as_slice()), + ("collation/implicithan/zh_zhuyin_data.toml", include_bytes!("../../tests/data/icuexport/collation/implicithan/zh_zhuyin_data.toml").as_slice()), + ("norm/small/compositions.toml", include_bytes!("../../tests/data/icuexport/norm/small/compositions.toml").as_slice()), + ("norm/small/decompositionex.toml", include_bytes!("../../tests/data/icuexport/norm/small/decompositionex.toml").as_slice()), + ("norm/small/nfd.toml", include_bytes!("../../tests/data/icuexport/norm/small/nfd.toml").as_slice()), + ("norm/small/nfdex.toml", include_bytes!("../../tests/data/icuexport/norm/small/nfdex.toml").as_slice()), + ("norm/small/nfkd.toml", include_bytes!("../../tests/data/icuexport/norm/small/nfkd.toml").as_slice()), + ("norm/small/nfkdex.toml", include_bytes!("../../tests/data/icuexport/norm/small/nfkdex.toml").as_slice()), + ("norm/small/uts46d.toml", include_bytes!("../../tests/data/icuexport/norm/small/uts46d.toml").as_slice()), + ("segmenter/dictionary/burmesedict.toml", include_bytes!("../../tests/data/icuexport/segmenter/dictionary/burmesedict.toml").as_slice()), + ("segmenter/dictionary/cjdict.toml", include_bytes!("../../tests/data/icuexport/segmenter/dictionary/cjdict.toml").as_slice()), + ("segmenter/dictionary/khmerdict.toml", include_bytes!("../../tests/data/icuexport/segmenter/dictionary/khmerdict.toml").as_slice()), + ("segmenter/dictionary/laodict.toml", include_bytes!("../../tests/data/icuexport/segmenter/dictionary/laodict.toml").as_slice()), + ("segmenter/dictionary/thaidict.toml", include_bytes!("../../tests/data/icuexport/segmenter/dictionary/thaidict.toml").as_slice()), + ("ucase/small/ucase.toml", include_bytes!("../../tests/data/icuexport/ucase/small/ucase.toml").as_slice()), + ("uprops/small/AHex.toml", include_bytes!("../../tests/data/icuexport/uprops/small/AHex.toml").as_slice()), + ("uprops/small/alnum.toml", include_bytes!("../../tests/data/icuexport/uprops/small/alnum.toml").as_slice()), + ("uprops/small/Alpha.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Alpha.toml").as_slice()), + ("uprops/small/Basic_Emoji.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Basic_Emoji.toml").as_slice()), + ("uprops/small/bc.toml", include_bytes!("../../tests/data/icuexport/uprops/small/bc.toml").as_slice()), + ("uprops/small/Bidi_C.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Bidi_C.toml").as_slice()), + ("uprops/small/Bidi_M.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Bidi_M.toml").as_slice()), + ("uprops/small/blank.toml", include_bytes!("../../tests/data/icuexport/uprops/small/blank.toml").as_slice()), + ("uprops/small/bmg.toml", include_bytes!("../../tests/data/icuexport/uprops/small/bmg.toml").as_slice()), + ("uprops/small/bpt.toml", include_bytes!("../../tests/data/icuexport/uprops/small/bpt.toml").as_slice()), + ("uprops/small/Cased.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Cased.toml").as_slice()), + ("uprops/small/ccc.toml", include_bytes!("../../tests/data/icuexport/uprops/small/ccc.toml").as_slice()), + ("uprops/small/CI.toml", include_bytes!("../../tests/data/icuexport/uprops/small/CI.toml").as_slice()), + ("uprops/small/Comp_Ex.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Comp_Ex.toml").as_slice()), + ("uprops/small/CWCF.toml", include_bytes!("../../tests/data/icuexport/uprops/small/CWCF.toml").as_slice()), + ("uprops/small/CWCM.toml", include_bytes!("../../tests/data/icuexport/uprops/small/CWCM.toml").as_slice()), + ("uprops/small/CWKCF.toml", include_bytes!("../../tests/data/icuexport/uprops/small/CWKCF.toml").as_slice()), + ("uprops/small/CWL.toml", include_bytes!("../../tests/data/icuexport/uprops/small/CWL.toml").as_slice()), + ("uprops/small/CWT.toml", include_bytes!("../../tests/data/icuexport/uprops/small/CWT.toml").as_slice()), + ("uprops/small/CWU.toml", include_bytes!("../../tests/data/icuexport/uprops/small/CWU.toml").as_slice()), + ("uprops/small/Dash.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Dash.toml").as_slice()), + ("uprops/small/Dep.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Dep.toml").as_slice()), + ("uprops/small/DI.toml", include_bytes!("../../tests/data/icuexport/uprops/small/DI.toml").as_slice()), + ("uprops/small/Dia.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Dia.toml").as_slice()), + ("uprops/small/ea.toml", include_bytes!("../../tests/data/icuexport/uprops/small/ea.toml").as_slice()), + ("uprops/small/EBase.toml", include_bytes!("../../tests/data/icuexport/uprops/small/EBase.toml").as_slice()), + ("uprops/small/EComp.toml", include_bytes!("../../tests/data/icuexport/uprops/small/EComp.toml").as_slice()), + ("uprops/small/EMod.toml", include_bytes!("../../tests/data/icuexport/uprops/small/EMod.toml").as_slice()), + ("uprops/small/Emoji.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Emoji.toml").as_slice()), + ("uprops/small/EPres.toml", include_bytes!("../../tests/data/icuexport/uprops/small/EPres.toml").as_slice()), + ("uprops/small/Ext.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Ext.toml").as_slice()), + ("uprops/small/ExtPict.toml", include_bytes!("../../tests/data/icuexport/uprops/small/ExtPict.toml").as_slice()), + ("uprops/small/gc.toml", include_bytes!("../../tests/data/icuexport/uprops/small/gc.toml").as_slice()), + ("uprops/small/GCB.toml", include_bytes!("../../tests/data/icuexport/uprops/small/GCB.toml").as_slice()), + ("uprops/small/gcm.toml", include_bytes!("../../tests/data/icuexport/uprops/small/gcm.toml").as_slice()), + ("uprops/small/Gr_Base.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Gr_Base.toml").as_slice()), + ("uprops/small/Gr_Ext.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Gr_Ext.toml").as_slice()), + ("uprops/small/Gr_Link.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Gr_Link.toml").as_slice()), + ("uprops/small/graph.toml", include_bytes!("../../tests/data/icuexport/uprops/small/graph.toml").as_slice()), + ("uprops/small/Hex.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Hex.toml").as_slice()), + ("uprops/small/hst.toml", include_bytes!("../../tests/data/icuexport/uprops/small/hst.toml").as_slice()), + ("uprops/small/Hyphen.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Hyphen.toml").as_slice()), + ("uprops/small/IDC.toml", include_bytes!("../../tests/data/icuexport/uprops/small/IDC.toml").as_slice()), + ("uprops/small/Ideo.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Ideo.toml").as_slice()), + ("uprops/small/IDS.toml", include_bytes!("../../tests/data/icuexport/uprops/small/IDS.toml").as_slice()), + ("uprops/small/IDSB.toml", include_bytes!("../../tests/data/icuexport/uprops/small/IDSB.toml").as_slice()), + ("uprops/small/IDST.toml", include_bytes!("../../tests/data/icuexport/uprops/small/IDST.toml").as_slice()), + ("uprops/small/InSC.toml", include_bytes!("../../tests/data/icuexport/uprops/small/InSC.toml").as_slice()), + ("uprops/small/Join_C.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Join_C.toml").as_slice()), + ("uprops/small/jt.toml", include_bytes!("../../tests/data/icuexport/uprops/small/jt.toml").as_slice()), + ("uprops/small/lb.toml", include_bytes!("../../tests/data/icuexport/uprops/small/lb.toml").as_slice()), + ("uprops/small/LOE.toml", include_bytes!("../../tests/data/icuexport/uprops/small/LOE.toml").as_slice()), + ("uprops/small/Lower.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Lower.toml").as_slice()), + ("uprops/small/Math.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Math.toml").as_slice()), + ("uprops/small/NChar.toml", include_bytes!("../../tests/data/icuexport/uprops/small/NChar.toml").as_slice()), + ("uprops/small/nfcinert.toml", include_bytes!("../../tests/data/icuexport/uprops/small/nfcinert.toml").as_slice()), + ("uprops/small/nfdinert.toml", include_bytes!("../../tests/data/icuexport/uprops/small/nfdinert.toml").as_slice()), + ("uprops/small/nfkcinert.toml", include_bytes!("../../tests/data/icuexport/uprops/small/nfkcinert.toml").as_slice()), + ("uprops/small/nfkdinert.toml", include_bytes!("../../tests/data/icuexport/uprops/small/nfkdinert.toml").as_slice()), + ("uprops/small/Pat_Syn.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Pat_Syn.toml").as_slice()), + ("uprops/small/Pat_WS.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Pat_WS.toml").as_slice()), + ("uprops/small/PCM.toml", include_bytes!("../../tests/data/icuexport/uprops/small/PCM.toml").as_slice()), + ("uprops/small/print.toml", include_bytes!("../../tests/data/icuexport/uprops/small/print.toml").as_slice()), + ("uprops/small/QMark.toml", include_bytes!("../../tests/data/icuexport/uprops/small/QMark.toml").as_slice()), + ("uprops/small/Radical.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Radical.toml").as_slice()), + ("uprops/small/RI.toml", include_bytes!("../../tests/data/icuexport/uprops/small/RI.toml").as_slice()), + ("uprops/small/SB.toml", include_bytes!("../../tests/data/icuexport/uprops/small/SB.toml").as_slice()), + ("uprops/small/sc.toml", include_bytes!("../../tests/data/icuexport/uprops/small/sc.toml").as_slice()), + ("uprops/small/scx.toml", include_bytes!("../../tests/data/icuexport/uprops/small/scx.toml").as_slice()), + ("uprops/small/SD.toml", include_bytes!("../../tests/data/icuexport/uprops/small/SD.toml").as_slice()), + ("uprops/small/segstart.toml", include_bytes!("../../tests/data/icuexport/uprops/small/segstart.toml").as_slice()), + ("uprops/small/Sensitive.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Sensitive.toml").as_slice()), + ("uprops/small/STerm.toml", include_bytes!("../../tests/data/icuexport/uprops/small/STerm.toml").as_slice()), + ("uprops/small/Term.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Term.toml").as_slice()), + ("uprops/small/UIdeo.toml", include_bytes!("../../tests/data/icuexport/uprops/small/UIdeo.toml").as_slice()), + ("uprops/small/Upper.toml", include_bytes!("../../tests/data/icuexport/uprops/small/Upper.toml").as_slice()), + ("uprops/small/VS.toml", include_bytes!("../../tests/data/icuexport/uprops/small/VS.toml").as_slice()), + ("uprops/small/WB.toml", include_bytes!("../../tests/data/icuexport/uprops/small/WB.toml").as_slice()), + ("uprops/small/WSpace.toml", include_bytes!("../../tests/data/icuexport/uprops/small/WSpace.toml").as_slice()), + ("uprops/small/xdigit.toml", include_bytes!("../../tests/data/icuexport/uprops/small/xdigit.toml").as_slice()), + ("uprops/small/XIDC.toml", include_bytes!("../../tests/data/icuexport/uprops/small/XIDC.toml").as_slice()), + ("uprops/small/XIDS.toml", include_bytes!("../../tests/data/icuexport/uprops/small/XIDS.toml").as_slice()) + ].into_iter().collect(), + )))), + segmenter_lstm_paths: Some(Arc::new(SerdeCache::new(AbstractFs::Memory( + [ + ("Burmese_codepoints_exclusive_model4_heavy/weights.json", include_bytes!("../../tests/data/lstm/Burmese_codepoints_exclusive_model4_heavy/weights.json").as_slice()), + ("Khmer_codepoints_exclusive_model4_heavy/weights.json", include_bytes!("../../tests/data/lstm/Khmer_codepoints_exclusive_model4_heavy/weights.json").as_slice()), + ("Lao_codepoints_exclusive_model4_heavy/weights.json", include_bytes!("../../tests/data/lstm/Lao_codepoints_exclusive_model4_heavy/weights.json").as_slice()), + ("Thai_codepoints_exclusive_model4_heavy/weights.json", include_bytes!("../../tests/data/lstm/Thai_codepoints_exclusive_model4_heavy/weights.json").as_slice()), + ("Thai_graphclust_model4_heavy/weights.json", include_bytes!("../../tests/data/lstm/Thai_graphclust_model4_heavy/weights.json").as_slice()) + ].into_iter().collect(), + )))), + ..DatagenProvider::new_custom() + }) + .clone() + } +} diff --git a/provider/datagen/src/provider/tests/mod.rs b/provider/bikeshed/src/tests/mod.rs similarity index 94% rename from provider/datagen/src/provider/tests/mod.rs rename to provider/bikeshed/src/tests/mod.rs index 3e8e1baf960..4bb850ca945 100644 --- a/provider/datagen/src/provider/tests/mod.rs +++ b/provider/bikeshed/src/tests/mod.rs @@ -6,6 +6,6 @@ //! //! Most tests should either be in-module unit tests or integration tests. -mod make_testdata; +mod test_zero_copy; mod data; diff --git a/provider/datagen/src/provider/tests/make_testdata.rs b/provider/bikeshed/src/tests/test_zero_copy.rs similarity index 73% rename from provider/datagen/src/provider/tests/make_testdata.rs rename to provider/bikeshed/src/tests/test_zero_copy.rs index 696b517487d..7cd622e29a4 100644 --- a/provider/datagen/src/provider/tests/make_testdata.rs +++ b/provider/bikeshed/src/tests/test_zero_copy.rs @@ -2,7 +2,8 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::prelude::*; +use crate::DatagenProvider; +use icu_datagen::prelude::*; use icu_provider::datagen::*; use icu_provider::dynutil::UpcastDataPayload; use icu_provider::prelude::*; @@ -11,61 +12,19 @@ use std::cell::Cell; use std::collections::BTreeSet; use std::sync::Mutex; -include!("../../../tests/locales.rs.data"); +include!("../../tests/locales.rs.data"); #[test] #[cfg(feature = "use_wasm")] -fn make_testdata() { - // Only produce output if the variable is set. Test is hermetic otherwise. - let exporter: Box = if std::option_env!("ICU4X_WRITE_TESTDATA").is_none() { - Box::new(ZeroCopyCheckExporter { - zero_copy_violations: Default::default(), - zero_copy_transient_violations: Default::default(), - rountrip_errors: Default::default(), - }) - } else { - simple_logger::SimpleLogger::new() - .env() - .with_level(log::LevelFilter::Info) - .init() - .unwrap(); - - Box::new(MultiExporter::new(vec![ - #[cfg(feature = "fs_exporter")] - Box::new( - crate::fs_exporter::FilesystemExporter::try_new( - Box::new(crate::fs_exporter::serializers::Json::pretty()), - { - let mut options = crate::fs_exporter::Options::default(); - options.root = "tests/data/json".into(); - options.overwrite = crate::fs_exporter::OverwriteOption::RemoveAndReplace; - options - }, - ) - .unwrap(), - ), - #[cfg(feature = "baked_exporter")] - // Generates a stub data directory that can be used with `ICU4X_DATA_DIR` - // for faster development and debugging. See CONTRIBUTING.md - Box::new(StubExporter( - crate::baked_exporter::BakedExporter::new("tests/data/baked".into(), { - let mut options = crate::baked_exporter::Options::default(); - options.overwrite = true; - options.pretty = true; - options - }) - .unwrap(), - )), - Box::new(ZeroCopyCheckExporter { - zero_copy_violations: Default::default(), - zero_copy_transient_violations: Default::default(), - rountrip_errors: Default::default(), - }), - ])) +fn test_zero_copy() { + let exporter = ZeroCopyTestingExporter { + zero_copy_violations: Default::default(), + zero_copy_transient_violations: Default::default(), + rountrip_errors: Default::default(), }; DatagenDriver::new() - .with_markers(crate::all_markers()) + .with_markers(icu_datagen::all_markers()) .with_locales_and_fallback( LOCALES.iter().cloned().map(LocaleFamily::with_descendants), FallbackOptions::no_deduplication(), @@ -78,37 +37,7 @@ fn make_testdata() { .unwrap() } -struct StubExporter(E); - -impl DataExporter for StubExporter { - fn put_payload( - &self, - _marker: DataMarkerInfo, - _locale: &DataLocale, - _marker_attributes: &DataMarkerAttributes, - _payload: &DataPayload, - ) -> Result<(), DataError> { - Ok(()) - } - - fn flush_singleton( - &self, - marker: DataMarkerInfo, - payload: &DataPayload, - ) -> Result<(), DataError> { - self.0.flush_singleton(marker, payload) - } - - fn flush(&self, marker: DataMarkerInfo) -> Result<(), DataError> { - self.0.flush(marker) - } - - fn close(&mut self) -> Result<(), DataError> { - self.0.close() - } -} - -struct ZeroCopyCheckExporter { +struct ZeroCopyTestingExporter { zero_copy_violations: Mutex>, zero_copy_transient_violations: Mutex>, rountrip_errors: Mutex>, @@ -138,7 +67,7 @@ const EXPECTED_TRANSIENT_VIOLATIONS: &[DataMarkerInfo] = &[ icu::list::provider::UnitListV1Marker::INFO, ]; -impl DataExporter for ZeroCopyCheckExporter { +impl DataExporter for ZeroCopyTestingExporter { fn put_payload( &self, marker: DataMarkerInfo, diff --git a/provider/datagen/src/transform/cldr/time_zones/convert.rs b/provider/bikeshed/src/time_zones/convert.rs similarity index 99% rename from provider/datagen/src/transform/cldr/time_zones/convert.rs rename to provider/bikeshed/src/time_zones/convert.rs index 2666247afd8..80cedbd0445 100644 --- a/provider/datagen/src/transform/cldr/time_zones/convert.rs +++ b/provider/bikeshed/src/time_zones/convert.rs @@ -3,7 +3,7 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use super::CldrTimeZonesData; -use crate::provider::transform::cldr::cldr_serde; +use crate::cldr_serde; use cldr_serde::time_zones::bcp47_tzid::Bcp47TzidAliasData; use cldr_serde::time_zones::meta_zones::MetaLocationOrSubRegion; use cldr_serde::time_zones::meta_zones::MetazoneAliasData; @@ -44,7 +44,7 @@ fn parse_hour_format(hour_format: &str) -> (Cow<'static, str>, Cow<'static, str> /// Returns a map from time zone long identifier to time zone BCP-47 ID. /// /// For example: "America/Chicago" to "uschi" -pub(in crate::provider) fn compute_bcp47_tzids_btreemap( +pub(crate) fn compute_bcp47_tzids_btreemap( bcp47_tzids_resource: &BTreeMap, ) -> BTreeMap { let mut bcp47_tzids = BTreeMap::new(); @@ -61,7 +61,7 @@ pub(in crate::provider) fn compute_bcp47_tzids_btreemap( /// Returns a map from BCP-47 ID to a single canonical long identifier. /// /// For example: "inccu" to "Asia/Kolkata" -pub(in crate::provider) fn compute_canonical_tzids_btreemap( +pub(crate) fn compute_canonical_tzids_btreemap( bcp47_tzids_resource: &BTreeMap, ) -> BTreeMap { let mut canonical_tzids = BTreeMap::new(); diff --git a/provider/datagen/src/transform/cldr/time_zones/mod.rs b/provider/bikeshed/src/time_zones/mod.rs similarity index 94% rename from provider/datagen/src/transform/cldr/time_zones/mod.rs rename to provider/bikeshed/src/time_zones/mod.rs index 5796081de22..282d37e0c24 100644 --- a/provider/datagen/src/transform/cldr/time_zones/mod.rs +++ b/provider/bikeshed/src/time_zones/mod.rs @@ -2,9 +2,9 @@ // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; -use crate::provider::IterableDataProviderCached; +use crate::cldr_serde; +use crate::DatagenProvider; +use crate::IterableDataProviderCached; use cldr_serde::time_zones::bcp47_tzid::Bcp47TzidAliasData; use cldr_serde::time_zones::meta_zones::MetazoneAliasData; use cldr_serde::time_zones::meta_zones::ZonePeriod; @@ -21,10 +21,10 @@ mod names; #[derive(Debug, Copy, Clone)] struct CldrTimeZonesData<'a> { - pub(in crate::provider) time_zone_names_resource: &'a TimeZoneNames, - pub(in crate::provider) bcp47_tzids_resource: &'a BTreeMap, - pub(in crate::provider) meta_zone_ids_resource: &'a BTreeMap, - pub(in crate::provider) meta_zone_periods_resource: &'a BTreeMap, + pub(crate) time_zone_names_resource: &'a TimeZoneNames, + pub(crate) bcp47_tzids_resource: &'a BTreeMap, + pub(crate) meta_zone_ids_resource: &'a BTreeMap, + pub(crate) meta_zone_periods_resource: &'a BTreeMap, } macro_rules! impl_data_provider { diff --git a/provider/datagen/src/transform/cldr/time_zones/names.rs b/provider/bikeshed/src/time_zones/names.rs similarity index 99% rename from provider/datagen/src/transform/cldr/time_zones/names.rs rename to provider/bikeshed/src/time_zones/names.rs index 0bba3e8b595..4e48fefe414 100644 --- a/provider/datagen/src/transform/cldr/time_zones/names.rs +++ b/provider/bikeshed/src/time_zones/names.rs @@ -3,8 +3,8 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use super::convert::{compute_bcp47_tzids_btreemap, compute_canonical_tzids_btreemap}; -use crate::provider::transform::cldr::cldr_serde; -use crate::provider::DatagenProvider; +use crate::cldr_serde; +use crate::DatagenProvider; use icu::timezone::provider::names::*; use icu::timezone::TimeZoneBcp47Id; use icu_provider::datagen::IterableDataProvider; diff --git a/provider/datagen/src/transform/cldr/transforms/mod.rs b/provider/bikeshed/src/transforms/mod.rs similarity index 97% rename from provider/datagen/src/transform/cldr/transforms/mod.rs rename to provider/bikeshed/src/transforms/mod.rs index ae9e671cc7c..73fae181e70 100644 --- a/provider/datagen/src/transform/cldr/transforms/mod.rs +++ b/provider/bikeshed/src/transforms/mod.rs @@ -3,8 +3,8 @@ // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use super::cldr_serde::transforms; -use super::source::CldrCache; -use crate::provider::DatagenProvider; +use super::CldrCache; +use crate::DatagenProvider; use icu::experimental::transliterate::provider::*; use icu::experimental::transliterate::RuleCollection; use icu::locale::Locale; @@ -14,7 +14,7 @@ use std::collections::HashSet; use std::sync::Mutex; impl CldrCache { - fn transforms(&self) -> Result<&Mutex, DataError> { + pub(crate) fn transforms(&self) -> Result<&Mutex, DataError> { self.transforms.get_or_init(|| { fn find_bcp47(aliases: &[transforms::TransformAlias]) -> Option<&Locale> { aliases diff --git a/provider/datagen/src/transform/icuexport/ucase/mod.rs b/provider/bikeshed/src/ucase/mod.rs similarity index 98% rename from provider/datagen/src/transform/icuexport/ucase/mod.rs rename to provider/bikeshed/src/ucase/mod.rs index 3d745aff2a4..0a5d7d31957 100644 --- a/provider/datagen/src/transform/icuexport/ucase/mod.rs +++ b/provider/bikeshed/src/ucase/mod.rs @@ -5,7 +5,7 @@ //! This module contains provider implementations backed by TOML files //! exported from ICU. -use crate::provider::DatagenProvider; +use crate::DatagenProvider; use icu::casemap::provider::{CaseMapUnfoldV1, CaseMapUnfoldV1Marker, CaseMapV1, CaseMapV1Marker}; use icu::collections::codepointtrie::toml::CodePointDataSlice; use icu::collections::codepointtrie::CodePointTrieHeader; diff --git a/provider/bikeshed/src/ucase/ucase_serde.rs b/provider/bikeshed/src/ucase/ucase_serde.rs new file mode 100644 index 00000000000..f98f4089c42 --- /dev/null +++ b/provider/bikeshed/src/ucase/ucase_serde.rs @@ -0,0 +1,27 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +use icu::collections::codepointtrie::toml::CodePointTrieToml; + +#[derive(serde::Deserialize)] +pub(crate) struct Exceptions { + pub(crate) exceptions: Vec, +} + +#[derive(serde::Deserialize)] +pub(crate) struct Unfold { + pub(crate) unfold: Vec, +} + +#[derive(serde::Deserialize)] +pub(crate) struct Level1 { + pub(crate) code_point_trie: CodePointTrieToml, + pub(crate) exceptions: Exceptions, + pub(crate) unfold: Unfold, +} + +#[derive(serde::Deserialize)] +pub(crate) struct Main { + pub(crate) ucase: Level1, +} diff --git a/provider/datagen/src/transform/cldr/units/data.rs b/provider/bikeshed/src/units/data.rs similarity index 97% rename from provider/datagen/src/transform/cldr/units/data.rs rename to provider/bikeshed/src/units/data.rs index d78ed06454e..ebe67994288 100644 --- a/provider/datagen/src/transform/cldr/units/data.rs +++ b/provider/bikeshed/src/units/data.rs @@ -4,9 +4,9 @@ use std::collections::{BTreeMap, HashSet}; -use crate::provider::transform::cldr::cldr_serde::units::data::Patterns; -use crate::provider::transform::cldr::cldr_serde::{self}; -use crate::provider::DatagenProvider; +use crate::cldr_serde::units::data::Patterns; +use crate::cldr_serde::{self}; +use crate::DatagenProvider; use icu::experimental::dimension::provider::units::{ Count, UnitsDisplayNameV1, UnitsDisplayNameV1Marker, diff --git a/provider/datagen/src/transform/cldr/units/helpers.rs b/provider/bikeshed/src/units/helpers.rs similarity index 95% rename from provider/datagen/src/transform/cldr/units/helpers.rs rename to provider/bikeshed/src/units/helpers.rs index 1f7d62ddeda..d0a0683218f 100644 --- a/provider/datagen/src/transform/cldr/units/helpers.rs +++ b/provider/bikeshed/src/units/helpers.rs @@ -13,20 +13,20 @@ use num_traits::One; use num_traits::Signed; use zerovec::ZeroVec; -use crate::provider::transform::cldr::cldr_serde::units::info::Constant; +use crate::cldr_serde::units::info::Constant; /// Represents a scientific number that contains only clean numerator and denominator terms. /// NOTE: /// clean means that there is no constant in the numerator or denominator. /// For example, ["1.2"] is clean, but ["1.2", ft_to_m"] is not clean. -pub(in crate::provider) struct ScientificNumber { +pub(crate) struct ScientificNumber { /// Contains numerator terms that are represented as scientific numbers - pub(in crate::provider) clean_num: Vec, + pub(crate) clean_num: Vec, /// Contains denominator terms that are represented as scientific numbers - pub(in crate::provider) clean_den: Vec, + pub(crate) clean_den: Vec, /// Indicates if the constant is exact or approximate - pub(in crate::provider) exactness: Exactness, + pub(crate) exactness: Exactness, } /// Represents a general constant which contains scientific and non scientific numbers. @@ -78,7 +78,7 @@ impl GeneralNonScientificNumber { } } -pub(in crate::provider) fn process_factor_part( +pub(crate) fn process_factor_part( factor_part: &str, cons_map: &BTreeMap<&str, ScientificNumber>, ) -> Result { @@ -114,7 +114,7 @@ pub(in crate::provider) fn process_factor_part( /// "3 * ft_to_m" is converted to ScientificNumber { clean_num: ["3", "ft_to_m"], clean_den: ["1"], exactness: Exact } /// NOTE: /// If one of the constants in the factor is approximate, the whole factor is approximate. -pub(in crate::provider) fn process_factor( +pub(crate) fn process_factor( factor: &str, cons_map: &BTreeMap<&str, ScientificNumber>, ) -> Result { @@ -140,7 +140,7 @@ pub(in crate::provider) fn process_factor( } /// Extracts the conversion info from a base unit, factor and offset. -pub(in crate::provider) fn extract_conversion_info<'data>( +pub(crate) fn extract_conversion_info<'data>( base_unit: &str, factor: &ScientificNumber, offset: &ScientificNumber, @@ -177,7 +177,7 @@ pub(in crate::provider) fn extract_conversion_info<'data>( } /// Processes the constants and return them in a numerator-denominator form. -pub(in crate::provider) fn process_constants<'a>( +pub(crate) fn process_constants<'a>( constants: &'a BTreeMap, ) -> Result, DataError> { let mut constants_with_non_scientific = @@ -268,7 +268,7 @@ pub(in crate::provider) fn process_constants<'a>( /// - "ft_to_m" returns true /// - "1E2" returns true /// - "1.5E-2" returns true -pub(in crate::provider) fn contains_alphabetic_chars(s: &str) -> bool { +pub(crate) fn contains_alphabetic_chars(s: &str) -> bool { s.chars().any(char::is_alphabetic) } @@ -297,7 +297,7 @@ fn test_contains_alphabetic_chars() { /// Checks if a string is a valid scientific notation number. /// Returns true if the string is a valid scientific notation number, false otherwise. -pub(in crate::provider) fn is_scientific_number(s: &str) -> bool { +pub(crate) fn is_scientific_number(s: &str) -> bool { let mut parts = s.split('E'); let base = parts.next().unwrap_or("0"); let exponent = parts.next().unwrap_or("0"); @@ -309,7 +309,7 @@ pub(in crate::provider) fn is_scientific_number(s: &str) -> bool { } /// Converts a fractional number into its byte representation for numerator and denominator, along with its sign. -pub(in crate::provider) fn flatten_fraction(fraction: IcuRatio) -> (Vec, Vec, Sign) { +pub(crate) fn flatten_fraction(fraction: IcuRatio) -> (Vec, Vec, Sign) { let fraction = fraction.get_ratio(); let numer_bytes = fraction.numer().to_bytes_le().1; let denom_bytes = fraction.denom().to_bytes_le().1; @@ -329,7 +329,7 @@ pub(in crate::provider) fn flatten_fraction(fraction: IcuRatio) -> (Vec, Vec /// - ["1", "2"], ["3", "1E-2.5"] is an invalid scientific notation number /// - ["1E2"], ["2"] is converted to 1E2/2 --> 100/2 --> 50/1 /// - ["1E2", "2"], ["3", "1E2"] is converted to 1E2*2/(3*1E2) --> 2/3 -pub(in crate::provider) fn convert_slices_to_fraction( +pub(crate) fn convert_slices_to_fraction( numerator_strings: &[String], denominator_strings: &[String], ) -> Result { @@ -406,7 +406,7 @@ fn test_convert_array_of_strings_to_fraction() { /// - "2/" is split into (["2"], ["1"]) /// - "1E2" is split into (["1E2"], ["1"]) /// - "1 2 * 3" is an invalid constant string -pub(in crate::provider) fn split_unit_term( +pub(crate) fn split_unit_term( constant_string: &str, ) -> Result<(Vec, Vec), DataError> { let split: Vec<&str> = constant_string.split('/').collect(); diff --git a/provider/datagen/src/transform/cldr/units/info.rs b/provider/bikeshed/src/units/info.rs similarity index 98% rename from provider/datagen/src/transform/cldr/units/info.rs rename to provider/bikeshed/src/units/info.rs index ef04a5d52c6..3c165a88d76 100644 --- a/provider/datagen/src/transform/cldr/units/info.rs +++ b/provider/bikeshed/src/units/info.rs @@ -4,11 +4,8 @@ use std::collections::{BTreeMap, HashSet}; -use crate::provider::transform::cldr::{ - cldr_serde::{self}, - units::helpers::ScientificNumber, -}; -use crate::provider::DatagenProvider; +use crate::DatagenProvider; +use crate::{cldr_serde, units::helpers::ScientificNumber}; use icu::experimental::units::{ measureunit::MeasureUnitParser, provider::{ConversionInfo, UnitsInfoV1, UnitsInfoV1Marker}, diff --git a/provider/bikeshed/src/units/mod.rs b/provider/bikeshed/src/units/mod.rs new file mode 100644 index 00000000000..c7d8db04c76 --- /dev/null +++ b/provider/bikeshed/src/units/mod.rs @@ -0,0 +1,7 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +pub(crate) mod data; +pub(crate) mod helpers; +pub(crate) mod info; diff --git a/provider/datagen/tests/data/cldr/cldr-bcp47/bcp47/timezone.json b/provider/bikeshed/tests/data/cldr/cldr-bcp47/bcp47/timezone.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-bcp47/bcp47/timezone.json rename to provider/bikeshed/tests/data/cldr/cldr-bcp47/bcp47/timezone.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/ar-EG/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/ar-EG/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/ar-EG/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/ar-EG/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/ar/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/ar/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/ar/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/ar/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/bn/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/bn/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/bn/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/bn/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/ccp/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/ccp/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/ccp/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/ccp/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/en-001/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/en-001/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/en-001/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/en-001/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/en-ZA/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/en-ZA/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/en-ZA/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/en-ZA/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/en/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/en/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/en/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/en/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/es-AR/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/es-AR/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/es-AR/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/es-AR/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/es/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/es/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/es/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/es/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/fil/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/fil/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/fil/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/fil/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/fr/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/fr/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/fr/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/fr/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/ja/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/ja/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/ja/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/ja/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/ru/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/ru/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/ru/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/ru/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/sr-Latn/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/sr-Latn/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/sr-Latn/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/sr-Latn/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/sr/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/sr/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/sr/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/sr/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/th/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/th/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/th/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/th/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/tr/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/tr/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/tr/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/tr/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/und/ca-buddhist.json b/provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/und/ca-buddhist.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-buddhist-full/main/und/ca-buddhist.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-buddhist-full/main/und/ca-buddhist.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/ar-EG/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/ar-EG/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/ar-EG/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/ar-EG/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/ar/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/ar/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/ar/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/ar/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/bn/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/bn/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/bn/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/bn/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/ccp/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/ccp/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/ccp/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/ccp/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/en-001/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/en-001/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/en-001/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/en-001/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/en-ZA/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/en-ZA/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/en-ZA/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/en-ZA/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/en/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/en/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/en/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/en/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/es-AR/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/es-AR/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/es-AR/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/es-AR/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/es/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/es/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/es/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/es/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/fil/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/fil/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/fil/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/fil/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/fr/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/fr/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/fr/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/fr/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/ja/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/ja/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/ja/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/ja/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/ru/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/ru/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/ru/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/ru/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/sr-Latn/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/sr-Latn/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/sr-Latn/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/sr-Latn/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/sr/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/sr/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/sr/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/sr/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/th/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/th/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/th/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/th/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/tr/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/tr/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/tr/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/tr/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/und/ca-chinese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/und/ca-chinese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-chinese-full/main/und/ca-chinese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-chinese-full/main/und/ca-chinese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/ar-EG/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/ar-EG/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/ar-EG/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/ar-EG/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/ar/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/ar/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/ar/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/ar/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/bn/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/bn/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/bn/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/bn/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/ccp/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/ccp/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/ccp/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/ccp/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/en-001/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/en-001/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/en-001/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/en-001/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/en-ZA/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/en-ZA/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/en-ZA/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/en-ZA/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/en/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/en/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/en/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/en/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/es-AR/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/es-AR/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/es-AR/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/es-AR/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/es/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/es/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/es/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/es/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/fil/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/fil/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/fil/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/fil/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/fr/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/fr/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/fr/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/fr/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/ja/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/ja/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/ja/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/ja/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/ru/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/ru/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/ru/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/ru/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/sr-Latn/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/sr-Latn/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/sr-Latn/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/sr-Latn/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/sr/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/sr/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/sr/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/sr/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/th/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/th/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/th/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/th/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/tr/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/tr/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/tr/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/tr/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/und/ca-coptic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/und/ca-coptic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-coptic-full/main/und/ca-coptic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-coptic-full/main/und/ca-coptic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/ar-EG/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/ar-EG/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/ar-EG/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/ar-EG/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/ar/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/ar/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/ar/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/ar/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/bn/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/bn/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/bn/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/bn/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/ccp/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/ccp/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/ccp/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/ccp/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/en-001/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/en-001/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/en-001/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/en-001/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/en-ZA/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/en-ZA/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/en-ZA/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/en-ZA/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/en/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/en/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/en/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/en/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/es-AR/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/es-AR/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/es-AR/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/es-AR/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/es/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/es/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/es/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/es/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/fil/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/fil/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/fil/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/fil/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/fr/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/fr/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/fr/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/fr/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/ja/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/ja/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/ja/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/ja/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/ru/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/ru/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/ru/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/ru/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/sr-Latn/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/sr-Latn/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/sr-Latn/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/sr-Latn/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/sr/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/sr/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/sr/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/sr/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/th/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/th/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/th/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/th/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/tr/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/tr/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/tr/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/tr/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/und/ca-dangi.json b/provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/und/ca-dangi.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-dangi-full/main/und/ca-dangi.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-dangi-full/main/und/ca-dangi.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ar-EG/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ar-EG/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ar-EG/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ar-EG/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ar-EG/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ar-EG/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ar-EG/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ar-EG/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ar/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ar/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ar/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ar/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ar/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ar/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ar/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ar/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/bn/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/bn/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/bn/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/bn/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/bn/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/bn/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/bn/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/bn/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ccp/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ccp/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ccp/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ccp/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ccp/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ccp/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ccp/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ccp/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/en-001/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/en-001/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/en-001/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/en-001/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/en-001/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/en-001/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/en-001/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/en-001/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/en-ZA/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/en-ZA/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/en-ZA/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/en-ZA/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/en-ZA/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/en-ZA/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/en-ZA/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/en-ZA/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/en/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/en/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/en/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/en/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/en/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/en/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/en/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/en/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/es-AR/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/es-AR/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/es-AR/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/es-AR/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/es-AR/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/es-AR/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/es-AR/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/es-AR/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/es/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/es/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/es/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/es/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/es/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/es/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/es/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/es/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/fil/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/fil/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/fil/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/fil/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/fil/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/fil/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/fil/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/fil/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/fr/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/fr/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/fr/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/fr/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/fr/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/fr/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/fr/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/fr/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ja/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ja/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ja/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ja/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ja/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ja/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ja/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ja/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ru/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ru/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ru/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ru/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ru/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ru/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/ru/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/ru/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/sr-Latn/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/sr-Latn/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/sr-Latn/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/sr-Latn/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/sr-Latn/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/sr-Latn/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/sr-Latn/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/sr-Latn/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/sr/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/sr/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/sr/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/sr/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/sr/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/sr/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/sr/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/sr/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/th/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/th/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/th/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/th/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/th/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/th/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/th/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/th/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/tr/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/tr/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/tr/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/tr/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/tr/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/tr/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/tr/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/tr/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/und/ca-ethiopic-amete-alem.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/und/ca-ethiopic-amete-alem.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/und/ca-ethiopic-amete-alem.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/und/ca-ethiopic-amete-alem.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/und/ca-ethiopic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/und/ca-ethiopic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-ethiopic-full/main/und/ca-ethiopic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-ethiopic-full/main/und/ca-ethiopic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/ar-EG/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/ar-EG/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/ar-EG/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/ar-EG/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/ar/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/ar/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/ar/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/ar/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/bn/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/bn/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/bn/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/bn/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/ccp/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/ccp/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/ccp/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/ccp/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/en-001/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/en-001/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/en-001/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/en-001/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/en-ZA/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/en-ZA/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/en-ZA/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/en-ZA/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/en/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/en/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/en/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/en/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/es-AR/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/es-AR/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/es-AR/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/es-AR/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/es/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/es/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/es/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/es/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/fil/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/fil/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/fil/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/fil/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/fr/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/fr/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/fr/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/fr/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/ja/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/ja/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/ja/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/ja/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/ru/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/ru/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/ru/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/ru/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/sr-Latn/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/sr-Latn/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/sr-Latn/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/sr-Latn/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/sr/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/sr/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/sr/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/sr/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/th/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/th/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/th/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/th/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/tr/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/tr/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/tr/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/tr/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/und/ca-hebrew.json b/provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/und/ca-hebrew.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-hebrew-full/main/und/ca-hebrew.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-hebrew-full/main/und/ca-hebrew.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/ar-EG/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/ar-EG/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/ar-EG/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/ar-EG/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/ar/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/ar/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/ar/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/ar/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/bn/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/bn/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/bn/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/bn/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/ccp/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/ccp/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/ccp/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/ccp/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/en-001/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/en-001/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/en-001/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/en-001/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/en-ZA/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/en-ZA/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/en-ZA/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/en-ZA/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/en/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/en/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/en/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/en/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/es-AR/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/es-AR/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/es-AR/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/es-AR/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/es/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/es/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/es/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/es/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/fil/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/fil/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/fil/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/fil/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/fr/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/fr/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/fr/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/fr/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/ja/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/ja/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/ja/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/ja/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/ru/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/ru/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/ru/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/ru/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/sr-Latn/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/sr-Latn/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/sr-Latn/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/sr-Latn/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/sr/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/sr/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/sr/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/sr/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/th/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/th/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/th/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/th/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/tr/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/tr/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/tr/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/tr/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/und/ca-indian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/und/ca-indian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-indian-full/main/und/ca-indian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-indian-full/main/und/ca-indian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/ar-EG/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/ar-EG/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/ar-EG/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/ar-EG/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/ar/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/ar/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/ar/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/ar/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/bn/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/bn/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/bn/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/bn/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/ccp/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/ccp/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/ccp/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/ccp/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/en-001/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/en-001/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/en-001/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/en-001/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/en-ZA/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/en-ZA/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/en-ZA/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/en-ZA/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/en/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/en/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/en/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/en/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/es-AR/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/es-AR/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/es-AR/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/es-AR/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/es/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/es/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/es/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/es/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/fil/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/fil/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/fil/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/fil/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/fr/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/fr/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/fr/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/fr/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/ja/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/ja/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/ja/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/ja/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/ru/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/ru/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/ru/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/ru/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/sr-Latn/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/sr-Latn/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/sr-Latn/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/sr-Latn/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/sr/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/sr/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/sr/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/sr/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/th/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/th/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/th/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/th/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/tr/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/tr/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/tr/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/tr/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/und/ca-islamic.json b/provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/und/ca-islamic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-islamic-full/main/und/ca-islamic.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-islamic-full/main/und/ca-islamic.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/ar-EG/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/ar-EG/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/ar-EG/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/ar-EG/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/ar/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/ar/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/ar/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/ar/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/bn/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/bn/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/bn/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/bn/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/ccp/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/ccp/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/ccp/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/ccp/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/en-001/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/en-001/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/en-001/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/en-001/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/en-ZA/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/en-ZA/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/en-ZA/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/en-ZA/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/en/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/en/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/en/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/en/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/es-AR/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/es-AR/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/es-AR/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/es-AR/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/es/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/es/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/es/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/es/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/fil/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/fil/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/fil/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/fil/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/fr/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/fr/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/fr/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/fr/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/ja/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/ja/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/ja/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/ja/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/ru/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/ru/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/ru/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/ru/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/sr-Latn/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/sr-Latn/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/sr-Latn/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/sr-Latn/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/sr/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/sr/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/sr/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/sr/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/th/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/th/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/th/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/th/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/tr/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/tr/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/tr/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/tr/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/und/ca-japanese.json b/provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/und/ca-japanese.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-japanese-full/main/und/ca-japanese.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-japanese-full/main/und/ca-japanese.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/ar-EG/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/ar-EG/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/ar-EG/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/ar-EG/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/ar/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/ar/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/ar/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/ar/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/bn/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/bn/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/bn/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/bn/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/ccp/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/ccp/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/ccp/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/ccp/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/en-001/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/en-001/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/en-001/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/en-001/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/en-ZA/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/en-ZA/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/en-ZA/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/en-ZA/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/en/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/en/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/en/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/en/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/es-AR/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/es-AR/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/es-AR/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/es-AR/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/es/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/es/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/es/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/es/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/fil/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/fil/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/fil/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/fil/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/fr/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/fr/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/fr/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/fr/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/ja/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/ja/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/ja/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/ja/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/ru/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/ru/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/ru/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/ru/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/sr-Latn/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/sr-Latn/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/sr-Latn/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/sr-Latn/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/sr/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/sr/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/sr/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/sr/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/th/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/th/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/th/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/th/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/tr/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/tr/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/tr/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/tr/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/und/ca-persian.json b/provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/und/ca-persian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-persian-full/main/und/ca-persian.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-persian-full/main/und/ca-persian.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/ar-EG/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/ar-EG/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/ar-EG/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/ar-EG/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/ar/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/ar/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/ar/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/ar/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/bn/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/bn/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/bn/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/bn/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/ccp/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/ccp/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/ccp/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/ccp/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/en-001/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/en-001/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/en-001/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/en-001/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/en-ZA/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/en-ZA/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/en-ZA/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/en-ZA/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/en/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/en/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/en/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/en/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/es-AR/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/es-AR/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/es-AR/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/es-AR/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/es/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/es/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/es/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/es/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/fil/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/fil/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/fil/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/fil/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/fr/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/fr/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/fr/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/fr/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/ja/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/ja/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/ja/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/ja/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/ru/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/ru/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/ru/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/ru/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/sr-Latn/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/sr-Latn/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/sr-Latn/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/sr-Latn/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/sr/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/sr/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/sr/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/sr/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/th/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/th/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/th/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/th/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/tr/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/tr/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/tr/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/tr/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/und/ca-roc.json b/provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/und/ca-roc.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-cal-roc-full/main/und/ca-roc.json rename to provider/bikeshed/tests/data/cldr/cldr-cal-roc-full/main/und/ca-roc.json diff --git a/provider/datagen/tests/data/cldr/cldr-core/coverageLevels.json b/provider/bikeshed/tests/data/cldr/cldr-core/coverageLevels.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-core/coverageLevels.json rename to provider/bikeshed/tests/data/cldr/cldr-core/coverageLevels.json diff --git a/provider/datagen/tests/data/cldr/cldr-core/scriptMetadata.json b/provider/bikeshed/tests/data/cldr/cldr-core/scriptMetadata.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-core/scriptMetadata.json rename to provider/bikeshed/tests/data/cldr/cldr-core/scriptMetadata.json diff --git a/provider/datagen/tests/data/cldr/cldr-core/supplemental/aliases.json b/provider/bikeshed/tests/data/cldr/cldr-core/supplemental/aliases.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-core/supplemental/aliases.json rename to provider/bikeshed/tests/data/cldr/cldr-core/supplemental/aliases.json diff --git a/provider/datagen/tests/data/cldr/cldr-core/supplemental/calendarData.json b/provider/bikeshed/tests/data/cldr/cldr-core/supplemental/calendarData.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-core/supplemental/calendarData.json rename to provider/bikeshed/tests/data/cldr/cldr-core/supplemental/calendarData.json diff --git a/provider/datagen/tests/data/cldr/cldr-core/supplemental/currencyData.json b/provider/bikeshed/tests/data/cldr/cldr-core/supplemental/currencyData.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-core/supplemental/currencyData.json rename to provider/bikeshed/tests/data/cldr/cldr-core/supplemental/currencyData.json diff --git a/provider/datagen/tests/data/cldr/cldr-core/supplemental/likelySubtags.json b/provider/bikeshed/tests/data/cldr/cldr-core/supplemental/likelySubtags.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-core/supplemental/likelySubtags.json rename to provider/bikeshed/tests/data/cldr/cldr-core/supplemental/likelySubtags.json diff --git a/provider/datagen/tests/data/cldr/cldr-core/supplemental/metaZones.json b/provider/bikeshed/tests/data/cldr/cldr-core/supplemental/metaZones.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-core/supplemental/metaZones.json rename to provider/bikeshed/tests/data/cldr/cldr-core/supplemental/metaZones.json diff --git a/provider/datagen/tests/data/cldr/cldr-core/supplemental/numberingSystems.json b/provider/bikeshed/tests/data/cldr/cldr-core/supplemental/numberingSystems.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-core/supplemental/numberingSystems.json rename to provider/bikeshed/tests/data/cldr/cldr-core/supplemental/numberingSystems.json diff --git a/provider/datagen/tests/data/cldr/cldr-core/supplemental/ordinals.json b/provider/bikeshed/tests/data/cldr/cldr-core/supplemental/ordinals.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-core/supplemental/ordinals.json rename to provider/bikeshed/tests/data/cldr/cldr-core/supplemental/ordinals.json diff --git a/provider/datagen/tests/data/cldr/cldr-core/supplemental/parentLocales.json b/provider/bikeshed/tests/data/cldr/cldr-core/supplemental/parentLocales.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-core/supplemental/parentLocales.json rename to provider/bikeshed/tests/data/cldr/cldr-core/supplemental/parentLocales.json diff --git a/provider/datagen/tests/data/cldr/cldr-core/supplemental/pluralRanges.json b/provider/bikeshed/tests/data/cldr/cldr-core/supplemental/pluralRanges.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-core/supplemental/pluralRanges.json rename to provider/bikeshed/tests/data/cldr/cldr-core/supplemental/pluralRanges.json diff --git a/provider/datagen/tests/data/cldr/cldr-core/supplemental/plurals.json b/provider/bikeshed/tests/data/cldr/cldr-core/supplemental/plurals.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-core/supplemental/plurals.json rename to provider/bikeshed/tests/data/cldr/cldr-core/supplemental/plurals.json diff --git a/provider/datagen/tests/data/cldr/cldr-core/supplemental/units.json b/provider/bikeshed/tests/data/cldr/cldr-core/supplemental/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-core/supplemental/units.json rename to provider/bikeshed/tests/data/cldr/cldr-core/supplemental/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-core/supplemental/weekData.json b/provider/bikeshed/tests/data/cldr/cldr-core/supplemental/weekData.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-core/supplemental/weekData.json rename to provider/bikeshed/tests/data/cldr/cldr-core/supplemental/weekData.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ar-EG/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ar-EG/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ar-EG/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ar-EG/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ar-EG/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ar-EG/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ar-EG/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ar-EG/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ar-EG/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ar-EG/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ar-EG/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ar-EG/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ar-EG/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ar-EG/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ar-EG/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ar-EG/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ar/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ar/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ar/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ar/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ar/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ar/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ar/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ar/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ar/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ar/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ar/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ar/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ar/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ar/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ar/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ar/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/bn/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/bn/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/bn/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/bn/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/bn/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/bn/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/bn/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/bn/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/bn/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/bn/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/bn/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/bn/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/bn/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/bn/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/bn/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/bn/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ccp/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ccp/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ccp/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ccp/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ccp/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ccp/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ccp/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ccp/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ccp/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ccp/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ccp/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ccp/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ccp/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ccp/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ccp/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ccp/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/cs/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/cs/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/cs/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/cs/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/cs/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/cs/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/cs/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/cs/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/en-001/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en-001/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/en-001/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en-001/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/en-001/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en-001/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/en-001/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en-001/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/en-001/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en-001/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/en-001/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en-001/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/en-001/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en-001/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/en-001/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en-001/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/en-ZA/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en-ZA/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/en-ZA/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en-ZA/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/en-ZA/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en-ZA/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/en-ZA/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en-ZA/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/en-ZA/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en-ZA/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/en-ZA/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en-ZA/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/en-ZA/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en-ZA/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/en-ZA/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en-ZA/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/en/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/en/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/en/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/en/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/en/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/en/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/en/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/en/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/en/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/es-AR/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/es-AR/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/es-AR/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/es-AR/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/es-AR/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/es-AR/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/es-AR/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/es-AR/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/es-AR/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/es-AR/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/es-AR/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/es-AR/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/es-AR/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/es-AR/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/es-AR/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/es-AR/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/es/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/es/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/es/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/es/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/es/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/es/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/es/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/es/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/es/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/es/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/es/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/es/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/es/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/es/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/es/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/es/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/fil/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/fil/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/fil/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/fil/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/fil/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/fil/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/fil/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/fil/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/fil/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/fil/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/fil/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/fil/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/fil/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/fil/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/fil/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/fil/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/fr/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/fr/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/fr/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/fr/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/fr/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/fr/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/fr/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/fr/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/fr/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/fr/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/fr/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/fr/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/fr/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/fr/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/fr/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/fr/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/haw/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/haw/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/haw/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/haw/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/haw/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/haw/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/haw/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/haw/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ja/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ja/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ja/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ja/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ja/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ja/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ja/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ja/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ja/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ja/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ja/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ja/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ja/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ja/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ja/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ja/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ru/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ru/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ru/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ru/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ru/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ru/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ru/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ru/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ru/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ru/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ru/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ru/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/ru/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ru/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/ru/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/ru/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/sr-Latn/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/sr-Latn/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/sr-Latn/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/sr-Latn/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/sr-Latn/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/sr-Latn/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/sr-Latn/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/sr-Latn/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/sr-Latn/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/sr-Latn/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/sr-Latn/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/sr-Latn/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/sr-Latn/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/sr-Latn/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/sr-Latn/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/sr-Latn/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/sr/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/sr/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/sr/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/sr/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/sr/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/sr/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/sr/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/sr/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/sr/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/sr/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/sr/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/sr/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/sr/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/sr/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/sr/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/sr/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/th/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/th/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/th/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/th/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/th/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/th/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/th/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/th/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/th/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/th/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/th/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/th/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/th/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/th/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/th/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/th/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/tr/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/tr/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/tr/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/tr/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/tr/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/tr/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/tr/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/tr/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/tr/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/tr/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/tr/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/tr/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/tr/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/tr/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/tr/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/tr/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/und/ca-generic.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/und/ca-generic.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/und/ca-generic.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/und/ca-generic.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/und/ca-gregorian.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/und/ca-gregorian.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/und/ca-gregorian.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/und/ca-gregorian.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/und/dateFields.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/und/dateFields.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/und/dateFields.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/und/dateFields.json diff --git a/provider/datagen/tests/data/cldr/cldr-dates-full/main/und/timeZoneNames.json b/provider/bikeshed/tests/data/cldr/cldr-dates-full/main/und/timeZoneNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-dates-full/main/und/timeZoneNames.json rename to provider/bikeshed/tests/data/cldr/cldr-dates-full/main/und/timeZoneNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ar-EG/languages.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ar-EG/languages.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ar-EG/languages.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ar-EG/languages.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ar-EG/scripts.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ar-EG/scripts.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ar-EG/scripts.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ar-EG/scripts.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ar-EG/territories.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ar-EG/territories.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ar-EG/territories.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ar-EG/territories.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ar-EG/variants.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ar-EG/variants.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ar-EG/variants.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ar-EG/variants.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ar/languages.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ar/languages.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ar/languages.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ar/languages.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ar/scripts.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ar/scripts.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ar/scripts.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ar/scripts.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ar/territories.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ar/territories.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ar/territories.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ar/territories.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ar/variants.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ar/variants.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ar/variants.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ar/variants.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/bn/languages.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/bn/languages.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/bn/languages.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/bn/languages.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/bn/scripts.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/bn/scripts.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/bn/scripts.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/bn/scripts.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/bn/territories.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/bn/territories.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/bn/territories.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/bn/territories.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ccp/languages.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ccp/languages.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ccp/languages.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ccp/languages.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ccp/scripts.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ccp/scripts.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ccp/scripts.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ccp/scripts.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ccp/territories.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ccp/territories.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ccp/territories.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ccp/territories.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/en-001/languages.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en-001/languages.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/en-001/languages.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en-001/languages.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/en-001/scripts.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en-001/scripts.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/en-001/scripts.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en-001/scripts.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/en-001/territories.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en-001/territories.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/en-001/territories.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en-001/territories.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/en-001/variants.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en-001/variants.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/en-001/variants.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en-001/variants.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/en-ZA/languages.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en-ZA/languages.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/en-ZA/languages.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en-ZA/languages.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/en-ZA/scripts.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en-ZA/scripts.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/en-ZA/scripts.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en-ZA/scripts.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/en-ZA/territories.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en-ZA/territories.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/en-ZA/territories.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en-ZA/territories.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/en-ZA/variants.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en-ZA/variants.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/en-ZA/variants.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en-ZA/variants.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/en/languages.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en/languages.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/en/languages.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en/languages.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/en/scripts.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en/scripts.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/en/scripts.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en/scripts.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/en/territories.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en/territories.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/en/territories.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en/territories.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/en/variants.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en/variants.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/en/variants.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/en/variants.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/es-AR/languages.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/es-AR/languages.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/es-AR/languages.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/es-AR/languages.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/es-AR/scripts.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/es-AR/scripts.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/es-AR/scripts.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/es-AR/scripts.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/es-AR/territories.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/es-AR/territories.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/es-AR/territories.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/es-AR/territories.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/es-AR/variants.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/es-AR/variants.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/es-AR/variants.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/es-AR/variants.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/es/languages.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/es/languages.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/es/languages.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/es/languages.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/es/scripts.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/es/scripts.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/es/scripts.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/es/scripts.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/es/territories.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/es/territories.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/es/territories.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/es/territories.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/es/variants.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/es/variants.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/es/variants.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/es/variants.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/fil/languages.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/fil/languages.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/fil/languages.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/fil/languages.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/fil/scripts.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/fil/scripts.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/fil/scripts.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/fil/scripts.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/fil/territories.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/fil/territories.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/fil/territories.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/fil/territories.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/fil/variants.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/fil/variants.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/fil/variants.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/fil/variants.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/fr/languages.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/fr/languages.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/fr/languages.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/fr/languages.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/fr/scripts.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/fr/scripts.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/fr/scripts.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/fr/scripts.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/fr/territories.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/fr/territories.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/fr/territories.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/fr/territories.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/fr/variants.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/fr/variants.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/fr/variants.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/fr/variants.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ja/languages.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ja/languages.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ja/languages.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ja/languages.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ja/scripts.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ja/scripts.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ja/scripts.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ja/scripts.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ja/territories.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ja/territories.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ja/territories.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ja/territories.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ja/variants.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ja/variants.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ja/variants.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ja/variants.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ru/languages.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ru/languages.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ru/languages.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ru/languages.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ru/scripts.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ru/scripts.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ru/scripts.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ru/scripts.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ru/territories.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ru/territories.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ru/territories.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ru/territories.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/ru/variants.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ru/variants.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/ru/variants.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/ru/variants.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/sr-Latn/languages.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/sr-Latn/languages.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/sr-Latn/languages.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/sr-Latn/languages.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/sr-Latn/scripts.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/sr-Latn/scripts.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/sr-Latn/scripts.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/sr-Latn/scripts.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/sr-Latn/territories.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/sr-Latn/territories.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/sr-Latn/territories.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/sr-Latn/territories.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/sr-Latn/variants.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/sr-Latn/variants.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/sr-Latn/variants.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/sr-Latn/variants.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/sr/languages.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/sr/languages.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/sr/languages.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/sr/languages.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/sr/scripts.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/sr/scripts.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/sr/scripts.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/sr/scripts.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/sr/territories.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/sr/territories.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/sr/territories.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/sr/territories.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/sr/variants.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/sr/variants.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/sr/variants.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/sr/variants.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/th/languages.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/th/languages.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/th/languages.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/th/languages.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/th/scripts.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/th/scripts.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/th/scripts.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/th/scripts.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/th/territories.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/th/territories.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/th/territories.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/th/territories.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/th/variants.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/th/variants.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/th/variants.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/th/variants.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/tr/languages.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/tr/languages.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/tr/languages.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/tr/languages.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/tr/scripts.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/tr/scripts.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/tr/scripts.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/tr/scripts.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/tr/territories.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/tr/territories.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/tr/territories.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/tr/territories.json diff --git a/provider/datagen/tests/data/cldr/cldr-localenames-full/main/tr/variants.json b/provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/tr/variants.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-localenames-full/main/tr/variants.json rename to provider/bikeshed/tests/data/cldr/cldr-localenames-full/main/tr/variants.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/ar-EG/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ar-EG/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/ar-EG/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ar-EG/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/ar-EG/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ar-EG/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/ar-EG/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ar-EG/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/ar/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ar/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/ar/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ar/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/ar/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ar/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/ar/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ar/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/bn/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/bn/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/bn/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/bn/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/bn/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/bn/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/bn/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/bn/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/ccp/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ccp/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/ccp/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ccp/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/ccp/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ccp/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/ccp/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ccp/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/en-001/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/en-001/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/en-001/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/en-001/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/en-001/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/en-001/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/en-001/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/en-001/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/en-ZA/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/en-ZA/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/en-ZA/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/en-ZA/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/en-ZA/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/en-ZA/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/en-ZA/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/en-ZA/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/en/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/en/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/en/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/en/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/en/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/en/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/en/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/en/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/es-AR/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/es-AR/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/es-AR/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/es-AR/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/es-AR/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/es-AR/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/es-AR/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/es-AR/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/es/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/es/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/es/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/es/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/es/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/es/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/es/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/es/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/fil/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/fil/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/fil/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/fil/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/fil/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/fil/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/fil/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/fil/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/fr/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/fr/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/fr/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/fr/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/fr/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/fr/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/fr/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/fr/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/ja/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ja/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/ja/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ja/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/ja/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ja/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/ja/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ja/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/ru/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ru/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/ru/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ru/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/ru/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ru/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/ru/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/ru/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/sr-Latn/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/sr-Latn/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/sr-Latn/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/sr-Latn/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/sr-Latn/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/sr-Latn/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/sr-Latn/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/sr-Latn/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/sr/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/sr/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/sr/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/sr/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/sr/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/sr/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/sr/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/sr/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/th/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/th/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/th/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/th/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/th/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/th/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/th/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/th/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/tr/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/tr/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/tr/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/tr/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/tr/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/tr/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/tr/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/tr/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/und/characters.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/und/characters.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/und/characters.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/und/characters.json diff --git a/provider/datagen/tests/data/cldr/cldr-misc-full/main/und/listPatterns.json b/provider/bikeshed/tests/data/cldr/cldr-misc-full/main/und/listPatterns.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-misc-full/main/und/listPatterns.json rename to provider/bikeshed/tests/data/cldr/cldr-misc-full/main/und/listPatterns.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/ar-EG/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ar-EG/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/ar-EG/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ar-EG/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/ar-EG/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ar-EG/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/ar-EG/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ar-EG/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/ar/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ar/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/ar/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ar/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/ar/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ar/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/ar/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ar/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/bn/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/bn/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/bn/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/bn/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/bn/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/bn/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/bn/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/bn/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/ccp/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ccp/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/ccp/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ccp/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/ccp/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ccp/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/ccp/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ccp/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/en-001/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/en-001/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/en-001/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/en-001/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/en-001/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/en-001/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/en-001/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/en-001/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/en-ZA/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/en-ZA/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/en-ZA/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/en-ZA/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/en-ZA/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/en-ZA/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/en-ZA/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/en-ZA/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/en/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/en/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/en/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/en/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/en/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/en/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/en/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/en/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/es-AR/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/es-AR/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/es-AR/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/es-AR/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/es-AR/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/es-AR/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/es-AR/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/es-AR/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/es/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/es/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/es/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/es/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/es/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/es/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/es/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/es/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/fil/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/fil/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/fil/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/fil/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/fil/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/fil/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/fil/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/fil/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/fr/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/fr/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/fr/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/fr/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/fr/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/fr/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/fr/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/fr/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/ja/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ja/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/ja/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ja/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/ja/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ja/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/ja/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ja/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/ru/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ru/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/ru/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ru/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/ru/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ru/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/ru/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/ru/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/sr-Latn/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/sr-Latn/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/sr-Latn/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/sr-Latn/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/sr-Latn/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/sr-Latn/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/sr-Latn/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/sr-Latn/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/sr/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/sr/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/sr/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/sr/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/sr/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/sr/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/sr/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/sr/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/th/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/th/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/th/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/th/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/th/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/th/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/th/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/th/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/tr/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/tr/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/tr/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/tr/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/tr/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/tr/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/tr/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/tr/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/und/currencies.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/und/currencies.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/und/currencies.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/und/currencies.json diff --git a/provider/datagen/tests/data/cldr/cldr-numbers-full/main/und/numbers.json b/provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/und/numbers.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-numbers-full/main/und/numbers.json rename to provider/bikeshed/tests/data/cldr/cldr-numbers-full/main/und/numbers.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/ar-EG/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/ar-EG/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/ar-EG/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/ar-EG/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/ar/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/ar/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/ar/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/ar/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/bn/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/bn/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/bn/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/bn/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/ccp/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/ccp/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/ccp/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/ccp/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/en-001/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/en-001/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/en-001/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/en-001/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/en-ZA/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/en-ZA/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/en-ZA/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/en-ZA/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/en/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/en/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/en/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/en/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/es-AR/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/es-AR/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/es-AR/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/es-AR/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/es/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/es/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/es/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/es/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/fil/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/fil/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/fil/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/fil/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/fr/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/fr/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/fr/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/fr/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/ja/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/ja/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/ja/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/ja/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/ru/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/ru/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/ru/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/ru/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/sr-Latn/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/sr-Latn/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/sr-Latn/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/sr-Latn/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/sr/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/sr/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/sr/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/sr/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/th/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/th/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/th/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/th/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/tr/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/tr/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/tr/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/tr/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-person-names-full/main/und/personNames.json b/provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/und/personNames.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-person-names-full/main/und/personNames.json rename to provider/bikeshed/tests/data/cldr/cldr-person-names-full/main/und/personNames.json diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Any-Publishing/metadata.json b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Any-Publishing/metadata.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Any-Publishing/metadata.json rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Any-Publishing/metadata.json diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Any-Publishing/source.txt b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Any-Publishing/source.txt similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Any-Publishing/source.txt rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Any-Publishing/source.txt diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Bengali-Arabic/metadata.json b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Bengali-Arabic/metadata.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Bengali-Arabic/metadata.json rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Bengali-Arabic/metadata.json diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Bengali-Arabic/source.txt b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Bengali-Arabic/source.txt similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Bengali-Arabic/source.txt rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Bengali-Arabic/source.txt diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Bengali-InterIndic/metadata.json b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Bengali-InterIndic/metadata.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Bengali-InterIndic/metadata.json rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Bengali-InterIndic/metadata.json diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Bengali-InterIndic/source.txt b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Bengali-InterIndic/source.txt similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Bengali-InterIndic/source.txt rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Bengali-InterIndic/source.txt diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/InterIndic-Arabic/metadata.json b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/InterIndic-Arabic/metadata.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/InterIndic-Arabic/metadata.json rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/InterIndic-Arabic/metadata.json diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/InterIndic-Arabic/source.txt b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/InterIndic-Arabic/source.txt similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/InterIndic-Arabic/source.txt rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/InterIndic-Arabic/source.txt diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Latin-ASCII/metadata.json b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Latin-ASCII/metadata.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Latin-ASCII/metadata.json rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Latin-ASCII/metadata.json diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Latin-ASCII/source.txt b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Latin-ASCII/source.txt similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Latin-ASCII/source.txt rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Latin-ASCII/source.txt diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-CursorFilters/metadata.json b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-CursorFilters/metadata.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-CursorFilters/metadata.json rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-CursorFilters/metadata.json diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-CursorFilters/source.txt b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-CursorFilters/source.txt similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-CursorFilters/source.txt rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-CursorFilters/source.txt diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-EmptyMatches/metadata.json b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-EmptyMatches/metadata.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-EmptyMatches/metadata.json rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-EmptyMatches/metadata.json diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-EmptyMatches/source.txt b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-EmptyMatches/source.txt similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-EmptyMatches/source.txt rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-EmptyMatches/source.txt diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-HexRustWrapper/metadata.json b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-HexRustWrapper/metadata.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-HexRustWrapper/metadata.json rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-HexRustWrapper/metadata.json diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-HexRustWrapper/source.txt b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-HexRustWrapper/source.txt similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-HexRustWrapper/source.txt rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-HexRustWrapper/source.txt diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-HexUnicodeWrapper/metadata.json b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-HexUnicodeWrapper/metadata.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-HexUnicodeWrapper/metadata.json rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-HexUnicodeWrapper/metadata.json diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-HexUnicodeWrapper/source.txt b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-HexUnicodeWrapper/source.txt similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-HexUnicodeWrapper/source.txt rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-HexUnicodeWrapper/source.txt diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-NielsFunctionalityTest/metadata.json b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-NielsFunctionalityTest/metadata.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-NielsFunctionalityTest/metadata.json rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-NielsFunctionalityTest/metadata.json diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-NielsFunctionalityTest/source.txt b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-NielsFunctionalityTest/source.txt similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-NielsFunctionalityTest/source.txt rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-NielsFunctionalityTest/source.txt diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteA/metadata.json b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteA/metadata.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteA/metadata.json rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteA/metadata.json diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteA/source.txt b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteA/source.txt similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteA/source.txt rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteA/source.txt diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteRoot/metadata.json b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteRoot/metadata.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteRoot/metadata.json rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteRoot/metadata.json diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteRoot/source.txt b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteRoot/source.txt similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteRoot/source.txt rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteRoot/source.txt diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/de-ASCII/metadata.json b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/de-ASCII/metadata.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/de-ASCII/metadata.json rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/de-ASCII/metadata.json diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/de-ASCII/source.txt b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/de-ASCII/source.txt similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/de-ASCII/source.txt rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/de-ASCII/source.txt diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/el-el_Latn-BGN/metadata.json b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/el-el_Latn-BGN/metadata.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/el-el_Latn-BGN/metadata.json rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/el-el_Latn-BGN/metadata.json diff --git a/provider/datagen/tests/data/cldr/cldr-transforms-full/main/el-el_Latn-BGN/source.txt b/provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/el-el_Latn-BGN/source.txt similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-transforms-full/main/el-el_Latn-BGN/source.txt rename to provider/bikeshed/tests/data/cldr/cldr-transforms-full/main/el-el_Latn-BGN/source.txt diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/ar-EG/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/ar-EG/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/ar-EG/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/ar-EG/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/ar/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/ar/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/ar/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/ar/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/bn/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/bn/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/bn/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/bn/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/ccp/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/ccp/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/ccp/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/ccp/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/en-001/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/en-001/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/en-001/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/en-001/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/en-ZA/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/en-ZA/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/en-ZA/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/en-ZA/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/en/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/en/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/en/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/en/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/es-AR/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/es-AR/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/es-AR/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/es-AR/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/es/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/es/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/es/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/es/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/fil/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/fil/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/fil/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/fil/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/fr/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/fr/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/fr/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/fr/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/ja/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/ja/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/ja/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/ja/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/ru/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/ru/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/ru/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/ru/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/sr-Latn/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/sr-Latn/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/sr-Latn/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/sr-Latn/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/sr/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/sr/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/sr/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/sr/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/th/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/th/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/th/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/th/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/tr/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/tr/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/tr/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/tr/units.json diff --git a/provider/datagen/tests/data/cldr/cldr-units-full/main/und/units.json b/provider/bikeshed/tests/data/cldr/cldr-units-full/main/und/units.json similarity index 100% rename from provider/datagen/tests/data/cldr/cldr-units-full/main/und/units.json rename to provider/bikeshed/tests/data/cldr/cldr-units-full/main/und/units.json diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ar_compat_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ar_compat_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ar_compat_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ar_compat_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ar_compat_meta.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ar_compat_meta.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ar_compat_meta.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ar_compat_meta.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ar_compat_reord.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ar_compat_reord.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ar_compat_reord.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ar_compat_reord.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ar_standard_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ar_standard_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ar_standard_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ar_standard_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ar_standard_meta.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ar_standard_meta.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ar_standard_meta.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ar_standard_meta.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ar_standard_reord.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ar_standard_reord.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ar_standard_reord.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ar_standard_reord.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/bn_standard_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/bn_standard_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/bn_standard_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/bn_standard_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/bn_standard_meta.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/bn_standard_meta.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/bn_standard_meta.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/bn_standard_meta.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/bn_standard_reord.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/bn_standard_reord.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/bn_standard_reord.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/bn_standard_reord.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/bn_traditional_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/bn_traditional_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/bn_traditional_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/bn_traditional_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/bn_traditional_meta.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/bn_traditional_meta.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/bn_traditional_meta.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/bn_traditional_meta.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/bn_traditional_reord.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/bn_traditional_reord.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/bn_traditional_reord.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/bn_traditional_reord.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/es_standard_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/es_standard_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/es_standard_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/es_standard_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/es_standard_meta.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/es_standard_meta.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/es_standard_meta.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/es_standard_meta.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/es_traditional_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/es_traditional_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/es_traditional_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/es_traditional_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/es_traditional_meta.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/es_traditional_meta.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/es_traditional_meta.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/es_traditional_meta.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/fil_standard_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/fil_standard_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/fil_standard_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/fil_standard_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/fil_standard_meta.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/fil_standard_meta.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/fil_standard_meta.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/fil_standard_meta.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ja_standard_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ja_standard_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ja_standard_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ja_standard_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ja_standard_meta.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ja_standard_meta.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ja_standard_meta.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ja_standard_meta.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ja_standard_reord.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ja_standard_reord.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ja_standard_reord.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ja_standard_reord.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ja_unihan_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ja_unihan_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ja_unihan_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ja_unihan_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ja_unihan_meta.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ja_unihan_meta.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ja_unihan_meta.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ja_unihan_meta.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ja_unihan_reord.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ja_unihan_reord.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ja_unihan_reord.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ja_unihan_reord.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ko_search_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ko_search_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ko_search_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ko_search_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ko_searchjl_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ko_searchjl_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ko_searchjl_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ko_searchjl_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ko_standard_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ko_standard_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ko_standard_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ko_standard_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ko_unihan_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ko_unihan_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ko_unihan_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ko_unihan_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/root_emoji_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/root_emoji_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/root_emoji_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/root_emoji_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/root_emoji_meta.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/root_emoji_meta.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/root_emoji_meta.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/root_emoji_meta.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/root_eor_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/root_eor_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/root_eor_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/root_eor_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/root_eor_meta.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/root_eor_meta.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/root_eor_meta.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/root_eor_meta.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/root_standard_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/root_standard_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/root_standard_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/root_standard_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/root_standard_dia.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/root_standard_dia.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/root_standard_dia.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/root_standard_dia.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/root_standard_jamo.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/root_standard_jamo.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/root_standard_jamo.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/root_standard_jamo.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/root_standard_meta.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/root_standard_meta.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/root_standard_meta.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/root_standard_meta.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/root_standard_prim.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/root_standard_prim.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/root_standard_prim.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/root_standard_prim.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ru_standard_meta.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ru_standard_meta.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ru_standard_meta.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ru_standard_meta.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/ru_standard_reord.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/ru_standard_reord.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/ru_standard_reord.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/ru_standard_reord.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/sr_Latn_standard_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/sr_Latn_standard_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/sr_Latn_standard_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/sr_Latn_standard_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/sr_Latn_standard_meta.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/sr_Latn_standard_meta.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/sr_Latn_standard_meta.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/sr_Latn_standard_meta.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/sr_Latn_standard_reord.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/sr_Latn_standard_reord.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/sr_Latn_standard_reord.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/sr_Latn_standard_reord.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/sr_standard_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/sr_standard_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/sr_standard_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/sr_standard_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/sr_standard_meta.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/sr_standard_meta.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/sr_standard_meta.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/sr_standard_meta.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/sr_standard_reord.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/sr_standard_reord.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/sr_standard_reord.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/sr_standard_reord.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/th_standard_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/th_standard_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/th_standard_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/th_standard_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/th_standard_meta.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/th_standard_meta.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/th_standard_meta.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/th_standard_meta.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/th_standard_reord.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/th_standard_reord.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/th_standard_reord.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/th_standard_reord.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/tr_standard_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/tr_standard_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/tr_standard_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/tr_standard_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/tr_standard_meta.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/tr_standard_meta.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/tr_standard_meta.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/tr_standard_meta.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/zh_big5han_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/zh_big5han_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/zh_big5han_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/zh_big5han_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/zh_gb2312han_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/zh_gb2312han_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/zh_gb2312han_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/zh_gb2312han_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/zh_pinyin_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/zh_pinyin_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/zh_pinyin_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/zh_pinyin_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/zh_stroke_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/zh_stroke_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/zh_stroke_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/zh_stroke_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/zh_unihan_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/zh_unihan_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/zh_unihan_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/zh_unihan_data.toml diff --git a/provider/datagen/tests/data/icuexport/collation/implicithan/zh_zhuyin_data.toml b/provider/bikeshed/tests/data/icuexport/collation/implicithan/zh_zhuyin_data.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/collation/implicithan/zh_zhuyin_data.toml rename to provider/bikeshed/tests/data/icuexport/collation/implicithan/zh_zhuyin_data.toml diff --git a/provider/datagen/tests/data/icuexport/norm/small/compositions.toml b/provider/bikeshed/tests/data/icuexport/norm/small/compositions.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/norm/small/compositions.toml rename to provider/bikeshed/tests/data/icuexport/norm/small/compositions.toml diff --git a/provider/datagen/tests/data/icuexport/norm/small/decompositionex.toml b/provider/bikeshed/tests/data/icuexport/norm/small/decompositionex.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/norm/small/decompositionex.toml rename to provider/bikeshed/tests/data/icuexport/norm/small/decompositionex.toml diff --git a/provider/datagen/tests/data/icuexport/norm/small/nfd.toml b/provider/bikeshed/tests/data/icuexport/norm/small/nfd.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/norm/small/nfd.toml rename to provider/bikeshed/tests/data/icuexport/norm/small/nfd.toml diff --git a/provider/datagen/tests/data/icuexport/norm/small/nfdex.toml b/provider/bikeshed/tests/data/icuexport/norm/small/nfdex.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/norm/small/nfdex.toml rename to provider/bikeshed/tests/data/icuexport/norm/small/nfdex.toml diff --git a/provider/datagen/tests/data/icuexport/norm/small/nfkd.toml b/provider/bikeshed/tests/data/icuexport/norm/small/nfkd.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/norm/small/nfkd.toml rename to provider/bikeshed/tests/data/icuexport/norm/small/nfkd.toml diff --git a/provider/datagen/tests/data/icuexport/norm/small/nfkdex.toml b/provider/bikeshed/tests/data/icuexport/norm/small/nfkdex.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/norm/small/nfkdex.toml rename to provider/bikeshed/tests/data/icuexport/norm/small/nfkdex.toml diff --git a/provider/datagen/tests/data/icuexport/norm/small/uts46d.toml b/provider/bikeshed/tests/data/icuexport/norm/small/uts46d.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/norm/small/uts46d.toml rename to provider/bikeshed/tests/data/icuexport/norm/small/uts46d.toml diff --git a/provider/datagen/tests/data/icuexport/segmenter/dictionary/burmesedict.toml b/provider/bikeshed/tests/data/icuexport/segmenter/dictionary/burmesedict.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/segmenter/dictionary/burmesedict.toml rename to provider/bikeshed/tests/data/icuexport/segmenter/dictionary/burmesedict.toml diff --git a/provider/datagen/tests/data/icuexport/segmenter/dictionary/cjdict.toml b/provider/bikeshed/tests/data/icuexport/segmenter/dictionary/cjdict.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/segmenter/dictionary/cjdict.toml rename to provider/bikeshed/tests/data/icuexport/segmenter/dictionary/cjdict.toml diff --git a/provider/datagen/tests/data/icuexport/segmenter/dictionary/khmerdict.toml b/provider/bikeshed/tests/data/icuexport/segmenter/dictionary/khmerdict.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/segmenter/dictionary/khmerdict.toml rename to provider/bikeshed/tests/data/icuexport/segmenter/dictionary/khmerdict.toml diff --git a/provider/datagen/tests/data/icuexport/segmenter/dictionary/laodict.toml b/provider/bikeshed/tests/data/icuexport/segmenter/dictionary/laodict.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/segmenter/dictionary/laodict.toml rename to provider/bikeshed/tests/data/icuexport/segmenter/dictionary/laodict.toml diff --git a/provider/datagen/tests/data/icuexport/segmenter/dictionary/thaidict.toml b/provider/bikeshed/tests/data/icuexport/segmenter/dictionary/thaidict.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/segmenter/dictionary/thaidict.toml rename to provider/bikeshed/tests/data/icuexport/segmenter/dictionary/thaidict.toml diff --git a/provider/datagen/tests/data/icuexport/ucase/small/ucase.toml b/provider/bikeshed/tests/data/icuexport/ucase/small/ucase.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/ucase/small/ucase.toml rename to provider/bikeshed/tests/data/icuexport/ucase/small/ucase.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/AHex.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/AHex.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/AHex.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/AHex.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Alpha.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Alpha.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Alpha.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Alpha.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Basic_Emoji.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Basic_Emoji.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Basic_Emoji.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Basic_Emoji.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Bidi_C.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Bidi_C.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Bidi_C.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Bidi_C.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Bidi_M.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Bidi_M.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Bidi_M.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Bidi_M.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/CI.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/CI.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/CI.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/CI.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/CWCF.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/CWCF.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/CWCF.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/CWCF.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/CWCM.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/CWCM.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/CWCM.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/CWCM.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/CWKCF.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/CWKCF.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/CWKCF.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/CWKCF.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/CWL.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/CWL.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/CWL.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/CWL.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/CWT.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/CWT.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/CWT.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/CWT.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/CWU.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/CWU.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/CWU.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/CWU.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Cased.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Cased.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Cased.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Cased.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Comp_Ex.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Comp_Ex.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Comp_Ex.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Comp_Ex.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/DI.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/DI.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/DI.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/DI.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Dash.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Dash.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Dash.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Dash.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Dep.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Dep.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Dep.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Dep.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Dia.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Dia.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Dia.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Dia.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/EBase.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/EBase.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/EBase.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/EBase.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/EComp.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/EComp.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/EComp.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/EComp.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/EMod.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/EMod.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/EMod.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/EMod.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/EPres.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/EPres.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/EPres.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/EPres.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Emoji.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Emoji.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Emoji.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Emoji.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Ext.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Ext.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Ext.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Ext.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/ExtPict.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/ExtPict.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/ExtPict.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/ExtPict.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/GCB.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/GCB.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/GCB.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/GCB.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Gr_Base.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Gr_Base.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Gr_Base.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Gr_Base.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Gr_Ext.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Gr_Ext.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Gr_Ext.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Gr_Ext.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Gr_Link.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Gr_Link.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Gr_Link.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Gr_Link.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Hex.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Hex.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Hex.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Hex.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Hyphen.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Hyphen.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Hyphen.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Hyphen.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/IDC.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/IDC.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/IDC.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/IDC.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/IDS.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/IDS.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/IDS.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/IDS.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/IDSB.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/IDSB.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/IDSB.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/IDSB.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/IDST.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/IDST.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/IDST.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/IDST.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Ideo.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Ideo.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Ideo.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Ideo.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/InSC.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/InSC.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/InSC.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/InSC.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Join_C.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Join_C.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Join_C.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Join_C.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/LOE.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/LOE.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/LOE.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/LOE.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Lower.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Lower.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Lower.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Lower.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Math.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Math.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Math.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Math.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/NChar.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/NChar.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/NChar.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/NChar.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/PCM.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/PCM.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/PCM.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/PCM.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Pat_Syn.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Pat_Syn.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Pat_Syn.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Pat_Syn.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Pat_WS.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Pat_WS.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Pat_WS.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Pat_WS.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/QMark.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/QMark.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/QMark.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/QMark.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/RI.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/RI.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/RI.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/RI.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Radical.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Radical.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Radical.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Radical.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/SB.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/SB.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/SB.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/SB.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/SD.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/SD.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/SD.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/SD.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/STerm.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/STerm.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/STerm.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/STerm.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Sensitive.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Sensitive.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Sensitive.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Sensitive.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Term.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Term.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Term.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Term.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/UIdeo.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/UIdeo.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/UIdeo.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/UIdeo.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/Upper.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/Upper.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/Upper.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/Upper.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/VS.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/VS.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/VS.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/VS.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/WB.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/WB.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/WB.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/WB.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/WSpace.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/WSpace.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/WSpace.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/WSpace.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/XIDC.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/XIDC.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/XIDC.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/XIDC.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/XIDS.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/XIDS.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/XIDS.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/XIDS.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/alnum.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/alnum.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/alnum.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/alnum.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/bc.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/bc.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/bc.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/bc.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/blank.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/blank.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/blank.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/blank.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/bmg.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/bmg.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/bmg.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/bmg.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/bpt.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/bpt.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/bpt.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/bpt.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/ccc.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/ccc.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/ccc.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/ccc.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/ea.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/ea.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/ea.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/ea.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/gc.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/gc.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/gc.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/gc.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/gcm.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/gcm.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/gcm.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/gcm.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/graph.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/graph.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/graph.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/graph.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/hst.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/hst.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/hst.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/hst.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/jt.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/jt.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/jt.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/jt.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/lb.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/lb.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/lb.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/lb.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/nfcinert.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/nfcinert.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/nfcinert.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/nfcinert.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/nfdinert.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/nfdinert.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/nfdinert.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/nfdinert.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/nfkcinert.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/nfkcinert.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/nfkcinert.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/nfkcinert.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/nfkdinert.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/nfkdinert.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/nfkdinert.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/nfkdinert.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/print.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/print.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/print.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/print.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/sc.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/sc.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/sc.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/sc.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/scx.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/scx.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/scx.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/scx.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/segstart.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/segstart.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/segstart.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/segstart.toml diff --git a/provider/datagen/tests/data/icuexport/uprops/small/xdigit.toml b/provider/bikeshed/tests/data/icuexport/uprops/small/xdigit.toml similarity index 100% rename from provider/datagen/tests/data/icuexport/uprops/small/xdigit.toml rename to provider/bikeshed/tests/data/icuexport/uprops/small/xdigit.toml diff --git a/provider/datagen/tests/data/lstm/Burmese_codepoints_exclusive_model4_heavy/weights.json b/provider/bikeshed/tests/data/lstm/Burmese_codepoints_exclusive_model4_heavy/weights.json similarity index 100% rename from provider/datagen/tests/data/lstm/Burmese_codepoints_exclusive_model4_heavy/weights.json rename to provider/bikeshed/tests/data/lstm/Burmese_codepoints_exclusive_model4_heavy/weights.json diff --git a/provider/datagen/tests/data/lstm/Khmer_codepoints_exclusive_model4_heavy/weights.json b/provider/bikeshed/tests/data/lstm/Khmer_codepoints_exclusive_model4_heavy/weights.json similarity index 100% rename from provider/datagen/tests/data/lstm/Khmer_codepoints_exclusive_model4_heavy/weights.json rename to provider/bikeshed/tests/data/lstm/Khmer_codepoints_exclusive_model4_heavy/weights.json diff --git a/provider/datagen/tests/data/lstm/Lao_codepoints_exclusive_model4_heavy/weights.json b/provider/bikeshed/tests/data/lstm/Lao_codepoints_exclusive_model4_heavy/weights.json similarity index 100% rename from provider/datagen/tests/data/lstm/Lao_codepoints_exclusive_model4_heavy/weights.json rename to provider/bikeshed/tests/data/lstm/Lao_codepoints_exclusive_model4_heavy/weights.json diff --git a/provider/datagen/tests/data/lstm/Thai_codepoints_exclusive_model4_heavy/weights.json b/provider/bikeshed/tests/data/lstm/Thai_codepoints_exclusive_model4_heavy/weights.json similarity index 100% rename from provider/datagen/tests/data/lstm/Thai_codepoints_exclusive_model4_heavy/weights.json rename to provider/bikeshed/tests/data/lstm/Thai_codepoints_exclusive_model4_heavy/weights.json diff --git a/provider/datagen/tests/data/lstm/Thai_graphclust_model4_heavy/weights.json b/provider/bikeshed/tests/data/lstm/Thai_graphclust_model4_heavy/weights.json similarity index 100% rename from provider/datagen/tests/data/lstm/Thai_graphclust_model4_heavy/weights.json rename to provider/bikeshed/tests/data/lstm/Thai_graphclust_model4_heavy/weights.json diff --git a/provider/bikeshed/tests/locales.rs.data b/provider/bikeshed/tests/locales.rs.data new file mode 100644 index 00000000000..513899cef15 --- /dev/null +++ b/provider/bikeshed/tests/locales.rs.data @@ -0,0 +1,61 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +// Locales to include in test data. Keep this list somewhat short, but cover all features. +// We use 12 base languages with a small number of variants to allow for 12 languages to be +// used in microbenchmarks. +const LOCALES: &[LanguageIdentifier] = &[ + // Arabic: + // - Good example for RTL + // - Non-latin numerals in Egypt + langid!("ar"), + langid!("ar-EG"), + // Bangla: + // - Uses non-Latin numerals + langid!("bn"), + // Chakma: + // - High-coverage language that uses non-BMP code points + langid!("ccp"), + // English: + // - Widely understood language in software engineering + // - Includes regional variants to test similar-data fallbacks + langid!("en"), + langid!("en-001"), + langid!("en-ZA"), + // Spanish: + // - Most popular Romance language + // - South American dialect + // - Has context dependent list fragments + langid!("es"), + langid!("es-AR"), + // French: + // - Often the first non-English locale to receive new data in CLDR + langid!("fr"), + // Filipino: + // - Week of month/year have plural variants. + langid!("fil"), + // Japanese: + // - Four scripts + // - Complex date patterns + langid!("ja"), + // Russian: + // - Cyrillic script + // - Interesting plural rules + // - Hightly inflected, many gramatical cases + langid!("ru"), + // Serbian: + // - Multiple scripts + // - Southern Europe + // - Hightly inflected, many gramatical cases + langid!("sr"), + langid!("sr-Latn"), + // Thai: + // - Complex word breaking + langid!("th"), + // Turkish: + // - Interesting case-mappings + langid!("tr"), + // Root data + langid!("und"), +]; diff --git a/provider/datagen/.gitattributes b/provider/datagen/.gitattributes index 3598c63c7d5..e7f6062f071 100644 --- a/provider/datagen/.gitattributes +++ b/provider/datagen/.gitattributes @@ -1,2 +1 @@ -data/** linguist-generated=true tests/data/** linguist-generated=true diff --git a/provider/datagen/Cargo.toml b/provider/datagen/Cargo.toml index 2e3bf4b6cc0..ac5484722d0 100644 --- a/provider/datagen/Cargo.toml +++ b/provider/datagen/Cargo.toml @@ -7,7 +7,6 @@ name = "icu_datagen" description = "Generate data for ICU4X DataProvider" license = "Unicode-3.0" include = [ - "data/**/*", "src/**/*", "examples/**/*", "benches/**/*", @@ -34,7 +33,7 @@ all-features = true # DatagenDriver displaydoc = { workspace = true } -icu = { workspace = true } +icu = { workspace = true, features = ["std"] } icu_provider = { workspace = true, features = ["std", "logging", "datagen"]} log = { workspace = true } memchr = { workspace = true } @@ -47,88 +46,18 @@ icu_provider_blob = { workspace = true, features = ["export"], optional = true } icu_provider_fs = { workspace = true, features = ["export"], optional = true } icu_provider_baked = { workspace = true, features = ["export"], optional = true } -# DatagenProvider - -## ICU infrastructure -calendrical_calculations = { workspace = true, optional = true } -icu_codepointtrie_builder = { workspace = true, optional = true } -icu_collections = { workspace = true, features = ["serde"], optional = true } -icu_pattern = { workspace = true, features = ["alloc"], optional = true } -icu_provider_adapters = { workspace = true, optional = true } -litemap = { workspace = true, optional = true, features = ["serde"] } -tinystr = { workspace = true, features = ["alloc", "serde", "zerovec"], optional = true } -zerotrie = { workspace = true, features = ["alloc"], optional = true } -zerovec = { workspace = true, features = ["serde", "yoke"], optional = true } - -## External dependencies -either = { workspace = true, optional = true } -elsa = { workspace = true, optional = true } -itertools = { workspace = true, optional = true } -ndarray = { workspace = true, optional = true } -num-bigint = { workspace = true, optional = true } -num-rational = { workspace = true, optional = true } -num-traits = { workspace = true, optional = true } -serde = { workspace = true, features = ["derive", "alloc"], optional = true } -serde_json = { workspace = true, optional = true } -serde-aux = { workspace = true, optional = true } -toml = { workspace = true, optional = true } -twox-hash = { workspace = true, optional = true } -ureq = { workspace = true, optional = true } -zip = { workspace = true, features = ["deflate"], optional = true } - [dev-dependencies] elsa = { workspace = true } -icu = { path = "../../components/icu" } postcard = { workspace = true } simple_logger = { workspace = true } +icu = { path = "../../components/icu", default-features = false, features = ["datagen"] } +icu_datagen_bikeshed = { path = "../bikeshed" } [features] -default = ["use_wasm", "networking", "rayon", "fs_exporter", "blob_exporter", "baked_exporter", "provider"] -provider = [ - "icu/datagen", - "dep:calendrical_calculations", - "dep:icu_codepointtrie_builder", - "dep:icu_collections", - "dep:icu_pattern", - "dep:icu_provider_adapters", - "dep:litemap", - "dep:tinystr", - "dep:zerotrie", - "dep:zerovec", - "dep:either", - "dep:elsa", - "dep:itertools", - "dep:ndarray", - "dep:serde", - "dep:serde_json", - "dep:serde-aux", - "dep:toml", - "dep:twox-hash", - "dep:zip", -] +default = ["rayon", "fs_exporter", "blob_exporter", "baked_exporter"] baked_exporter = ["dep:icu_provider_baked"] blob_exporter = ["dep:icu_provider_blob"] fs_exporter = ["dep:icu_provider_fs"] rayon = ["dep:rayon"] -# Use wasm for building codepointtries -use_wasm = ["icu_codepointtrie_builder?/wasm"] -# Use local ICU4C libraries for building codepointtries -# (will do nothing if used with `use_wasm`) -# If neither `use_wasm` nor `use_icu4c` are enabled, -# rule based segmenter data will not be generated. -use_icu4c = ["icu_codepointtrie_builder?/icu4c"] -networking = ["dep:ureq"] -experimental_components = [ - # Only required if both provider and experimental are enabled, but that's not expressible with features - "dep:num-bigint", - "dep:num-rational", - "dep:num-traits", - "icu/experimental", -] - -[package.metadata.cargo-all-features] -# We don't need working CPT builders for check -skip_feature_sets = [["use_icu4c"], ["use_wasm"]] -skip_optional_dependencies = true -# We have a *lot* of features here -max_combination_size = 2 +# For all_markers +experimental = ["icu/experimental"] diff --git a/provider/datagen/README.md b/provider/datagen/README.md index 93203c3fe06..dd36365b584 100644 --- a/provider/datagen/README.md +++ b/provider/datagen/README.md @@ -40,14 +40,9 @@ can be disabled to reduce dependencies: * `fs_exporter` * enables the [`fs_exporter`] module, a reexport of [`icu_provider_fs::export`] * enables the `--format dir` CLI argument -* `networking` - * enables methods on [`DatagenProvider`] that fetch source data from the network - * enables the `--cldr-tag`, `--icu-export-tag`, and `--segmenter-lstm-tag` CLI arguments that download data * `rayon` * enables parallelism during export -* `use_wasm` / `use_icu4c` - * see the documentation on [`icu_codepointtrie_builder`](icu_codepointtrie_builder#build-configuration) -* `experimental_components` +* `experimental` * enables data generation for markers defined in the unstable `icu_experimental` crate * note that this features affects the behaviour of `all_markers` diff --git a/provider/datagen/src/driver.rs b/provider/datagen/src/driver.rs index 82827c87e21..5c92a2e043b 100644 --- a/provider/datagen/src/driver.rs +++ b/provider/datagen/src/driver.rs @@ -383,6 +383,7 @@ enum LocalesWithOrWithoutFallback { /// ```no_run /// use icu_datagen::blob_exporter::*; /// use icu_datagen::prelude::*; +/// use icu_datagen_bikeshed::DatagenProvider; /// /// DatagenDriver::new() /// .with_markers([icu::list::provider::AndListV1Marker::INFO]) @@ -433,11 +434,9 @@ impl DatagenDriver { /// Sets this driver to generate the given locales assuming no runtime fallback. /// - /// Use the [`langid!`] macro from the prelude to create an - /// explicit list, or [`DatagenProvider::locales_for_coverage_levels`] for CLDR coverage levels. + /// Use the [`langid!`] macro from the prelude to create [`LanguageIdentifier`]s. /// /// [`langid!`]: crate::prelude::langid - /// [`DatagenProvider::locales_for_coverage_levels`]: crate::DatagenProvider::locales_for_coverage_levels pub fn with_locales_no_fallback( self, locales: impl IntoIterator, @@ -453,14 +452,12 @@ impl DatagenDriver { /// Sets this driver to generate the given locales assuming runtime fallback. /// - /// Use the [`langid!`] macro from the prelude to create an - /// explicit list, or [`DatagenProvider::locales_for_coverage_levels`] for CLDR coverage levels. + /// Use the [`langid!`] macro from the prelude to create [`LanguageIdentifier`]s. /// /// If there are multiple [`LocaleFamily`]s for the same [`LanguageIdentifier`], the last entry /// in the iterator takes precedence. /// /// [`langid!`]: crate::prelude::langid - /// [`DatagenProvider::locales_for_coverage_levels`]: crate::DatagenProvider::locales_for_coverage_levels pub fn with_locales_and_fallback( self, locales: impl IntoIterator, @@ -543,11 +540,10 @@ impl DatagenDriver { /// Exports data from the given provider to the given exporter. /// /// See - /// [`DatagenProvider`](crate::DatagenProvider), /// [`make_exportable_provider!`](icu_provider::make_exportable_provider), /// [`BlobExporter`](icu_provider_blob::export), /// [`FileSystemExporter`](icu_provider_fs::export), - /// and [`BakedExporter`](crate::baked_exporter). + /// and [`BakedExporter`](icu_provider_baked::export). pub fn export( self, provider: &impl ExportableProvider, @@ -1094,9 +1090,53 @@ impl fmt::Display for DisplayDuration { #[test] fn test_collation_filtering() { - use icu::locale::langid; + use icu::locale::{langid, locale}; use std::collections::BTreeSet; + struct Provider; + + impl DataProvider for Provider { + fn load( + &self, + _req: DataRequest, + ) -> Result, DataError> + { + unreachable!() + } + } + + impl IterableDataProvider for Provider { + fn supported_requests( + &self, + ) -> Result, DataError> { + Ok(HashSet::from_iter( + [ + locale!("ko-u-co-search"), + locale!("ko-u-co-searchjl"), + locale!("ko-u-co-unihan"), + locale!("ko"), + locale!("und-u-co-emoji"), + locale!("und-u-co-eor"), + locale!("und-u-co-search"), + locale!("und"), + locale!("zh-u-co-big5han"), + locale!("zh-u-co-gb2312"), + locale!("zh-u-co-stroke"), + locale!("zh-u-co-unihan"), + locale!("zh-u-co-zhuyin"), + locale!("zh"), + ] + .into_iter() + .map(|l| (l.into(), Default::default())), + )) + } + } + + icu_provider::make_exportable_provider!( + Provider, + [icu::collator::provider::CollationDataV1Marker,] + ); + #[derive(Debug)] struct TestCase<'a> { include_collations: &'a [&'a str], @@ -1176,7 +1216,7 @@ fn test_collation_filtering() { let fallbacker = LocaleFallbacker::new_without_data(); for cas in cases { let resolved_locales = select_locales_for_marker( - &crate::provider::DatagenProvider::new_testing(), + &Provider, icu::collator::provider::CollationDataV1Marker::INFO, &LocalesWithOrWithoutFallback::WithoutFallback { langids: [cas.language.clone()].into_iter().collect(), diff --git a/provider/datagen/src/lib.rs b/provider/datagen/src/lib.rs index 64a79478e30..ac3272d4180 100644 --- a/provider/datagen/src/lib.rs +++ b/provider/datagen/src/lib.rs @@ -14,6 +14,7 @@ //! ```no_run //! use icu_datagen::blob_exporter::*; //! use icu_datagen::prelude::*; +//! use icu_datagen_bikeshed::DatagenProvider; //! use std::fs::File; //! //! DatagenDriver::new() @@ -41,14 +42,9 @@ //! * `fs_exporter` //! * enables the [`fs_exporter`] module, a reexport of [`icu_provider_fs::export`] //! * enables the `--format dir` CLI argument -//! * `networking` -//! * enables methods on [`DatagenProvider`] that fetch source data from the network -//! * enables the `--cldr-tag`, `--icu-export-tag`, and `--segmenter-lstm-tag` CLI arguments that download data //! * `rayon` //! * enables parallelism during export -//! * `use_wasm` / `use_icu4c` -//! * see the documentation on [`icu_codepointtrie_builder`](icu_codepointtrie_builder#build-configuration) -//! * `experimental_components` +//! * `experimental` //! * enables data generation for markers defined in the unstable `icu_experimental` crate //! * note that this features affects the behaviour of `all_markers` @@ -68,8 +64,6 @@ #![warn(missing_docs)] mod driver; -#[cfg(feature = "provider")] -mod provider; pub use driver::DatagenDriver; pub use driver::DeduplicationStrategy; @@ -77,13 +71,6 @@ pub use driver::FallbackOptions; pub use driver::LocaleFamily; pub use driver::NoFallbackOptions; -#[cfg(feature = "provider")] -pub use provider::CollationHanDatabase; -#[cfg(feature = "provider")] -pub use provider::CoverageLevel; -#[cfg(feature = "provider")] -pub use provider::DatagenProvider; - #[cfg(feature = "baked_exporter")] pub use icu_provider_baked::export as baked_exporter; #[cfg(feature = "blob_exporter")] @@ -93,9 +80,6 @@ pub use icu_provider_fs::export as fs_exporter; /// A prelude for using the datagen API pub mod prelude { - #[doc(no_inline)] - #[cfg(feature = "provider")] - pub use crate::provider::{CollationHanDatabase, CoverageLevel, DatagenProvider}; #[doc(no_inline)] pub use crate::{ DatagenDriver, DeduplicationStrategy, FallbackOptions, LocaleFamily, NoFallbackOptions, @@ -130,14 +114,14 @@ macro_rules! cb { /// corresponding Cargo features has been enabled. // Excludes the hello world marker, as that generally should not be generated. pub fn all_markers() -> Vec { - #[cfg(features = "experimental_components")] - log::warn!("The icu_datagen crates has been built with the `experimental_components` feature, so `all_markers` returns experimental markers"); + #[cfg(features = "experimental")] + log::warn!("The icu_datagen crates has been built with the `experimental` feature, so `all_markers` returns experimental markers"); vec![ $( <$marker>::INFO, )+ $( - #[cfg(feature = "experimental_components")] + #[cfg(feature = "experimental")] <$emarker>::INFO, )+ ] @@ -163,10 +147,10 @@ macro_rules! cb { ($path, Ok(<$marker>::INFO)), )+ $( - #[cfg(feature = "experimental_components")] + #[cfg(feature = "experimental")] ($epath, Ok(<$emarker>::INFO)), - #[cfg(not(feature = "experimental_components"))] - ($epath, Err(stringify!(feature = "experimental_components"))), + #[cfg(not(feature = "experimental"))] + ($epath, Err(stringify!(feature = "experimental"))), )+ ] diff --git a/provider/datagen/src/provider/tests/data.rs b/provider/datagen/src/provider/tests/data.rs deleted file mode 100644 index 7924992277c..00000000000 --- a/provider/datagen/src/provider/tests/data.rs +++ /dev/null @@ -1,699 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -//! Generated by `download-repo-sources.rs` - -use crate::provider::source::{AbstractFs, SerdeCache}; -use crate::provider::transform::cldr::source::CldrCache; -use crate::provider::DatagenProvider; -use std::sync::{Arc, OnceLock}; -impl DatagenProvider { - // This is equivalent to `new_latest_tested` for the files defined in `tools/testdata-scripts/globs.rs.data`. - pub fn new_testing() -> Self { - // Singleton so that all instantiations share the same cache. - static SINGLETON: OnceLock = OnceLock::new(); - SINGLETON - .get_or_init(|| Self { - cldr_paths: Some(Arc::new(CldrCache::from_serde_cache(SerdeCache::new(AbstractFs::Memory( - [ - ("cldr-bcp47/bcp47/timezone.json", include_bytes!("../../../tests/data/cldr/cldr-bcp47/bcp47/timezone.json").as_slice()), - ("cldr-cal-buddhist-full/main/ar/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/ar/ca-buddhist.json").as_slice()), - ("cldr-cal-buddhist-full/main/ar-EG/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/ar-EG/ca-buddhist.json").as_slice()), - ("cldr-cal-buddhist-full/main/bn/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/bn/ca-buddhist.json").as_slice()), - ("cldr-cal-buddhist-full/main/ccp/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/ccp/ca-buddhist.json").as_slice()), - ("cldr-cal-buddhist-full/main/en/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/en/ca-buddhist.json").as_slice()), - ("cldr-cal-buddhist-full/main/en-001/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/en-001/ca-buddhist.json").as_slice()), - ("cldr-cal-buddhist-full/main/en-ZA/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/en-ZA/ca-buddhist.json").as_slice()), - ("cldr-cal-buddhist-full/main/es/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/es/ca-buddhist.json").as_slice()), - ("cldr-cal-buddhist-full/main/es-AR/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/es-AR/ca-buddhist.json").as_slice()), - ("cldr-cal-buddhist-full/main/fr/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/fr/ca-buddhist.json").as_slice()), - ("cldr-cal-buddhist-full/main/fil/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/fil/ca-buddhist.json").as_slice()), - ("cldr-cal-buddhist-full/main/ja/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/ja/ca-buddhist.json").as_slice()), - ("cldr-cal-buddhist-full/main/ru/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/ru/ca-buddhist.json").as_slice()), - ("cldr-cal-buddhist-full/main/sr/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/sr/ca-buddhist.json").as_slice()), - ("cldr-cal-buddhist-full/main/sr-Latn/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/sr-Latn/ca-buddhist.json").as_slice()), - ("cldr-cal-buddhist-full/main/th/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/th/ca-buddhist.json").as_slice()), - ("cldr-cal-buddhist-full/main/tr/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/tr/ca-buddhist.json").as_slice()), - ("cldr-cal-buddhist-full/main/und/ca-buddhist.json", include_bytes!("../../../tests/data/cldr/cldr-cal-buddhist-full/main/und/ca-buddhist.json").as_slice()), - ("cldr-cal-chinese-full/main/ar/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/ar/ca-chinese.json").as_slice()), - ("cldr-cal-chinese-full/main/ar-EG/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/ar-EG/ca-chinese.json").as_slice()), - ("cldr-cal-chinese-full/main/bn/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/bn/ca-chinese.json").as_slice()), - ("cldr-cal-chinese-full/main/ccp/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/ccp/ca-chinese.json").as_slice()), - ("cldr-cal-chinese-full/main/en/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/en/ca-chinese.json").as_slice()), - ("cldr-cal-chinese-full/main/en-001/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/en-001/ca-chinese.json").as_slice()), - ("cldr-cal-chinese-full/main/en-ZA/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/en-ZA/ca-chinese.json").as_slice()), - ("cldr-cal-chinese-full/main/es/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/es/ca-chinese.json").as_slice()), - ("cldr-cal-chinese-full/main/es-AR/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/es-AR/ca-chinese.json").as_slice()), - ("cldr-cal-chinese-full/main/fr/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/fr/ca-chinese.json").as_slice()), - ("cldr-cal-chinese-full/main/fil/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/fil/ca-chinese.json").as_slice()), - ("cldr-cal-chinese-full/main/ja/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/ja/ca-chinese.json").as_slice()), - ("cldr-cal-chinese-full/main/ru/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/ru/ca-chinese.json").as_slice()), - ("cldr-cal-chinese-full/main/sr/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/sr/ca-chinese.json").as_slice()), - ("cldr-cal-chinese-full/main/sr-Latn/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/sr-Latn/ca-chinese.json").as_slice()), - ("cldr-cal-chinese-full/main/th/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/th/ca-chinese.json").as_slice()), - ("cldr-cal-chinese-full/main/tr/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/tr/ca-chinese.json").as_slice()), - ("cldr-cal-chinese-full/main/und/ca-chinese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-chinese-full/main/und/ca-chinese.json").as_slice()), - ("cldr-cal-coptic-full/main/ar/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/ar/ca-coptic.json").as_slice()), - ("cldr-cal-coptic-full/main/ar-EG/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/ar-EG/ca-coptic.json").as_slice()), - ("cldr-cal-coptic-full/main/bn/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/bn/ca-coptic.json").as_slice()), - ("cldr-cal-coptic-full/main/ccp/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/ccp/ca-coptic.json").as_slice()), - ("cldr-cal-coptic-full/main/en/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/en/ca-coptic.json").as_slice()), - ("cldr-cal-coptic-full/main/en-001/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/en-001/ca-coptic.json").as_slice()), - ("cldr-cal-coptic-full/main/en-ZA/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/en-ZA/ca-coptic.json").as_slice()), - ("cldr-cal-coptic-full/main/es/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/es/ca-coptic.json").as_slice()), - ("cldr-cal-coptic-full/main/es-AR/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/es-AR/ca-coptic.json").as_slice()), - ("cldr-cal-coptic-full/main/fr/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/fr/ca-coptic.json").as_slice()), - ("cldr-cal-coptic-full/main/fil/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/fil/ca-coptic.json").as_slice()), - ("cldr-cal-coptic-full/main/ja/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/ja/ca-coptic.json").as_slice()), - ("cldr-cal-coptic-full/main/ru/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/ru/ca-coptic.json").as_slice()), - ("cldr-cal-coptic-full/main/sr/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/sr/ca-coptic.json").as_slice()), - ("cldr-cal-coptic-full/main/sr-Latn/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/sr-Latn/ca-coptic.json").as_slice()), - ("cldr-cal-coptic-full/main/th/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/th/ca-coptic.json").as_slice()), - ("cldr-cal-coptic-full/main/tr/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/tr/ca-coptic.json").as_slice()), - ("cldr-cal-coptic-full/main/und/ca-coptic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-coptic-full/main/und/ca-coptic.json").as_slice()), - ("cldr-cal-dangi-full/main/ar/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/ar/ca-dangi.json").as_slice()), - ("cldr-cal-dangi-full/main/ar-EG/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/ar-EG/ca-dangi.json").as_slice()), - ("cldr-cal-dangi-full/main/bn/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/bn/ca-dangi.json").as_slice()), - ("cldr-cal-dangi-full/main/ccp/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/ccp/ca-dangi.json").as_slice()), - ("cldr-cal-dangi-full/main/en/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/en/ca-dangi.json").as_slice()), - ("cldr-cal-dangi-full/main/en-001/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/en-001/ca-dangi.json").as_slice()), - ("cldr-cal-dangi-full/main/en-ZA/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/en-ZA/ca-dangi.json").as_slice()), - ("cldr-cal-dangi-full/main/es/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/es/ca-dangi.json").as_slice()), - ("cldr-cal-dangi-full/main/es-AR/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/es-AR/ca-dangi.json").as_slice()), - ("cldr-cal-dangi-full/main/fr/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/fr/ca-dangi.json").as_slice()), - ("cldr-cal-dangi-full/main/fil/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/fil/ca-dangi.json").as_slice()), - ("cldr-cal-dangi-full/main/ja/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/ja/ca-dangi.json").as_slice()), - ("cldr-cal-dangi-full/main/ru/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/ru/ca-dangi.json").as_slice()), - ("cldr-cal-dangi-full/main/sr/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/sr/ca-dangi.json").as_slice()), - ("cldr-cal-dangi-full/main/sr-Latn/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/sr-Latn/ca-dangi.json").as_slice()), - ("cldr-cal-dangi-full/main/th/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/th/ca-dangi.json").as_slice()), - ("cldr-cal-dangi-full/main/tr/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/tr/ca-dangi.json").as_slice()), - ("cldr-cal-dangi-full/main/und/ca-dangi.json", include_bytes!("../../../tests/data/cldr/cldr-cal-dangi-full/main/und/ca-dangi.json").as_slice()), - ("cldr-cal-ethiopic-full/main/ar/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/ar/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/ar-EG/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/ar-EG/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/bn/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/bn/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/ccp/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/ccp/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/en/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/en/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/en-001/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/en-001/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/en-ZA/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/en-ZA/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/es/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/es/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/es-AR/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/es-AR/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/fr/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/fr/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/fil/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/fil/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/ja/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/ja/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/ru/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/ru/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/sr/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/sr/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/sr-Latn/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/sr-Latn/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/th/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/th/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/tr/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/tr/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/und/ca-ethiopic-amete-alem.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/und/ca-ethiopic-amete-alem.json").as_slice()), - ("cldr-cal-ethiopic-full/main/ar/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/ar/ca-ethiopic.json").as_slice()), - ("cldr-cal-ethiopic-full/main/ar-EG/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/ar-EG/ca-ethiopic.json").as_slice()), - ("cldr-cal-ethiopic-full/main/bn/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/bn/ca-ethiopic.json").as_slice()), - ("cldr-cal-ethiopic-full/main/ccp/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/ccp/ca-ethiopic.json").as_slice()), - ("cldr-cal-ethiopic-full/main/en/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/en/ca-ethiopic.json").as_slice()), - ("cldr-cal-ethiopic-full/main/en-001/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/en-001/ca-ethiopic.json").as_slice()), - ("cldr-cal-ethiopic-full/main/en-ZA/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/en-ZA/ca-ethiopic.json").as_slice()), - ("cldr-cal-ethiopic-full/main/es/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/es/ca-ethiopic.json").as_slice()), - ("cldr-cal-ethiopic-full/main/es-AR/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/es-AR/ca-ethiopic.json").as_slice()), - ("cldr-cal-ethiopic-full/main/fr/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/fr/ca-ethiopic.json").as_slice()), - ("cldr-cal-ethiopic-full/main/fil/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/fil/ca-ethiopic.json").as_slice()), - ("cldr-cal-ethiopic-full/main/ja/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/ja/ca-ethiopic.json").as_slice()), - ("cldr-cal-ethiopic-full/main/ru/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/ru/ca-ethiopic.json").as_slice()), - ("cldr-cal-ethiopic-full/main/sr/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/sr/ca-ethiopic.json").as_slice()), - ("cldr-cal-ethiopic-full/main/sr-Latn/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/sr-Latn/ca-ethiopic.json").as_slice()), - ("cldr-cal-ethiopic-full/main/th/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/th/ca-ethiopic.json").as_slice()), - ("cldr-cal-ethiopic-full/main/tr/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/tr/ca-ethiopic.json").as_slice()), - ("cldr-cal-ethiopic-full/main/und/ca-ethiopic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-ethiopic-full/main/und/ca-ethiopic.json").as_slice()), - ("cldr-cal-indian-full/main/ar/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/ar/ca-indian.json").as_slice()), - ("cldr-cal-indian-full/main/ar-EG/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/ar-EG/ca-indian.json").as_slice()), - ("cldr-cal-indian-full/main/bn/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/bn/ca-indian.json").as_slice()), - ("cldr-cal-indian-full/main/ccp/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/ccp/ca-indian.json").as_slice()), - ("cldr-cal-indian-full/main/en/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/en/ca-indian.json").as_slice()), - ("cldr-cal-indian-full/main/en-001/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/en-001/ca-indian.json").as_slice()), - ("cldr-cal-indian-full/main/en-ZA/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/en-ZA/ca-indian.json").as_slice()), - ("cldr-cal-indian-full/main/es/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/es/ca-indian.json").as_slice()), - ("cldr-cal-indian-full/main/es-AR/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/es-AR/ca-indian.json").as_slice()), - ("cldr-cal-indian-full/main/fr/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/fr/ca-indian.json").as_slice()), - ("cldr-cal-indian-full/main/fil/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/fil/ca-indian.json").as_slice()), - ("cldr-cal-indian-full/main/ja/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/ja/ca-indian.json").as_slice()), - ("cldr-cal-indian-full/main/ru/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/ru/ca-indian.json").as_slice()), - ("cldr-cal-indian-full/main/sr/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/sr/ca-indian.json").as_slice()), - ("cldr-cal-indian-full/main/sr-Latn/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/sr-Latn/ca-indian.json").as_slice()), - ("cldr-cal-indian-full/main/th/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/th/ca-indian.json").as_slice()), - ("cldr-cal-indian-full/main/tr/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/tr/ca-indian.json").as_slice()), - ("cldr-cal-indian-full/main/und/ca-indian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-indian-full/main/und/ca-indian.json").as_slice()), - ("cldr-cal-japanese-full/main/ar/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/ar/ca-japanese.json").as_slice()), - ("cldr-cal-japanese-full/main/ar-EG/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/ar-EG/ca-japanese.json").as_slice()), - ("cldr-cal-japanese-full/main/bn/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/bn/ca-japanese.json").as_slice()), - ("cldr-cal-japanese-full/main/ccp/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/ccp/ca-japanese.json").as_slice()), - ("cldr-cal-japanese-full/main/en/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/en/ca-japanese.json").as_slice()), - ("cldr-cal-japanese-full/main/en-001/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/en-001/ca-japanese.json").as_slice()), - ("cldr-cal-japanese-full/main/en-ZA/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/en-ZA/ca-japanese.json").as_slice()), - ("cldr-cal-japanese-full/main/es/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/es/ca-japanese.json").as_slice()), - ("cldr-cal-japanese-full/main/es-AR/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/es-AR/ca-japanese.json").as_slice()), - ("cldr-cal-japanese-full/main/fr/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/fr/ca-japanese.json").as_slice()), - ("cldr-cal-japanese-full/main/fil/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/fil/ca-japanese.json").as_slice()), - ("cldr-cal-japanese-full/main/ja/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/ja/ca-japanese.json").as_slice()), - ("cldr-cal-japanese-full/main/ru/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/ru/ca-japanese.json").as_slice()), - ("cldr-cal-japanese-full/main/sr/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/sr/ca-japanese.json").as_slice()), - ("cldr-cal-japanese-full/main/sr-Latn/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/sr-Latn/ca-japanese.json").as_slice()), - ("cldr-cal-japanese-full/main/th/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/th/ca-japanese.json").as_slice()), - ("cldr-cal-japanese-full/main/tr/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/tr/ca-japanese.json").as_slice()), - ("cldr-cal-japanese-full/main/und/ca-japanese.json", include_bytes!("../../../tests/data/cldr/cldr-cal-japanese-full/main/und/ca-japanese.json").as_slice()), - ("cldr-cal-persian-full/main/ar/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/ar/ca-persian.json").as_slice()), - ("cldr-cal-persian-full/main/ar-EG/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/ar-EG/ca-persian.json").as_slice()), - ("cldr-cal-persian-full/main/bn/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/bn/ca-persian.json").as_slice()), - ("cldr-cal-persian-full/main/ccp/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/ccp/ca-persian.json").as_slice()), - ("cldr-cal-persian-full/main/en/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/en/ca-persian.json").as_slice()), - ("cldr-cal-persian-full/main/en-001/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/en-001/ca-persian.json").as_slice()), - ("cldr-cal-persian-full/main/en-ZA/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/en-ZA/ca-persian.json").as_slice()), - ("cldr-cal-persian-full/main/es/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/es/ca-persian.json").as_slice()), - ("cldr-cal-persian-full/main/es-AR/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/es-AR/ca-persian.json").as_slice()), - ("cldr-cal-persian-full/main/fr/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/fr/ca-persian.json").as_slice()), - ("cldr-cal-persian-full/main/fil/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/fil/ca-persian.json").as_slice()), - ("cldr-cal-persian-full/main/ja/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/ja/ca-persian.json").as_slice()), - ("cldr-cal-persian-full/main/ru/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/ru/ca-persian.json").as_slice()), - ("cldr-cal-persian-full/main/sr/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/sr/ca-persian.json").as_slice()), - ("cldr-cal-persian-full/main/sr-Latn/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/sr-Latn/ca-persian.json").as_slice()), - ("cldr-cal-persian-full/main/th/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/th/ca-persian.json").as_slice()), - ("cldr-cal-persian-full/main/tr/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/tr/ca-persian.json").as_slice()), - ("cldr-cal-persian-full/main/und/ca-persian.json", include_bytes!("../../../tests/data/cldr/cldr-cal-persian-full/main/und/ca-persian.json").as_slice()), - ("cldr-cal-hebrew-full/main/ar/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/ar/ca-hebrew.json").as_slice()), - ("cldr-cal-hebrew-full/main/ar-EG/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/ar-EG/ca-hebrew.json").as_slice()), - ("cldr-cal-hebrew-full/main/bn/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/bn/ca-hebrew.json").as_slice()), - ("cldr-cal-hebrew-full/main/ccp/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/ccp/ca-hebrew.json").as_slice()), - ("cldr-cal-hebrew-full/main/en/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/en/ca-hebrew.json").as_slice()), - ("cldr-cal-hebrew-full/main/en-001/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/en-001/ca-hebrew.json").as_slice()), - ("cldr-cal-hebrew-full/main/en-ZA/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/en-ZA/ca-hebrew.json").as_slice()), - ("cldr-cal-hebrew-full/main/es/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/es/ca-hebrew.json").as_slice()), - ("cldr-cal-hebrew-full/main/es-AR/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/es-AR/ca-hebrew.json").as_slice()), - ("cldr-cal-hebrew-full/main/fr/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/fr/ca-hebrew.json").as_slice()), - ("cldr-cal-hebrew-full/main/fil/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/fil/ca-hebrew.json").as_slice()), - ("cldr-cal-hebrew-full/main/ja/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/ja/ca-hebrew.json").as_slice()), - ("cldr-cal-hebrew-full/main/ru/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/ru/ca-hebrew.json").as_slice()), - ("cldr-cal-hebrew-full/main/sr/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/sr/ca-hebrew.json").as_slice()), - ("cldr-cal-hebrew-full/main/sr-Latn/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/sr-Latn/ca-hebrew.json").as_slice()), - ("cldr-cal-hebrew-full/main/th/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/th/ca-hebrew.json").as_slice()), - ("cldr-cal-hebrew-full/main/tr/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/tr/ca-hebrew.json").as_slice()), - ("cldr-cal-hebrew-full/main/und/ca-hebrew.json", include_bytes!("../../../tests/data/cldr/cldr-cal-hebrew-full/main/und/ca-hebrew.json").as_slice()), - ("cldr-cal-islamic-full/main/ar/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/ar/ca-islamic.json").as_slice()), - ("cldr-cal-islamic-full/main/ar-EG/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/ar-EG/ca-islamic.json").as_slice()), - ("cldr-cal-islamic-full/main/bn/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/bn/ca-islamic.json").as_slice()), - ("cldr-cal-islamic-full/main/ccp/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/ccp/ca-islamic.json").as_slice()), - ("cldr-cal-islamic-full/main/en/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/en/ca-islamic.json").as_slice()), - ("cldr-cal-islamic-full/main/en-001/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/en-001/ca-islamic.json").as_slice()), - ("cldr-cal-islamic-full/main/en-ZA/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/en-ZA/ca-islamic.json").as_slice()), - ("cldr-cal-islamic-full/main/es/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/es/ca-islamic.json").as_slice()), - ("cldr-cal-islamic-full/main/es-AR/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/es-AR/ca-islamic.json").as_slice()), - ("cldr-cal-islamic-full/main/fr/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/fr/ca-islamic.json").as_slice()), - ("cldr-cal-islamic-full/main/fil/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/fil/ca-islamic.json").as_slice()), - ("cldr-cal-islamic-full/main/ja/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/ja/ca-islamic.json").as_slice()), - ("cldr-cal-islamic-full/main/ru/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/ru/ca-islamic.json").as_slice()), - ("cldr-cal-islamic-full/main/sr/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/sr/ca-islamic.json").as_slice()), - ("cldr-cal-islamic-full/main/sr-Latn/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/sr-Latn/ca-islamic.json").as_slice()), - ("cldr-cal-islamic-full/main/th/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/th/ca-islamic.json").as_slice()), - ("cldr-cal-islamic-full/main/tr/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/tr/ca-islamic.json").as_slice()), - ("cldr-cal-islamic-full/main/und/ca-islamic.json", include_bytes!("../../../tests/data/cldr/cldr-cal-islamic-full/main/und/ca-islamic.json").as_slice()), - ("cldr-cal-roc-full/main/ar/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/ar/ca-roc.json").as_slice()), - ("cldr-cal-roc-full/main/ar-EG/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/ar-EG/ca-roc.json").as_slice()), - ("cldr-cal-roc-full/main/bn/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/bn/ca-roc.json").as_slice()), - ("cldr-cal-roc-full/main/ccp/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/ccp/ca-roc.json").as_slice()), - ("cldr-cal-roc-full/main/en/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/en/ca-roc.json").as_slice()), - ("cldr-cal-roc-full/main/en-001/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/en-001/ca-roc.json").as_slice()), - ("cldr-cal-roc-full/main/en-ZA/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/en-ZA/ca-roc.json").as_slice()), - ("cldr-cal-roc-full/main/es/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/es/ca-roc.json").as_slice()), - ("cldr-cal-roc-full/main/es-AR/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/es-AR/ca-roc.json").as_slice()), - ("cldr-cal-roc-full/main/fr/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/fr/ca-roc.json").as_slice()), - ("cldr-cal-roc-full/main/fil/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/fil/ca-roc.json").as_slice()), - ("cldr-cal-roc-full/main/ja/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/ja/ca-roc.json").as_slice()), - ("cldr-cal-roc-full/main/ru/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/ru/ca-roc.json").as_slice()), - ("cldr-cal-roc-full/main/sr/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/sr/ca-roc.json").as_slice()), - ("cldr-cal-roc-full/main/sr-Latn/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/sr-Latn/ca-roc.json").as_slice()), - ("cldr-cal-roc-full/main/th/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/th/ca-roc.json").as_slice()), - ("cldr-cal-roc-full/main/tr/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/tr/ca-roc.json").as_slice()), - ("cldr-cal-roc-full/main/und/ca-roc.json", include_bytes!("../../../tests/data/cldr/cldr-cal-roc-full/main/und/ca-roc.json").as_slice()), - ("cldr-core/coverageLevels.json", include_bytes!("../../../tests/data/cldr/cldr-core/coverageLevels.json").as_slice()), - ("cldr-core/scriptMetadata.json", include_bytes!("../../../tests/data/cldr/cldr-core/scriptMetadata.json").as_slice()), - ("cldr-core/supplemental/aliases.json", include_bytes!("../../../tests/data/cldr/cldr-core/supplemental/aliases.json").as_slice()), - ("cldr-core/supplemental/calendarData.json", include_bytes!("../../../tests/data/cldr/cldr-core/supplemental/calendarData.json").as_slice()), - ("cldr-core/supplemental/currencyData.json", include_bytes!("../../../tests/data/cldr/cldr-core/supplemental/currencyData.json").as_slice()), - ("cldr-core/supplemental/units.json", include_bytes!("../../../tests/data/cldr/cldr-core/supplemental/units.json").as_slice()), - ("cldr-core/supplemental/likelySubtags.json", include_bytes!("../../../tests/data/cldr/cldr-core/supplemental/likelySubtags.json").as_slice()), - ("cldr-core/supplemental/metaZones.json", include_bytes!("../../../tests/data/cldr/cldr-core/supplemental/metaZones.json").as_slice()), - ("cldr-core/supplemental/numberingSystems.json", include_bytes!("../../../tests/data/cldr/cldr-core/supplemental/numberingSystems.json").as_slice()), - ("cldr-core/supplemental/ordinals.json", include_bytes!("../../../tests/data/cldr/cldr-core/supplemental/ordinals.json").as_slice()), - ("cldr-core/supplemental/parentLocales.json", include_bytes!("../../../tests/data/cldr/cldr-core/supplemental/parentLocales.json").as_slice()), - ("cldr-core/supplemental/pluralRanges.json", include_bytes!("../../../tests/data/cldr/cldr-core/supplemental/pluralRanges.json").as_slice()), - ("cldr-core/supplemental/plurals.json", include_bytes!("../../../tests/data/cldr/cldr-core/supplemental/plurals.json").as_slice()), - ("cldr-core/supplemental/weekData.json", include_bytes!("../../../tests/data/cldr/cldr-core/supplemental/weekData.json").as_slice()), - ("cldr-dates-full/main/ar/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ar/ca-generic.json").as_slice()), - ("cldr-dates-full/main/ar-EG/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ar-EG/ca-generic.json").as_slice()), - ("cldr-dates-full/main/bn/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/bn/ca-generic.json").as_slice()), - ("cldr-dates-full/main/ccp/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ccp/ca-generic.json").as_slice()), - ("cldr-dates-full/main/en/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/en/ca-generic.json").as_slice()), - ("cldr-dates-full/main/en-001/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/en-001/ca-generic.json").as_slice()), - ("cldr-dates-full/main/en-ZA/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/en-ZA/ca-generic.json").as_slice()), - ("cldr-dates-full/main/es/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/es/ca-generic.json").as_slice()), - ("cldr-dates-full/main/es-AR/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/es-AR/ca-generic.json").as_slice()), - ("cldr-dates-full/main/fr/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/fr/ca-generic.json").as_slice()), - ("cldr-dates-full/main/fil/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/fil/ca-generic.json").as_slice()), - ("cldr-dates-full/main/ja/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ja/ca-generic.json").as_slice()), - ("cldr-dates-full/main/ru/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ru/ca-generic.json").as_slice()), - ("cldr-dates-full/main/sr/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/sr/ca-generic.json").as_slice()), - ("cldr-dates-full/main/sr-Latn/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/sr-Latn/ca-generic.json").as_slice()), - ("cldr-dates-full/main/th/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/th/ca-generic.json").as_slice()), - ("cldr-dates-full/main/tr/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/tr/ca-generic.json").as_slice()), - ("cldr-dates-full/main/und/ca-generic.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/und/ca-generic.json").as_slice()), - ("cldr-dates-full/main/ar/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ar/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/ar-EG/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ar-EG/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/bn/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/bn/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/ccp/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ccp/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/en/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/en/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/en-001/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/en-001/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/en-ZA/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/en-ZA/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/es/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/es/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/es-AR/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/es-AR/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/fr/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/fr/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/fil/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/fil/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/ja/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ja/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/ru/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ru/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/sr/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/sr/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/sr-Latn/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/sr-Latn/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/th/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/th/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/tr/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/tr/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/und/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/und/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/ar/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ar/dateFields.json").as_slice()), - ("cldr-dates-full/main/ar-EG/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ar-EG/dateFields.json").as_slice()), - ("cldr-dates-full/main/bn/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/bn/dateFields.json").as_slice()), - ("cldr-dates-full/main/ccp/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ccp/dateFields.json").as_slice()), - ("cldr-dates-full/main/en/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/en/dateFields.json").as_slice()), - ("cldr-dates-full/main/en-001/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/en-001/dateFields.json").as_slice()), - ("cldr-dates-full/main/en-ZA/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/en-ZA/dateFields.json").as_slice()), - ("cldr-dates-full/main/es/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/es/dateFields.json").as_slice()), - ("cldr-dates-full/main/es-AR/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/es-AR/dateFields.json").as_slice()), - ("cldr-dates-full/main/fr/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/fr/dateFields.json").as_slice()), - ("cldr-dates-full/main/fil/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/fil/dateFields.json").as_slice()), - ("cldr-dates-full/main/ja/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ja/dateFields.json").as_slice()), - ("cldr-dates-full/main/ru/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ru/dateFields.json").as_slice()), - ("cldr-dates-full/main/sr/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/sr/dateFields.json").as_slice()), - ("cldr-dates-full/main/sr-Latn/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/sr-Latn/dateFields.json").as_slice()), - ("cldr-dates-full/main/th/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/th/dateFields.json").as_slice()), - ("cldr-dates-full/main/tr/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/tr/dateFields.json").as_slice()), - ("cldr-dates-full/main/und/dateFields.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/und/dateFields.json").as_slice()), - ("cldr-dates-full/main/ar/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ar/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/ar-EG/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ar-EG/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/bn/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/bn/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/ccp/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ccp/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/en/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/en/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/en-001/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/en-001/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/en-ZA/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/en-ZA/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/es/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/es/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/es-AR/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/es-AR/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/fr/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/fr/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/fil/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/fil/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/ja/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ja/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/ru/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/ru/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/sr/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/sr/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/sr-Latn/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/sr-Latn/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/th/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/th/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/tr/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/tr/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/und/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/und/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/cs/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/cs/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/cs/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/cs/timeZoneNames.json").as_slice()), - ("cldr-dates-full/main/haw/ca-gregorian.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/haw/ca-gregorian.json").as_slice()), - ("cldr-dates-full/main/haw/timeZoneNames.json", include_bytes!("../../../tests/data/cldr/cldr-dates-full/main/haw/timeZoneNames.json").as_slice()), - ("cldr-localenames-full/main/ar/languages.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ar/languages.json").as_slice()), - ("cldr-localenames-full/main/ar-EG/languages.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ar-EG/languages.json").as_slice()), - ("cldr-localenames-full/main/bn/languages.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/bn/languages.json").as_slice()), - ("cldr-localenames-full/main/ccp/languages.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ccp/languages.json").as_slice()), - ("cldr-localenames-full/main/en/languages.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/en/languages.json").as_slice()), - ("cldr-localenames-full/main/en-001/languages.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/en-001/languages.json").as_slice()), - ("cldr-localenames-full/main/en-ZA/languages.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/en-ZA/languages.json").as_slice()), - ("cldr-localenames-full/main/es/languages.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/es/languages.json").as_slice()), - ("cldr-localenames-full/main/es-AR/languages.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/es-AR/languages.json").as_slice()), - ("cldr-localenames-full/main/fr/languages.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/fr/languages.json").as_slice()), - ("cldr-localenames-full/main/fil/languages.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/fil/languages.json").as_slice()), - ("cldr-localenames-full/main/ja/languages.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ja/languages.json").as_slice()), - ("cldr-localenames-full/main/ru/languages.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ru/languages.json").as_slice()), - ("cldr-localenames-full/main/sr/languages.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/sr/languages.json").as_slice()), - ("cldr-localenames-full/main/sr-Latn/languages.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/sr-Latn/languages.json").as_slice()), - ("cldr-localenames-full/main/th/languages.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/th/languages.json").as_slice()), - ("cldr-localenames-full/main/tr/languages.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/tr/languages.json").as_slice()), - ("cldr-localenames-full/main/ar/scripts.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ar/scripts.json").as_slice()), - ("cldr-localenames-full/main/ar-EG/scripts.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ar-EG/scripts.json").as_slice()), - ("cldr-localenames-full/main/bn/scripts.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/bn/scripts.json").as_slice()), - ("cldr-localenames-full/main/ccp/scripts.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ccp/scripts.json").as_slice()), - ("cldr-localenames-full/main/en/scripts.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/en/scripts.json").as_slice()), - ("cldr-localenames-full/main/en-001/scripts.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/en-001/scripts.json").as_slice()), - ("cldr-localenames-full/main/en-ZA/scripts.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/en-ZA/scripts.json").as_slice()), - ("cldr-localenames-full/main/es/scripts.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/es/scripts.json").as_slice()), - ("cldr-localenames-full/main/es-AR/scripts.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/es-AR/scripts.json").as_slice()), - ("cldr-localenames-full/main/fr/scripts.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/fr/scripts.json").as_slice()), - ("cldr-localenames-full/main/fil/scripts.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/fil/scripts.json").as_slice()), - ("cldr-localenames-full/main/ja/scripts.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ja/scripts.json").as_slice()), - ("cldr-localenames-full/main/ru/scripts.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ru/scripts.json").as_slice()), - ("cldr-localenames-full/main/sr/scripts.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/sr/scripts.json").as_slice()), - ("cldr-localenames-full/main/sr-Latn/scripts.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/sr-Latn/scripts.json").as_slice()), - ("cldr-localenames-full/main/th/scripts.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/th/scripts.json").as_slice()), - ("cldr-localenames-full/main/tr/scripts.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/tr/scripts.json").as_slice()), - ("cldr-localenames-full/main/ar/territories.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ar/territories.json").as_slice()), - ("cldr-localenames-full/main/ar-EG/territories.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ar-EG/territories.json").as_slice()), - ("cldr-localenames-full/main/bn/territories.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/bn/territories.json").as_slice()), - ("cldr-localenames-full/main/ccp/territories.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ccp/territories.json").as_slice()), - ("cldr-localenames-full/main/en/territories.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/en/territories.json").as_slice()), - ("cldr-localenames-full/main/en-001/territories.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/en-001/territories.json").as_slice()), - ("cldr-localenames-full/main/en-ZA/territories.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/en-ZA/territories.json").as_slice()), - ("cldr-localenames-full/main/es/territories.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/es/territories.json").as_slice()), - ("cldr-localenames-full/main/es-AR/territories.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/es-AR/territories.json").as_slice()), - ("cldr-localenames-full/main/fr/territories.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/fr/territories.json").as_slice()), - ("cldr-localenames-full/main/fil/territories.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/fil/territories.json").as_slice()), - ("cldr-localenames-full/main/ja/territories.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ja/territories.json").as_slice()), - ("cldr-localenames-full/main/ru/territories.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ru/territories.json").as_slice()), - ("cldr-localenames-full/main/sr/territories.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/sr/territories.json").as_slice()), - ("cldr-localenames-full/main/sr-Latn/territories.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/sr-Latn/territories.json").as_slice()), - ("cldr-localenames-full/main/th/territories.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/th/territories.json").as_slice()), - ("cldr-localenames-full/main/tr/territories.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/tr/territories.json").as_slice()), - ("cldr-localenames-full/main/ar/variants.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ar/variants.json").as_slice()), - ("cldr-localenames-full/main/ar-EG/variants.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ar-EG/variants.json").as_slice()), - ("cldr-localenames-full/main/en/variants.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/en/variants.json").as_slice()), - ("cldr-localenames-full/main/en-001/variants.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/en-001/variants.json").as_slice()), - ("cldr-localenames-full/main/en-ZA/variants.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/en-ZA/variants.json").as_slice()), - ("cldr-localenames-full/main/es/variants.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/es/variants.json").as_slice()), - ("cldr-localenames-full/main/es-AR/variants.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/es-AR/variants.json").as_slice()), - ("cldr-localenames-full/main/fr/variants.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/fr/variants.json").as_slice()), - ("cldr-localenames-full/main/fil/variants.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/fil/variants.json").as_slice()), - ("cldr-localenames-full/main/ja/variants.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ja/variants.json").as_slice()), - ("cldr-localenames-full/main/ru/variants.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/ru/variants.json").as_slice()), - ("cldr-localenames-full/main/sr/variants.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/sr/variants.json").as_slice()), - ("cldr-localenames-full/main/sr-Latn/variants.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/sr-Latn/variants.json").as_slice()), - ("cldr-localenames-full/main/th/variants.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/th/variants.json").as_slice()), - ("cldr-localenames-full/main/tr/variants.json", include_bytes!("../../../tests/data/cldr/cldr-localenames-full/main/tr/variants.json").as_slice()), - ("cldr-misc-full/main/ar/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/ar/characters.json").as_slice()), - ("cldr-misc-full/main/ar-EG/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/ar-EG/characters.json").as_slice()), - ("cldr-misc-full/main/bn/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/bn/characters.json").as_slice()), - ("cldr-misc-full/main/ccp/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/ccp/characters.json").as_slice()), - ("cldr-misc-full/main/en/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/en/characters.json").as_slice()), - ("cldr-misc-full/main/en-001/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/en-001/characters.json").as_slice()), - ("cldr-misc-full/main/en-ZA/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/en-ZA/characters.json").as_slice()), - ("cldr-misc-full/main/es/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/es/characters.json").as_slice()), - ("cldr-misc-full/main/es-AR/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/es-AR/characters.json").as_slice()), - ("cldr-misc-full/main/fr/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/fr/characters.json").as_slice()), - ("cldr-misc-full/main/fil/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/fil/characters.json").as_slice()), - ("cldr-misc-full/main/ja/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/ja/characters.json").as_slice()), - ("cldr-misc-full/main/ru/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/ru/characters.json").as_slice()), - ("cldr-misc-full/main/sr/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/sr/characters.json").as_slice()), - ("cldr-misc-full/main/sr-Latn/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/sr-Latn/characters.json").as_slice()), - ("cldr-misc-full/main/th/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/th/characters.json").as_slice()), - ("cldr-misc-full/main/tr/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/tr/characters.json").as_slice()), - ("cldr-misc-full/main/und/characters.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/und/characters.json").as_slice()), - ("cldr-misc-full/main/ar/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/ar/listPatterns.json").as_slice()), - ("cldr-misc-full/main/ar-EG/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/ar-EG/listPatterns.json").as_slice()), - ("cldr-misc-full/main/bn/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/bn/listPatterns.json").as_slice()), - ("cldr-misc-full/main/ccp/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/ccp/listPatterns.json").as_slice()), - ("cldr-misc-full/main/en/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/en/listPatterns.json").as_slice()), - ("cldr-misc-full/main/en-001/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/en-001/listPatterns.json").as_slice()), - ("cldr-misc-full/main/en-ZA/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/en-ZA/listPatterns.json").as_slice()), - ("cldr-misc-full/main/es/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/es/listPatterns.json").as_slice()), - ("cldr-misc-full/main/es-AR/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/es-AR/listPatterns.json").as_slice()), - ("cldr-misc-full/main/fr/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/fr/listPatterns.json").as_slice()), - ("cldr-misc-full/main/fil/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/fil/listPatterns.json").as_slice()), - ("cldr-misc-full/main/ja/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/ja/listPatterns.json").as_slice()), - ("cldr-misc-full/main/ru/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/ru/listPatterns.json").as_slice()), - ("cldr-misc-full/main/sr/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/sr/listPatterns.json").as_slice()), - ("cldr-misc-full/main/sr-Latn/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/sr-Latn/listPatterns.json").as_slice()), - ("cldr-misc-full/main/th/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/th/listPatterns.json").as_slice()), - ("cldr-misc-full/main/tr/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/tr/listPatterns.json").as_slice()), - ("cldr-misc-full/main/und/listPatterns.json", include_bytes!("../../../tests/data/cldr/cldr-misc-full/main/und/listPatterns.json").as_slice()), - ("cldr-numbers-full/main/ar/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/ar/currencies.json").as_slice()), - ("cldr-numbers-full/main/ar-EG/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/ar-EG/currencies.json").as_slice()), - ("cldr-numbers-full/main/bn/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/bn/currencies.json").as_slice()), - ("cldr-numbers-full/main/ccp/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/ccp/currencies.json").as_slice()), - ("cldr-numbers-full/main/en/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/en/currencies.json").as_slice()), - ("cldr-numbers-full/main/en-001/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/en-001/currencies.json").as_slice()), - ("cldr-numbers-full/main/en-ZA/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/en-ZA/currencies.json").as_slice()), - ("cldr-numbers-full/main/es/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/es/currencies.json").as_slice()), - ("cldr-numbers-full/main/es-AR/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/es-AR/currencies.json").as_slice()), - ("cldr-numbers-full/main/fr/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/fr/currencies.json").as_slice()), - ("cldr-numbers-full/main/fil/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/fil/currencies.json").as_slice()), - ("cldr-numbers-full/main/ja/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/ja/currencies.json").as_slice()), - ("cldr-numbers-full/main/ru/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/ru/currencies.json").as_slice()), - ("cldr-numbers-full/main/sr/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/sr/currencies.json").as_slice()), - ("cldr-numbers-full/main/sr-Latn/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/sr-Latn/currencies.json").as_slice()), - ("cldr-numbers-full/main/th/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/th/currencies.json").as_slice()), - ("cldr-numbers-full/main/tr/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/tr/currencies.json").as_slice()), - ("cldr-numbers-full/main/und/currencies.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/und/currencies.json").as_slice()), - ("cldr-numbers-full/main/ar/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/ar/numbers.json").as_slice()), - ("cldr-numbers-full/main/ar-EG/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/ar-EG/numbers.json").as_slice()), - ("cldr-numbers-full/main/bn/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/bn/numbers.json").as_slice()), - ("cldr-numbers-full/main/ccp/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/ccp/numbers.json").as_slice()), - ("cldr-numbers-full/main/en/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/en/numbers.json").as_slice()), - ("cldr-numbers-full/main/en-001/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/en-001/numbers.json").as_slice()), - ("cldr-numbers-full/main/en-ZA/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/en-ZA/numbers.json").as_slice()), - ("cldr-numbers-full/main/es/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/es/numbers.json").as_slice()), - ("cldr-numbers-full/main/es-AR/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/es-AR/numbers.json").as_slice()), - ("cldr-numbers-full/main/fr/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/fr/numbers.json").as_slice()), - ("cldr-numbers-full/main/fil/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/fil/numbers.json").as_slice()), - ("cldr-numbers-full/main/ja/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/ja/numbers.json").as_slice()), - ("cldr-numbers-full/main/ru/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/ru/numbers.json").as_slice()), - ("cldr-numbers-full/main/sr/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/sr/numbers.json").as_slice()), - ("cldr-numbers-full/main/sr-Latn/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/sr-Latn/numbers.json").as_slice()), - ("cldr-numbers-full/main/th/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/th/numbers.json").as_slice()), - ("cldr-numbers-full/main/tr/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/tr/numbers.json").as_slice()), - ("cldr-numbers-full/main/und/numbers.json", include_bytes!("../../../tests/data/cldr/cldr-numbers-full/main/und/numbers.json").as_slice()), - ("cldr-units-full/main/ar/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/ar/units.json").as_slice()), - ("cldr-units-full/main/ar-EG/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/ar-EG/units.json").as_slice()), - ("cldr-units-full/main/bn/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/bn/units.json").as_slice()), - ("cldr-units-full/main/ccp/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/ccp/units.json").as_slice()), - ("cldr-units-full/main/en/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/en/units.json").as_slice()), - ("cldr-units-full/main/en-001/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/en-001/units.json").as_slice()), - ("cldr-units-full/main/en-ZA/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/en-ZA/units.json").as_slice()), - ("cldr-units-full/main/es/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/es/units.json").as_slice()), - ("cldr-units-full/main/es-AR/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/es-AR/units.json").as_slice()), - ("cldr-units-full/main/fr/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/fr/units.json").as_slice()), - ("cldr-units-full/main/fil/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/fil/units.json").as_slice()), - ("cldr-units-full/main/ja/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/ja/units.json").as_slice()), - ("cldr-units-full/main/ru/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/ru/units.json").as_slice()), - ("cldr-units-full/main/sr/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/sr/units.json").as_slice()), - ("cldr-units-full/main/sr-Latn/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/sr-Latn/units.json").as_slice()), - ("cldr-units-full/main/th/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/th/units.json").as_slice()), - ("cldr-units-full/main/tr/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/tr/units.json").as_slice()), - ("cldr-units-full/main/und/units.json", include_bytes!("../../../tests/data/cldr/cldr-units-full/main/und/units.json").as_slice()), - ("cldr-person-names-full/main/ar/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/ar/personNames.json").as_slice()), - ("cldr-person-names-full/main/ar-EG/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/ar-EG/personNames.json").as_slice()), - ("cldr-person-names-full/main/bn/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/bn/personNames.json").as_slice()), - ("cldr-person-names-full/main/ccp/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/ccp/personNames.json").as_slice()), - ("cldr-person-names-full/main/en/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/en/personNames.json").as_slice()), - ("cldr-person-names-full/main/en-001/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/en-001/personNames.json").as_slice()), - ("cldr-person-names-full/main/en-ZA/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/en-ZA/personNames.json").as_slice()), - ("cldr-person-names-full/main/es/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/es/personNames.json").as_slice()), - ("cldr-person-names-full/main/es-AR/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/es-AR/personNames.json").as_slice()), - ("cldr-person-names-full/main/fr/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/fr/personNames.json").as_slice()), - ("cldr-person-names-full/main/fil/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/fil/personNames.json").as_slice()), - ("cldr-person-names-full/main/ja/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/ja/personNames.json").as_slice()), - ("cldr-person-names-full/main/ru/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/ru/personNames.json").as_slice()), - ("cldr-person-names-full/main/sr/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/sr/personNames.json").as_slice()), - ("cldr-person-names-full/main/sr-Latn/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/sr-Latn/personNames.json").as_slice()), - ("cldr-person-names-full/main/th/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/th/personNames.json").as_slice()), - ("cldr-person-names-full/main/tr/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/tr/personNames.json").as_slice()), - ("cldr-person-names-full/main/und/personNames.json", include_bytes!("../../../tests/data/cldr/cldr-person-names-full/main/und/personNames.json").as_slice()), - ("cldr-transforms-full/main/Any-Publishing/metadata.json", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Any-Publishing/metadata.json").as_slice()), - ("cldr-transforms-full/main/Any-Publishing/source.txt", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Any-Publishing/source.txt").as_slice()), - ("cldr-transforms-full/main/Bengali-Arabic/metadata.json", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Bengali-Arabic/metadata.json").as_slice()), - ("cldr-transforms-full/main/Bengali-Arabic/source.txt", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Bengali-Arabic/source.txt").as_slice()), - ("cldr-transforms-full/main/Bengali-InterIndic/metadata.json", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Bengali-InterIndic/metadata.json").as_slice()), - ("cldr-transforms-full/main/Bengali-InterIndic/source.txt", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Bengali-InterIndic/source.txt").as_slice()), - ("cldr-transforms-full/main/InterIndic-Arabic/metadata.json", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/InterIndic-Arabic/metadata.json").as_slice()), - ("cldr-transforms-full/main/InterIndic-Arabic/source.txt", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/InterIndic-Arabic/source.txt").as_slice()), - ("cldr-transforms-full/main/Latin-ASCII/metadata.json", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Latin-ASCII/metadata.json").as_slice()), - ("cldr-transforms-full/main/Latin-ASCII/source.txt", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Latin-ASCII/source.txt").as_slice()), - ("cldr-transforms-full/main/Test-Test-CursorFilters/metadata.json", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Test-Test-CursorFilters/metadata.json").as_slice()), - ("cldr-transforms-full/main/Test-Test-CursorFilters/source.txt", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Test-Test-CursorFilters/source.txt").as_slice()), - ("cldr-transforms-full/main/Test-Test-EmptyMatches/metadata.json", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Test-Test-EmptyMatches/metadata.json").as_slice()), - ("cldr-transforms-full/main/Test-Test-EmptyMatches/source.txt", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Test-Test-EmptyMatches/source.txt").as_slice()), - ("cldr-transforms-full/main/Test-Test-HexRustWrapper/metadata.json", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Test-Test-HexRustWrapper/metadata.json").as_slice()), - ("cldr-transforms-full/main/Test-Test-HexRustWrapper/source.txt", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Test-Test-HexRustWrapper/source.txt").as_slice()), - ("cldr-transforms-full/main/Test-Test-HexUnicodeWrapper/metadata.json", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Test-Test-HexUnicodeWrapper/metadata.json").as_slice()), - ("cldr-transforms-full/main/Test-Test-HexUnicodeWrapper/source.txt", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Test-Test-HexUnicodeWrapper/source.txt").as_slice()), - ("cldr-transforms-full/main/Test-Test-NielsFunctionalityTest/metadata.json", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Test-Test-NielsFunctionalityTest/metadata.json").as_slice()), - ("cldr-transforms-full/main/Test-Test-NielsFunctionalityTest/source.txt", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Test-Test-NielsFunctionalityTest/source.txt").as_slice()), - ("cldr-transforms-full/main/Test-Test-RecursiveSuiteA/metadata.json", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteA/metadata.json").as_slice()), - ("cldr-transforms-full/main/Test-Test-RecursiveSuiteA/source.txt", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteA/source.txt").as_slice()), - ("cldr-transforms-full/main/Test-Test-RecursiveSuiteRoot/metadata.json", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteRoot/metadata.json").as_slice()), - ("cldr-transforms-full/main/Test-Test-RecursiveSuiteRoot/source.txt", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/Test-Test-RecursiveSuiteRoot/source.txt").as_slice()), - ("cldr-transforms-full/main/de-ASCII/metadata.json", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/de-ASCII/metadata.json").as_slice()), - ("cldr-transforms-full/main/de-ASCII/source.txt", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/de-ASCII/source.txt").as_slice()), - ("cldr-transforms-full/main/el-el_Latn-BGN/metadata.json", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/el-el_Latn-BGN/metadata.json").as_slice()), - ("cldr-transforms-full/main/el-el_Latn-BGN/source.txt", include_bytes!("../../../tests/data/cldr/cldr-transforms-full/main/el-el_Latn-BGN/source.txt").as_slice()) - ].into_iter().collect(), - ))))), - icuexport_paths: Some(Arc::new(SerdeCache::new(AbstractFs::Memory( - [ - ("collation/implicithan/ar_compat_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ar_compat_data.toml").as_slice()), - ("collation/implicithan/ar_compat_meta.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ar_compat_meta.toml").as_slice()), - ("collation/implicithan/ar_compat_reord.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ar_compat_reord.toml").as_slice()), - ("collation/implicithan/ar_standard_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ar_standard_data.toml").as_slice()), - ("collation/implicithan/bn_standard_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/bn_standard_data.toml").as_slice()), - ("collation/implicithan/es_standard_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/es_standard_data.toml").as_slice()), - ("collation/implicithan/fil_standard_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/fil_standard_data.toml").as_slice()), - ("collation/implicithan/ja_standard_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ja_standard_data.toml").as_slice()), - ("collation/implicithan/sr_standard_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/sr_standard_data.toml").as_slice()), - ("collation/implicithan/sr_Latn_standard_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/sr_Latn_standard_data.toml").as_slice()), - ("collation/implicithan/th_standard_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/th_standard_data.toml").as_slice()), - ("collation/implicithan/tr_standard_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/tr_standard_data.toml").as_slice()), - ("collation/implicithan/root_standard_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/root_standard_data.toml").as_slice()), - ("collation/implicithan/root_standard_dia.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/root_standard_dia.toml").as_slice()), - ("collation/implicithan/root_standard_jamo.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/root_standard_jamo.toml").as_slice()), - ("collation/implicithan/ar_standard_meta.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ar_standard_meta.toml").as_slice()), - ("collation/implicithan/bn_standard_meta.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/bn_standard_meta.toml").as_slice()), - ("collation/implicithan/es_standard_meta.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/es_standard_meta.toml").as_slice()), - ("collation/implicithan/fil_standard_meta.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/fil_standard_meta.toml").as_slice()), - ("collation/implicithan/ja_standard_meta.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ja_standard_meta.toml").as_slice()), - ("collation/implicithan/ru_standard_meta.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ru_standard_meta.toml").as_slice()), - ("collation/implicithan/sr_standard_meta.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/sr_standard_meta.toml").as_slice()), - ("collation/implicithan/sr_Latn_standard_meta.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/sr_Latn_standard_meta.toml").as_slice()), - ("collation/implicithan/th_standard_meta.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/th_standard_meta.toml").as_slice()), - ("collation/implicithan/tr_standard_meta.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/tr_standard_meta.toml").as_slice()), - ("collation/implicithan/root_standard_meta.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/root_standard_meta.toml").as_slice()), - ("collation/implicithan/root_standard_prim.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/root_standard_prim.toml").as_slice()), - ("collation/implicithan/ar_standard_reord.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ar_standard_reord.toml").as_slice()), - ("collation/implicithan/bn_standard_reord.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/bn_standard_reord.toml").as_slice()), - ("collation/implicithan/ja_standard_reord.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ja_standard_reord.toml").as_slice()), - ("collation/implicithan/ru_standard_reord.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ru_standard_reord.toml").as_slice()), - ("collation/implicithan/sr_standard_reord.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/sr_standard_reord.toml").as_slice()), - ("collation/implicithan/sr_Latn_standard_reord.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/sr_Latn_standard_reord.toml").as_slice()), - ("collation/implicithan/th_standard_reord.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/th_standard_reord.toml").as_slice()), - ("collation/implicithan/bn_traditional_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/bn_traditional_data.toml").as_slice()), - ("collation/implicithan/es_traditional_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/es_traditional_data.toml").as_slice()), - ("collation/implicithan/bn_traditional_meta.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/bn_traditional_meta.toml").as_slice()), - ("collation/implicithan/es_traditional_meta.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/es_traditional_meta.toml").as_slice()), - ("collation/implicithan/bn_traditional_reord.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/bn_traditional_reord.toml").as_slice()), - ("collation/implicithan/ja_unihan_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ja_unihan_data.toml").as_slice()), - ("collation/implicithan/ja_unihan_meta.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ja_unihan_meta.toml").as_slice()), - ("collation/implicithan/ja_unihan_reord.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ja_unihan_reord.toml").as_slice()), - ("collation/implicithan/ko_search_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ko_search_data.toml").as_slice()), - ("collation/implicithan/ko_searchjl_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ko_searchjl_data.toml").as_slice()), - ("collation/implicithan/ko_standard_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ko_standard_data.toml").as_slice()), - ("collation/implicithan/ko_unihan_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/ko_unihan_data.toml").as_slice()), - ("collation/implicithan/root_emoji_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/root_emoji_data.toml").as_slice()), - ("collation/implicithan/root_emoji_meta.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/root_emoji_meta.toml").as_slice()), - ("collation/implicithan/root_eor_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/root_eor_data.toml").as_slice()), - ("collation/implicithan/root_eor_meta.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/root_eor_meta.toml").as_slice()), - ("collation/implicithan/zh_big5han_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/zh_big5han_data.toml").as_slice()), - ("collation/implicithan/zh_gb2312han_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/zh_gb2312han_data.toml").as_slice()), - ("collation/implicithan/zh_pinyin_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/zh_pinyin_data.toml").as_slice()), - ("collation/implicithan/zh_stroke_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/zh_stroke_data.toml").as_slice()), - ("collation/implicithan/zh_unihan_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/zh_unihan_data.toml").as_slice()), - ("collation/implicithan/zh_zhuyin_data.toml", include_bytes!("../../../tests/data/icuexport/collation/implicithan/zh_zhuyin_data.toml").as_slice()), - ("norm/small/compositions.toml", include_bytes!("../../../tests/data/icuexport/norm/small/compositions.toml").as_slice()), - ("norm/small/decompositionex.toml", include_bytes!("../../../tests/data/icuexport/norm/small/decompositionex.toml").as_slice()), - ("norm/small/nfd.toml", include_bytes!("../../../tests/data/icuexport/norm/small/nfd.toml").as_slice()), - ("norm/small/nfdex.toml", include_bytes!("../../../tests/data/icuexport/norm/small/nfdex.toml").as_slice()), - ("norm/small/nfkd.toml", include_bytes!("../../../tests/data/icuexport/norm/small/nfkd.toml").as_slice()), - ("norm/small/nfkdex.toml", include_bytes!("../../../tests/data/icuexport/norm/small/nfkdex.toml").as_slice()), - ("norm/small/uts46d.toml", include_bytes!("../../../tests/data/icuexport/norm/small/uts46d.toml").as_slice()), - ("segmenter/dictionary/burmesedict.toml", include_bytes!("../../../tests/data/icuexport/segmenter/dictionary/burmesedict.toml").as_slice()), - ("segmenter/dictionary/cjdict.toml", include_bytes!("../../../tests/data/icuexport/segmenter/dictionary/cjdict.toml").as_slice()), - ("segmenter/dictionary/khmerdict.toml", include_bytes!("../../../tests/data/icuexport/segmenter/dictionary/khmerdict.toml").as_slice()), - ("segmenter/dictionary/laodict.toml", include_bytes!("../../../tests/data/icuexport/segmenter/dictionary/laodict.toml").as_slice()), - ("segmenter/dictionary/thaidict.toml", include_bytes!("../../../tests/data/icuexport/segmenter/dictionary/thaidict.toml").as_slice()), - ("ucase/small/ucase.toml", include_bytes!("../../../tests/data/icuexport/ucase/small/ucase.toml").as_slice()), - ("uprops/small/AHex.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/AHex.toml").as_slice()), - ("uprops/small/alnum.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/alnum.toml").as_slice()), - ("uprops/small/Alpha.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Alpha.toml").as_slice()), - ("uprops/small/Basic_Emoji.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Basic_Emoji.toml").as_slice()), - ("uprops/small/bc.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/bc.toml").as_slice()), - ("uprops/small/Bidi_C.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Bidi_C.toml").as_slice()), - ("uprops/small/Bidi_M.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Bidi_M.toml").as_slice()), - ("uprops/small/blank.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/blank.toml").as_slice()), - ("uprops/small/bmg.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/bmg.toml").as_slice()), - ("uprops/small/bpt.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/bpt.toml").as_slice()), - ("uprops/small/Cased.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Cased.toml").as_slice()), - ("uprops/small/ccc.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/ccc.toml").as_slice()), - ("uprops/small/CI.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/CI.toml").as_slice()), - ("uprops/small/Comp_Ex.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Comp_Ex.toml").as_slice()), - ("uprops/small/CWCF.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/CWCF.toml").as_slice()), - ("uprops/small/CWCM.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/CWCM.toml").as_slice()), - ("uprops/small/CWKCF.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/CWKCF.toml").as_slice()), - ("uprops/small/CWL.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/CWL.toml").as_slice()), - ("uprops/small/CWT.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/CWT.toml").as_slice()), - ("uprops/small/CWU.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/CWU.toml").as_slice()), - ("uprops/small/Dash.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Dash.toml").as_slice()), - ("uprops/small/Dep.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Dep.toml").as_slice()), - ("uprops/small/DI.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/DI.toml").as_slice()), - ("uprops/small/Dia.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Dia.toml").as_slice()), - ("uprops/small/ea.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/ea.toml").as_slice()), - ("uprops/small/EBase.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/EBase.toml").as_slice()), - ("uprops/small/EComp.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/EComp.toml").as_slice()), - ("uprops/small/EMod.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/EMod.toml").as_slice()), - ("uprops/small/Emoji.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Emoji.toml").as_slice()), - ("uprops/small/EPres.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/EPres.toml").as_slice()), - ("uprops/small/Ext.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Ext.toml").as_slice()), - ("uprops/small/ExtPict.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/ExtPict.toml").as_slice()), - ("uprops/small/gc.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/gc.toml").as_slice()), - ("uprops/small/GCB.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/GCB.toml").as_slice()), - ("uprops/small/gcm.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/gcm.toml").as_slice()), - ("uprops/small/Gr_Base.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Gr_Base.toml").as_slice()), - ("uprops/small/Gr_Ext.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Gr_Ext.toml").as_slice()), - ("uprops/small/Gr_Link.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Gr_Link.toml").as_slice()), - ("uprops/small/graph.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/graph.toml").as_slice()), - ("uprops/small/Hex.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Hex.toml").as_slice()), - ("uprops/small/hst.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/hst.toml").as_slice()), - ("uprops/small/Hyphen.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Hyphen.toml").as_slice()), - ("uprops/small/IDC.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/IDC.toml").as_slice()), - ("uprops/small/Ideo.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Ideo.toml").as_slice()), - ("uprops/small/IDS.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/IDS.toml").as_slice()), - ("uprops/small/IDSB.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/IDSB.toml").as_slice()), - ("uprops/small/IDST.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/IDST.toml").as_slice()), - ("uprops/small/InSC.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/InSC.toml").as_slice()), - ("uprops/small/Join_C.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Join_C.toml").as_slice()), - ("uprops/small/jt.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/jt.toml").as_slice()), - ("uprops/small/lb.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/lb.toml").as_slice()), - ("uprops/small/LOE.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/LOE.toml").as_slice()), - ("uprops/small/Lower.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Lower.toml").as_slice()), - ("uprops/small/Math.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Math.toml").as_slice()), - ("uprops/small/NChar.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/NChar.toml").as_slice()), - ("uprops/small/nfcinert.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/nfcinert.toml").as_slice()), - ("uprops/small/nfdinert.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/nfdinert.toml").as_slice()), - ("uprops/small/nfkcinert.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/nfkcinert.toml").as_slice()), - ("uprops/small/nfkdinert.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/nfkdinert.toml").as_slice()), - ("uprops/small/Pat_Syn.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Pat_Syn.toml").as_slice()), - ("uprops/small/Pat_WS.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Pat_WS.toml").as_slice()), - ("uprops/small/PCM.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/PCM.toml").as_slice()), - ("uprops/small/print.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/print.toml").as_slice()), - ("uprops/small/QMark.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/QMark.toml").as_slice()), - ("uprops/small/Radical.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Radical.toml").as_slice()), - ("uprops/small/RI.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/RI.toml").as_slice()), - ("uprops/small/SB.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/SB.toml").as_slice()), - ("uprops/small/sc.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/sc.toml").as_slice()), - ("uprops/small/scx.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/scx.toml").as_slice()), - ("uprops/small/SD.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/SD.toml").as_slice()), - ("uprops/small/segstart.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/segstart.toml").as_slice()), - ("uprops/small/Sensitive.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Sensitive.toml").as_slice()), - ("uprops/small/STerm.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/STerm.toml").as_slice()), - ("uprops/small/Term.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Term.toml").as_slice()), - ("uprops/small/UIdeo.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/UIdeo.toml").as_slice()), - ("uprops/small/Upper.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/Upper.toml").as_slice()), - ("uprops/small/VS.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/VS.toml").as_slice()), - ("uprops/small/WB.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/WB.toml").as_slice()), - ("uprops/small/WSpace.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/WSpace.toml").as_slice()), - ("uprops/small/xdigit.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/xdigit.toml").as_slice()), - ("uprops/small/XIDC.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/XIDC.toml").as_slice()), - ("uprops/small/XIDS.toml", include_bytes!("../../../tests/data/icuexport/uprops/small/XIDS.toml").as_slice()) - ].into_iter().collect(), - )))), - segmenter_lstm_paths: Some(Arc::new(SerdeCache::new(AbstractFs::Memory( - [ - ("Burmese_codepoints_exclusive_model4_heavy/weights.json", include_bytes!("../../../tests/data/lstm/Burmese_codepoints_exclusive_model4_heavy/weights.json").as_slice()), - ("Khmer_codepoints_exclusive_model4_heavy/weights.json", include_bytes!("../../../tests/data/lstm/Khmer_codepoints_exclusive_model4_heavy/weights.json").as_slice()), - ("Lao_codepoints_exclusive_model4_heavy/weights.json", include_bytes!("../../../tests/data/lstm/Lao_codepoints_exclusive_model4_heavy/weights.json").as_slice()), - ("Thai_codepoints_exclusive_model4_heavy/weights.json", include_bytes!("../../../tests/data/lstm/Thai_codepoints_exclusive_model4_heavy/weights.json").as_slice()), - ("Thai_graphclust_model4_heavy/weights.json", include_bytes!("../../../tests/data/lstm/Thai_graphclust_model4_heavy/weights.json").as_slice()) - ].into_iter().collect(), - )))), - ..DatagenProvider::new_custom() - }) - .clone() - } -} diff --git a/provider/datagen/src/transform/cldr/cldr_serde/displaynames/mod.rs b/provider/datagen/src/transform/cldr/cldr_serde/displaynames/mod.rs deleted file mode 100644 index bf27f0070d9..00000000000 --- a/provider/datagen/src/transform/cldr/cldr_serde/displaynames/mod.rs +++ /dev/null @@ -1,8 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -pub(in crate::provider) mod language; -pub(in crate::provider) mod region; -pub(in crate::provider) mod script; -pub(in crate::provider) mod variant; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/mod.rs b/provider/datagen/src/transform/cldr/cldr_serde/mod.rs deleted file mode 100644 index ae48f7ce893..00000000000 --- a/provider/datagen/src/transform/cldr/cldr_serde/mod.rs +++ /dev/null @@ -1,39 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -//! Serde structures for CLDR JSON. -//! -//! The modules below each contain Rust struct definitions for CLDR JSON files, with Serde -//! deserialization support. These structures can be used in the transformers. - -pub(in crate::provider) mod aliases; -pub(in crate::provider) mod ca; -pub(in crate::provider) mod coverage_levels; -#[cfg(feature = "experimental_components")] -pub(in crate::provider) mod currencies; -#[cfg(feature = "experimental_components")] -pub(in crate::provider) mod date_fields; -pub(in crate::provider) mod directionality; -#[cfg(feature = "experimental_components")] -pub(in crate::provider) mod displaynames; -pub(in crate::provider) mod exemplar_chars; -pub(in crate::provider) mod japanese; -pub(in crate::provider) mod likely_subtags; -pub(in crate::provider) mod list_patterns; -pub(in crate::provider) mod locale_resource; -pub(in crate::provider) mod numbering_systems; -pub(in crate::provider) mod numbers; -pub(in crate::provider) mod parent_locales; -#[cfg(feature = "experimental_components")] -pub(in crate::provider) mod personnames; -pub(in crate::provider) mod plural_ranges; -pub(in crate::provider) mod plurals; -pub(in crate::provider) mod time_zones; -#[cfg(feature = "experimental_components")] -pub(in crate::provider) mod transforms; -#[cfg(feature = "experimental_components")] -pub(in crate::provider) mod units; -pub(in crate::provider) mod week_data; - -use locale_resource::LocaleResource; diff --git a/provider/datagen/src/transform/cldr/cldr_serde/personnames/person_name_format_json_struct.rs b/provider/datagen/src/transform/cldr/cldr_serde/personnames/person_name_format_json_struct.rs deleted file mode 100644 index 302ec33239d..00000000000 --- a/provider/datagen/src/transform/cldr/cldr_serde/personnames/person_name_format_json_struct.rs +++ /dev/null @@ -1,52 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -//! Serde structs representing CLDR JSON person name files. -//! -//! Sample file: -//! - -use litemap::LiteMap; -use serde::Deserialize; - -#[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct FormalityFormatting(pub(in crate::provider) LiteMap); - -#[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct ReferringFormatting( - pub(in crate::provider) LiteMap, -); - -#[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct SizedFormatting( - pub(in crate::provider) LiteMap, -); - -#[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct OrderFormatting( - pub(in crate::provider) LiteMap, -); - -#[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct PersonNames { - #[serde(rename = "givenFirst")] - pub(in crate::provider) given_first: Vec, - #[serde(rename = "surnameFirst")] - pub(in crate::provider) surname_first: Vec, - #[serde(rename = "foreignSpaceReplacement")] - pub(in crate::provider) foreign_space_replacement: String, - pub(in crate::provider) initial: String, - #[serde(rename = "initialSequence")] - pub(in crate::provider) initial_sequence: String, - #[serde(rename = "personName")] - pub(in crate::provider) formatting_pattern: OrderFormatting, -} - -#[derive(PartialEq, Debug, Deserialize)] -pub(in crate::provider) struct CldrData { - #[serde(rename = "personNames")] - pub(in crate::provider) person_names: PersonNames, -} - -pub(in crate::provider) type Resource = super::super::LocaleResource; diff --git a/provider/datagen/src/transform/cldr/displaynames/mod.rs b/provider/datagen/src/transform/cldr/displaynames/mod.rs deleted file mode 100644 index bf27f0070d9..00000000000 --- a/provider/datagen/src/transform/cldr/displaynames/mod.rs +++ /dev/null @@ -1,8 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -pub(in crate::provider) mod language; -pub(in crate::provider) mod region; -pub(in crate::provider) mod script; -pub(in crate::provider) mod variant; diff --git a/provider/datagen/src/transform/cldr/locale_canonicalizer/mod.rs b/provider/datagen/src/transform/cldr/locale_canonicalizer/mod.rs deleted file mode 100644 index 342e3c3937b..00000000000 --- a/provider/datagen/src/transform/cldr/locale_canonicalizer/mod.rs +++ /dev/null @@ -1,7 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -pub(in crate::provider) mod aliases; -pub(in crate::provider) mod directionality; -pub(in crate::provider) mod likely_subtags; diff --git a/provider/datagen/src/transform/cldr/mod.rs b/provider/datagen/src/transform/cldr/mod.rs deleted file mode 100644 index eee361ef0ca..00000000000 --- a/provider/datagen/src/transform/cldr/mod.rs +++ /dev/null @@ -1,31 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -//! This module contains provider implementations backed by the JSON files shipped by CLDR. - -pub(in crate::provider) mod calendar; -pub(in crate::provider) mod characters; -pub(in crate::provider) mod cldr_serde; -#[cfg(feature = "experimental_components")] -pub(in crate::provider) mod currency; -pub(in crate::provider) mod datetime; -pub(in crate::provider) mod decimal; -#[cfg(feature = "experimental_components")] -pub(in crate::provider) mod displaynames; -pub(in crate::provider) mod fallback; -pub(in crate::provider) mod list; -pub(in crate::provider) mod locale_canonicalizer; -#[cfg(feature = "experimental_components")] -pub(in crate::provider) mod percent; -#[cfg(feature = "experimental_components")] -pub(in crate::provider) mod personnames; -pub(in crate::provider) mod plurals; -#[cfg(feature = "experimental_components")] -pub(in crate::provider) mod relativetime; -pub(in crate::provider) mod source; -pub(in crate::provider) mod time_zones; -#[cfg(feature = "experimental_components")] -pub(in crate::provider) mod transforms; -#[cfg(feature = "experimental_components")] -pub(in crate::provider) mod units; diff --git a/provider/datagen/src/transform/icuexport/collator/collator_serde.rs b/provider/datagen/src/transform/icuexport/collator/collator_serde.rs deleted file mode 100644 index ed5321abb8f..00000000000 --- a/provider/datagen/src/transform/icuexport/collator/collator_serde.rs +++ /dev/null @@ -1,48 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use icu::collections::codepointtrie::toml::CodePointTrieToml; - -/// Serde counterpart for `CollationDataV1`. -#[derive(serde::Deserialize)] -pub(in crate::provider) struct CollationData { - pub(in crate::provider) trie: CodePointTrieToml, - pub(in crate::provider) contexts: Vec, - pub(in crate::provider) ce32s: Vec, - // TOML integers are signed 64-bit, so the range of u64 isn't available - pub(in crate::provider) ces: Vec, -} - -/// Serde counterpart for `CollationDiacriticsV1`. -#[derive(serde::Deserialize)] -pub(in crate::provider) struct CollationDiacritics { - pub(in crate::provider) secondaries: Vec, -} - -/// Serde counterpart for `CollationJamoV1`. -#[derive(serde::Deserialize)] -pub(in crate::provider) struct CollationJamo { - pub(in crate::provider) ce32s: Vec, -} - -/// Serde counterpart for `CollationMetadataV1`. -#[derive(serde::Deserialize)] -pub(in crate::provider) struct CollationMetadata { - pub(in crate::provider) bits: u32, -} - -/// Serde counterpart for `CollationReorderingV1`. -#[derive(serde::Deserialize)] -pub(in crate::provider) struct CollationReordering { - pub(in crate::provider) min_high_no_reorder: u32, - pub(in crate::provider) reorder_table: Vec, - pub(in crate::provider) reorder_ranges: Vec, -} - -/// Serde counterpart for `CollationSpecialPrimariesV1`. -#[derive(serde::Deserialize)] -pub(in crate::provider) struct CollationSpecialPrimaries { - pub(in crate::provider) last_primaries: Vec, // length always supposed to be 4 - pub(in crate::provider) numeric_primary: u8, -} diff --git a/provider/datagen/src/transform/icuexport/mod.rs b/provider/datagen/src/transform/icuexport/mod.rs deleted file mode 100644 index ad415aea914..00000000000 --- a/provider/datagen/src/transform/icuexport/mod.rs +++ /dev/null @@ -1,11 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -//! This module contains provider implementations backed by TOML files -//! exported from ICU. - -pub(in crate::provider) mod collator; -pub(in crate::provider) mod normalizer; -pub(in crate::provider) mod ucase; -pub(in crate::provider) mod uprops; diff --git a/provider/datagen/src/transform/icuexport/normalizer/normalizer_serde.rs b/provider/datagen/src/transform/icuexport/normalizer/normalizer_serde.rs deleted file mode 100644 index 9b742bd64b1..00000000000 --- a/provider/datagen/src/transform/icuexport/normalizer/normalizer_serde.rs +++ /dev/null @@ -1,42 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use icu::collections::codepointtrie::toml::CodePointTrieToml; - -#[derive(serde::Deserialize)] -pub(in crate::provider) struct DecompositionData { - pub(in crate::provider) trie: CodePointTrieToml, -} - -#[derive(serde::Deserialize)] -pub(in crate::provider) struct DecompositionSupplement { - pub(in crate::provider) trie: CodePointTrieToml, - pub(in crate::provider) flags: u8, - pub(in crate::provider) cap: u16, -} - -#[derive(serde::Deserialize)] -pub(in crate::provider) struct DecompositionTables { - pub(in crate::provider) scalars16: Vec, - pub(in crate::provider) scalars32: Vec, -} - -#[derive(serde::Deserialize)] -pub(in crate::provider) struct CompositionPassthrough { - #[serde(rename = "trie")] - pub(in crate::provider) _trie: CodePointTrieToml, - #[serde(rename = "first")] - pub(in crate::provider) _first: u32, -} - -#[derive(serde::Deserialize)] -pub(in crate::provider) struct CanonicalCompositions { - pub(in crate::provider) compositions: Vec, -} - -#[derive(serde::Deserialize)] -pub(in crate::provider) struct NonRecursiveDecompositionSupplement { - pub(in crate::provider) trie: CodePointTrieToml, - pub(in crate::provider) scalars32: Vec, -} diff --git a/provider/datagen/src/transform/icuexport/ucase/ucase_serde.rs b/provider/datagen/src/transform/icuexport/ucase/ucase_serde.rs deleted file mode 100644 index 6c1d65f9538..00000000000 --- a/provider/datagen/src/transform/icuexport/ucase/ucase_serde.rs +++ /dev/null @@ -1,27 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use icu::collections::codepointtrie::toml::CodePointTrieToml; - -#[derive(serde::Deserialize)] -pub(in crate::provider) struct Exceptions { - pub(in crate::provider) exceptions: Vec, -} - -#[derive(serde::Deserialize)] -pub(in crate::provider) struct Unfold { - pub(in crate::provider) unfold: Vec, -} - -#[derive(serde::Deserialize)] -pub(in crate::provider) struct Level1 { - pub(in crate::provider) code_point_trie: CodePointTrieToml, - pub(in crate::provider) exceptions: Exceptions, - pub(in crate::provider) unfold: Unfold, -} - -#[derive(serde::Deserialize)] -pub(in crate::provider) struct Main { - pub(in crate::provider) ucase: Level1, -} diff --git a/provider/datagen/src/transform/icuexport/uprops/uprops_serde.rs b/provider/datagen/src/transform/icuexport/uprops/uprops_serde.rs deleted file mode 100644 index 66b55e02f95..00000000000 --- a/provider/datagen/src/transform/icuexport/uprops/uprops_serde.rs +++ /dev/null @@ -1,136 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -use icu::collections::codepointtrie::toml::CodePointTrieToml; - -pub(in crate::provider) mod binary { - #[derive(serde::Deserialize)] - pub(in crate::provider) struct BinaryProperty { - #[serde(rename = "long_name")] - pub(in crate::provider) _long_name: String, - #[serde(skip)] - #[serde(rename = "short_name")] - pub(in crate::provider) _short_name: String, - pub(in crate::provider) ranges: Vec<(u32, u32)>, - pub(in crate::provider) strings: Option>, - } - - #[derive(serde::Deserialize)] - pub(in crate::provider) struct Main { - #[serde(default)] - pub(in crate::provider) binary_property: Vec, - } -} - -#[derive(serde::Deserialize)] -pub(in crate::provider) struct PropertyValue { - pub(in crate::provider) discr: u32, - pub(in crate::provider) long: String, - pub(in crate::provider) short: Option, - #[serde(default)] - pub(in crate::provider) aliases: Vec, -} - -pub(in crate::provider) mod enumerated { - #[derive(serde::Deserialize)] - pub(in crate::provider) struct EnumeratedPropertyMapRange { - #[serde(rename = "a")] - pub(in crate::provider) _a: u32, - #[serde(rename = "b")] - pub(in crate::provider) _b: u32, - #[serde(rename = "v")] - pub(in crate::provider) _v: u32, - #[serde(rename = "name")] - pub(in crate::provider) _name: String, - } - - #[derive(serde::Deserialize)] - pub(in crate::provider) struct EnumeratedPropertyMap { - #[serde(rename = "long_name")] - pub(in crate::provider) _long_name: String, - #[serde(rename = "short_name")] - pub(in crate::provider) _short_name: String, - pub(in crate::provider) values: Vec, - #[serde(rename = "ranges")] - pub(in crate::provider) _ranges: Vec, - pub(in crate::provider) code_point_trie: super::CodePointTrieToml, - } - - #[derive(serde::Deserialize)] - pub(in crate::provider) struct Main { - #[serde(default)] - pub(in crate::provider) enum_property: Vec, - } -} - -pub(in crate::provider) mod code_point_prop { - #[derive(serde::Deserialize)] - pub(in crate::provider) struct CodePointPropertyMapRange { - #[serde(rename = "a")] - pub(in crate::provider) _a: u32, - #[serde(rename = "b")] - pub(in crate::provider) _b: u32, - #[serde(rename = "v")] - pub(in crate::provider) _v: u32, - } - - #[derive(serde::Deserialize)] - pub(in crate::provider) struct CodePointPropertyMap { - #[serde(rename = "long_name")] - pub(in crate::provider) _long_name: String, - #[serde(rename = "short_name")] - pub(in crate::provider) _short_name: String, - #[serde(rename = "ranges")] - pub(in crate::provider) _ranges: Vec, - #[cfg(any(feature = "use_wasm", feature = "use_icu4c"))] - pub(in crate::provider) code_point_trie: super::CodePointTrieToml, - } - - #[derive(serde::Deserialize)] - pub(in crate::provider) struct Main { - // TODO: update icuexportdata to print a different TOML header than "enum_property" - #[serde(default)] - #[cfg(any(feature = "use_wasm", feature = "use_icu4c"))] - pub(in crate::provider) enum_property: Vec, - } -} - -pub(in crate::provider) mod mask { - #[derive(serde::Deserialize)] - pub(in crate::provider) struct MaskPropertyMap { - #[serde(rename = "long_name")] - pub(in crate::provider) _long_name: String, - #[serde(rename = "short_name")] - pub(in crate::provider) _short_name: String, - #[serde(rename = "mask_for")] - pub(in crate::provider) _mask_for: String, - pub(in crate::provider) values: Vec, - } - - #[derive(serde::Deserialize)] - pub(in crate::provider) struct Main { - #[serde(default)] - pub(in crate::provider) mask_property: Vec, - } -} - -pub(in crate::provider) mod script_extensions { - use super::CodePointTrieToml; - - #[derive(serde::Deserialize)] - pub(in crate::provider) struct ScriptWithExtensionsPropertyV1Property { - #[serde(rename = "long_name")] - pub(in crate::provider) _long_name: String, - #[serde(rename = "short_name")] - pub(in crate::provider) _short_name: String, - pub(in crate::provider) script_code_array: Vec>, - pub(in crate::provider) code_point_trie: CodePointTrieToml, - } - - #[derive(serde::Deserialize)] - pub(in crate::provider) struct Main { - #[serde(default)] - pub(in crate::provider) script_extensions: Vec, - } -} diff --git a/provider/datagen/src/transform/mod.rs b/provider/datagen/src/transform/mod.rs deleted file mode 100644 index 9ee426addd0..00000000000 --- a/provider/datagen/src/transform/mod.rs +++ /dev/null @@ -1,65 +0,0 @@ -// This file is part of ICU4X. For terms of use, please see the file -// called LICENSE at the top level of the ICU4X source tree -// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). - -pub(in crate::provider) mod cldr; -pub(in crate::provider) mod icuexport; -pub(in crate::provider) mod segmenter; - -use std::collections::HashSet; - -use crate::provider::DatagenProvider; -use icu_provider::datagen::*; -use icu_provider::hello_world::*; -use icu_provider::prelude::*; - -impl DataProvider for DatagenProvider { - fn load(&self, req: DataRequest) -> Result, DataError> { - self.check_req::(req)?; - HelloWorldProvider.load(req) - } -} - -impl IterableDataProvider for DatagenProvider { - fn supported_requests(&self) -> Result, DataError> { - HelloWorldProvider.supported_requests() - } -} - -impl DatagenProvider { - fn check_req(&self, req: DataRequest) -> Result<(), DataError> - where - DatagenProvider: IterableDataProvider, - { - if ::INFO.is_singleton && !req.locale.is_empty() { - Err(DataErrorKind::ExtraneousLocale) - } else if !self.supports_request(req.locale, req.marker_attributes)? { - Err(DataErrorKind::MissingLocale) - } else { - Ok(()) - } - .map_err(|e| e.with_req(::INFO, req)) - } -} - -#[test] -fn test_missing_locale() { - use icu::locale::langid; - let provider = DatagenProvider::new_testing(); - assert!(DataProvider::::load( - &provider, - DataRequest { - locale: &langid!("fi").into(), - ..Default::default() - } - ) - .is_ok()); - assert!(DataProvider::::load( - &provider, - DataRequest { - locale: &langid!("arc").into(), - ..Default::default() - } - ) - .is_err()); -} diff --git a/provider/icu4x-datagen/Cargo.toml b/provider/icu4x-datagen/Cargo.toml index 3adff159842..6b1c0833a73 100644 --- a/provider/icu4x-datagen/Cargo.toml +++ b/provider/icu4x-datagen/Cargo.toml @@ -20,6 +20,7 @@ version.workspace = true icu_provider = { workspace = true, features = ["datagen"] } icu = { workspace = true } icu_datagen = { workspace = true, features = ["rayon"] } +icu_datagen_bikeshed = { workspace = true, optional = true } icu_provider_blob = { workspace = true, features = ["export"], optional = true } # Needed to make the exportable blob exporter @@ -49,7 +50,7 @@ simple_logger = { workspace = true } [features] default = ["use_wasm", "networking", "fs_exporter", "blob_exporter", "baked_exporter", "provider"] -provider = ["icu_datagen/provider"] +provider = ["dep:icu_datagen_bikeshed"] baked_exporter = ["icu_datagen/baked_exporter"] blob_exporter = ["icu_datagen/blob_exporter"] blob_input = [ @@ -71,14 +72,14 @@ blob_input = [ ] fs_exporter = ["icu_datagen/fs_exporter"] # Use wasm for building codepointtries -use_wasm = ["icu_datagen/use_wasm"] +use_wasm = ["icu_datagen_bikeshed?/use_wasm"] # Use local ICU4C libraries for building codepointtries # (will do nothing if used with `use_wasm`) # If neither `use_wasm` nor `use_icu4c` are enabled, # rule based segmenter data will not be generated. -use_icu4c = ["icu_datagen/use_icu4c"] -networking = ["icu_datagen/networking"] -experimental_components = ["icu_datagen/experimental_components", "icu/experimental"] +use_icu4c = ["icu_datagen_bikeshed?/use_icu4c"] +networking = ["icu_datagen_bikeshed?/networking"] +experimental = ["icu_datagen/experimental", "icu_datagen_bikeshed?/experimental", "icu/experimental"] [package.metadata.cargo-all-features] # We don't need working CPT builders for check diff --git a/provider/icu4x-datagen/src/main.rs b/provider/icu4x-datagen/src/main.rs index f8a41ec02b0..0879f2875e4 100644 --- a/provider/icu4x-datagen/src/main.rs +++ b/provider/icu4x-datagen/src/main.rs @@ -29,6 +29,8 @@ use clap::{Parser, ValueEnum}; use eyre::WrapErr; use icu_datagen::prelude::*; +#[cfg(feature = "provider")] +use icu_datagen_bikeshed::DatagenProvider; use icu_provider::datagen::ExportableProvider; use simple_logger::SimpleLogger; use std::path::PathBuf; @@ -324,8 +326,10 @@ fn main() -> eyre::Result<()> { let mut p = DatagenProvider::new_custom(); p = p.with_collation_han_database(match cli.collation_han_database { - CollationHanDatabase::Unihan => icu_datagen::CollationHanDatabase::Unihan, - CollationHanDatabase::Implicit => icu_datagen::CollationHanDatabase::Implicit, + CollationHanDatabase::Unihan => icu_datagen_bikeshed::CollationHanDatabase::Unihan, + CollationHanDatabase::Implicit => { + icu_datagen_bikeshed::CollationHanDatabase::Implicit + } }); if cli.trie_type == TrieType::Fast { @@ -381,9 +385,9 @@ fn main() -> eyre::Result<()> { if cli.locales.as_slice() == ["recommended"] { preprocessed_locales = Some(PreprocessedLocales::LanguageIdentifiers( p.locales_for_coverage_levels([ - CoverageLevel::Modern, - CoverageLevel::Moderate, - CoverageLevel::Basic, + icu_datagen_bikeshed::CoverageLevel::Modern, + icu_datagen_bikeshed::CoverageLevel::Moderate, + icu_datagen_bikeshed::CoverageLevel::Basic, ])? .into_iter() .collect(), @@ -392,9 +396,9 @@ fn main() -> eyre::Result<()> { .locales .iter() .map(|s| match &**s { - "basic" => Some(CoverageLevel::Basic), - "moderate" => Some(CoverageLevel::Moderate), - "modern" => Some(CoverageLevel::Modern), + "basic" => Some(icu_datagen_bikeshed::CoverageLevel::Basic), + "moderate" => Some(icu_datagen_bikeshed::CoverageLevel::Moderate), + "modern" => Some(icu_datagen_bikeshed::CoverageLevel::Modern), _ => None, }) .collect::>>() diff --git a/tools/bakeddata-scripts/Cargo.toml b/tools/bakeddata-scripts/Cargo.toml index 767d931e417..962fb3ebeff 100644 --- a/tools/bakeddata-scripts/Cargo.toml +++ b/tools/bakeddata-scripts/Cargo.toml @@ -12,7 +12,8 @@ edition = "2021" icu = { workspace = true, features = ["experimental"] } icu_provider = { workspace = true, features = ["datagen"] } -icu_datagen = { workspace = true, features = ["baked_exporter", "fs_exporter", "networking", "experimental_components", "rayon", "use_wasm", "provider"] } +icu_datagen = { workspace = true, features = ["baked_exporter", "fs_exporter", "experimental", "rayon"] } +icu_datagen_bikeshed = { workspace = true, features = ["networking", "experimental", "use_wasm"] } log = { workspace = true } simple_logger = { workspace = true } crlify = { workspace = true } \ No newline at end of file diff --git a/tools/bakeddata-scripts/src/main.rs b/tools/bakeddata-scripts/src/main.rs index 15c6df03ffc..1765c4f2761 100644 --- a/tools/bakeddata-scripts/src/main.rs +++ b/tools/bakeddata-scripts/src/main.rs @@ -8,6 +8,7 @@ use icu_datagen::baked_exporter; use icu_datagen::fs_exporter; use icu_datagen::fs_exporter::serializers::AbstractSerializer; use icu_datagen::prelude::*; +use icu_datagen_bikeshed::{CoverageLevel, DatagenProvider}; use icu_provider::datagen::*; use icu_provider::prelude::*; use std::collections::BTreeMap; diff --git a/tools/depcheck/src/allowlist.rs b/tools/depcheck/src/allowlist.rs index af325a67120..2de1480bf21 100644 --- a/tools/depcheck/src/allowlist.rs +++ b/tools/depcheck/src/allowlist.rs @@ -150,9 +150,9 @@ pub const EXTRA_BLOB_DEPS: &[&str] = &["cobs", "icu_provider_blob", "postcard"]; /// Keep in sync with Cargo.toml crates.io dependencies. pub const EXTRA_FS_DEPS: &[&str] = &["icu_provider_fs", "serde-json-core"]; -/// Dependencies needed by datagen (not counting `log`, `zip`, and `rayon` deps) +/// Dependencies needed by datagen provider (not counting `log` and `zip` deps) /// This might change semi frequently but we should try and keep this small. -pub const EXTRA_DATAGEN_DEPS: &[&str] = &[ +pub const EXTRA_DATAGEN_BIKESHED_DEPS: &[&str] = &[ "bincode", "crlify", "databake", @@ -181,6 +181,15 @@ pub const EXTRA_DATAGEN_DEPS: &[&str] = &[ "twox-hash", ]; +/// Dependencies needed by datagen (not counting `log` and `rayon` deps) +/// This might change semi frequently but we should try and keep this small. +pub const EXTRA_DATAGEN_DEPS: &[&str] = &[ + "databake", + "databake-derive", + "erased-serde", + "icu_registry", +]; + /// Dependencies needed by the `log` crate /// This should rarely change, and if it does consider toggling features until it doesn't /// diff --git a/tools/depcheck/src/main.rs b/tools/depcheck/src/main.rs index 67379d2baaa..2694de4b5ae 100644 --- a/tools/depcheck/src/main.rs +++ b/tools/depcheck/src/main.rs @@ -151,6 +151,7 @@ fn main() { let zip: BTreeSet<_> = EXTRA_ZIP_DEPS.iter().copied().collect(); let rayon: BTreeSet<_> = EXTRA_RAYON_DEPS.iter().copied().collect(); let datagen: BTreeSet<_> = EXTRA_DATAGEN_DEPS.iter().copied().collect(); + let datagen_bikeshed: BTreeSet<_> = EXTRA_DATAGEN_BIKESHED_DEPS.iter().copied().collect(); // These tests are in a deliberate order such that the `dep_list_name_for_error` // will be accurate, i.e. each test tests at most one extra array of data compared to the @@ -276,7 +277,7 @@ fn main() { ); test_dep_list( - "icu_datagen", + "icu_datagen_bikeshed", "normal", "--features use_icu4c", &[ @@ -285,13 +286,28 @@ fn main() { &experimental, &lstm, &blob, - &fs, &zip, + &datagen_bikeshed, + &logging, + ], + "`EXTRA_DATAGEN_BIKESHED_DEPS` or `EXTRA_ZIP_DEPS`", + ); + + test_dep_list( + "icu_datagen", + "normal", + "", + &[ + &basic, + &serde, + &experimental, + &lstm, + &fs, &rayon, &datagen, &logging, ], - "`EXTRA_DATAGEN_DEPS` or `EXTRA_ZIP_DEPS` or `EXTRA_RAYON_DEPS`", + "`EXTRA_RAYON_DEPS`", ); // syn is a large dep, and deps that are both "normal" and "proc macro" get built twice diff --git a/tools/make/data.toml b/tools/make/data.toml index 5442c5ddcb4..eb1e63210ad 100644 --- a/tools/make/data.toml +++ b/tools/make/data.toml @@ -22,9 +22,9 @@ command = "cargo" env = { ICU4X_WRITE_TESTDATA = "1" } args = [ "test", - "-p=icu_datagen", + "-p=icu_datagen_bikeshed", "--no-default-features", - "--features=fs_exporter,baked_exporter,use_wasm,rayon,experimental_components,provider", + "--features=fs_exporter,baked_exporter,use_wasm,rayon,experimental", "--", "--nocapture", "make_testdata", diff --git a/tools/testdata-scripts/Cargo.toml b/tools/testdata-scripts/Cargo.toml index 7a02c85bc4d..7a68bf53b5d 100644 --- a/tools/testdata-scripts/Cargo.toml +++ b/tools/testdata-scripts/Cargo.toml @@ -10,7 +10,7 @@ edition = "2021" [dependencies] crlify = { workspace = true } -icu_datagen = { workspace = true, features = ["provider"] } +icu_datagen_bikeshed = { workspace = true } icu_locale_core = { workspace = true, features = ["databake"] } icu_provider = { workspace = true } diff --git a/tools/testdata-scripts/src/bin/download-repo-sources.rs b/tools/testdata-scripts/src/bin/download-repo-sources.rs index 071c1d9786b..1da4d695836 100644 --- a/tools/testdata-scripts/src/bin/download-repo-sources.rs +++ b/tools/testdata-scripts/src/bin/download-repo-sources.rs @@ -4,7 +4,7 @@ use clap::{ArgAction, Parser}; use eyre::WrapErr; -use icu_datagen::DatagenProvider; +use icu_datagen_bikeshed::DatagenProvider; use icu_locale_core::*; use icu_provider::DataError; use simple_logger::SimpleLogger; @@ -50,8 +50,8 @@ fn main() -> eyre::Result<()> { _ => eyre::bail!("Only -v, -vv, and -vvv are supported"), } - let out_root = - std::path::Path::new(std::env!("CARGO_MANIFEST_DIR")).join("../../provider/datagen"); + let out_root = std::path::Path::new(std::env!("CARGO_MANIFEST_DIR")) + .join("../../provider/icu_datagen_bikeshed"); fn cached(resource: &str) -> Result { let root = std::env::var_os("ICU4X_SOURCE_CACHE") @@ -197,7 +197,7 @@ fn main() -> eyre::Result<()> { .iter() .map(|path| { let path = path.replace('\\', "/"); - format!(r#"("{path}", include_bytes!("../../../tests/data/cldr/{path}").as_slice())"#) + format!(r#"("{path}", include_bytes!("../../tests/data/cldr/{path}").as_slice())"#) }) .collect::>() .join(",\n "); @@ -205,9 +205,7 @@ fn main() -> eyre::Result<()> { .iter() .map(|path| { let path = path.replace('\\', "/"); - format!( - r#"("{path}", include_bytes!("../../../tests/data/icuexport/{path}").as_slice())"# - ) + format!(r#"("{path}", include_bytes!("../../tests/data/icuexport/{path}").as_slice())"#) }) .collect::>() .join(",\n "); @@ -215,21 +213,19 @@ fn main() -> eyre::Result<()> { .iter() .map(|path| { let path = path.replace('\\', "/"); - format!(r#"("{path}", include_bytes!("../../../tests/data/lstm/{path}").as_slice())"#) + format!(r#"("{path}", include_bytes!("../../tests/data/lstm/{path}").as_slice())"#) }) .collect::>() .join(",\n "); - write!(&mut crlify::BufWriterWithLineEndingFix::new(File::create(out_root.join("src/provider/tests/data.rs")).unwrap()), "\ + write!(&mut crlify::BufWriterWithLineEndingFix::new(File::create(out_root.join("src/tests/data.rs")).unwrap()), "\ // This file is part of ICU4X. For terms of use, please see the file // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). //! Generated by `download-repo-sources.rs` -use crate::provider::source::{{AbstractFs, SerdeCache}}; -use crate::provider::transform::cldr::source::CldrCache; -use crate::provider::DatagenProvider; +use crate::source::{{AbstractFs, CldrCache, DatagenProvider, SerdeCache}}; use std::sync::{{Arc, OnceLock}}; impl DatagenProvider {{ // This is equivalent to `new_latest_tested` for the files defined in `tools/testdata-scripts/globs.rs.data`. diff --git a/tutorials/.cargo/config.toml b/tutorials/.cargo/config.toml index b0f52ff6f10..6fb91768dd5 100644 --- a/tutorials/.cargo/config.toml +++ b/tutorials/.cargo/config.toml @@ -36,6 +36,7 @@ icu_harfbuzz = { path = "../ffi/harfbuzz" } # Provider icu_datagen = { path = "../provider/datagen" } +icu_datagen_bikeshed = { path = "../provider/bikeshed" } icu_provider = { path = "../provider/core" } icu_provider_macros = { path = "../provider/core/macros" } icu_provider_adapters = { path = "../provider/adapters" } diff --git a/tutorials/rust/baked/Cargo.toml b/tutorials/rust/baked/Cargo.toml index d6638fa8780..e521aed6c1b 100644 --- a/tutorials/rust/baked/Cargo.toml +++ b/tutorials/rust/baked/Cargo.toml @@ -19,3 +19,4 @@ zerovec = "0.10" # for databake [build-dependencies] icu = "1.5" icu_datagen = "1.5" +icu_datagen_bikeshed = "1.5" diff --git a/tutorials/rust/baked/build.rs b/tutorials/rust/baked/build.rs index edf03f29f08..6e37dc20a1d 100644 --- a/tutorials/rust/baked/build.rs +++ b/tutorials/rust/baked/build.rs @@ -4,6 +4,7 @@ use icu_datagen::baked_exporter::*; use icu_datagen::prelude::*; +use icu_datagen_bikeshed::DatagenProvider; use std::path::PathBuf; fn main() {