Checked ts_json toolchain.

[?]
Jul 10, 2021, 3:28 AM
UKQAGL5F5LWZZR7RWFJI3H2MW6LXPRGPXAIGNBZI5IVJLWUFHLGAC

Dependencies

  • [2] UUD3CJZL Making error handling more comprehensive.
  • [3] TTR5IFSG Working on building generic TSSpec.
  • [4] 2SABVMY3 Finished into_json() functionality.
  • [5] A6ZAYJNB Debugging DataSelector
  • [6] GUXZCEWW Added Country enum.
  • [7] SAHJYVNB Removed checking functionality.
  • [8] LVMGQJGH Finished framework for checking series specifications with data.
  • [9] 77SIQZ3E Separating out spec generation.
  • [10] JTX5OHWH Added USA CPI.
  • [11] GQVS55HI Finished generate_ts_spec() function.
  • [*] U4VCAFXQ Added data_type to TSSpec key.
  • [*] 4MG5JFXT First record.

Change contents

  • edit in src/ts.rs at line 46
    [13.626]
    [13.626]
    #[derive(Debug)]
  • replacement in src/main.rs at line 16
    [3.9637][2.0:220]()
    // DataSpec::from_file("source_data.keytree").write(&root_dir);
    // let series_obs = Fred::series_observations("NORURTOTADSMEI").unwrap();
    // let () = series_obs;
    // Get series_spec using series_id
    [3.9637]
    [2.220]
    let data_spec = DataSpec::from_file("source_data.keytree").unwrap();
    let ts_spec = TSSpec::from_file("ts_spec.keytree");
  • replacement in src/main.rs at line 19
    [2.221][2.221:324]()
    let series_spec = SeriesSpec::from_series_id("NORURTOTADSMEI", "source_data.keytree").unwrap();
    [2.221]
    [3.1753]
    let ts_json = ts_spec.into_json(&data_spec, &root_dir);
  • replacement in src/lib.rs at line 75
    [3.9656][3.1531:1592](),[3.1592][3.1939:1979](),[3.1939][3.1939:1979]()
    //! let source = DataSpec::from_file("source_data.keytree");
    //! source.write("/full/path/to/data");
    [3.9656]
    [3.9759]
    //! DataSpec::from_file("source_data.keytree")
    //! .unwrap()
    //! .write("/full/path/to/data");
  • replacement in src/lib.rs at line 82
    [3.6383][3.1980:2051]()
    //! source.resume_write(Series::new("GBRURNAA"), "/full/path/to/data")
    [3.6383]
    [3.10144]
    //! DataSpec::from_file("source_data.keytree")
    //! .unwrap()
    //! .resume_write("NORURTOTADSMEI", "/full/path/to/data");
  • replacement in src/lib.rs at line 93
    [3.2060][2.461:540]()
    //! let data_spec = DataSpec::from_file("source_data.keytree").into_indexed();
    [3.2060]
    [3.2140]
    //! let data_spec = DataSpec::from_file("source_data.keytree")
    //! .unwrap();
  • replacement in src/lib.rs at line 105
    [3.7305][3.2000:2080]()
    //! let data_spec = DataSpec::from_file("checked_data.keytree").into_indexed();
    [3.7305]
    [3.7469]
    //! let data_spec = DataSpec::from_file("source_data.keytree").unwrap();
  • replacement in src/lib.rs at line 112
    [3.10708][3.10708:10778]()
    //! let ts_json = ts_spec.into_json(data_spec, "/full/path/to/data");
    [3.10708]
    [3.7687]
    //! let ts_json = ts_spec.into_json(&data_spec, "/full/path/to/data");
  • replacement in src/lib.rs at line 286
    [3.2753][3.2753:2860]()
    // Its better for DataSpec to be a Vec, but we need to index into the Vec, so
    // we wrap it with an index.
    [3.2753]
    [3.2860]
    // `DataSpec` is set up in what seems like an overly complex way in order to maintain
    // the order is which data is `DataSelector` orders the series. We want to maintain an
    // ordering by (DataType, Country). But sometimes we also need to search by SeriesId so also need a
    // reverse lookup.
  • edit in src/lib.rs at line 310
    [3.3523]
    [3.3523]
    /// Test if a key `(DataType, Country)` has a `SeriesId`.
    pub fn key_has_series_id(&self, key: (DataType, Country), series_id: &SeriesId) -> Result<bool, Error> {
  • edit in src/lib.rs at line 314
    [3.3524]
    [3.3524]
    let series_specs = match self.map.get(&key) {
    Some(series_specs) => series_specs,
    None => { return Err(key_not_in_dataspec(&key.0.to_string(), &key.1.to_string())) },
    };
    Ok(series_specs.iter().any(|series| &series.series_id == series_id))
    }
  • replacement in src/lib.rs at line 432
    [3.6919][3.6919:7241]()
    pub fn resume_write(&self, series_id: SeriesId, root_path: &str) {
    for (series_id, _) in self.reverse.iter().skip_while(|(id, _)| id != &&series_id) {
    let series_spec = self.get_series_spec(series_id);
    series_spec.write_data(root_path);
    series_spec.write_meta(root_path);
    [3.6919]
    [3.7241]
    pub fn resume_write(&self, series_id: &str, root_path: &str) {
    let sid = SeriesId::new(series_id);
    for ((data_type, country), series_specs) in self
    .map
    .iter()
    .skip_while(|((data_type, country), series_specs)| {
    match self.key_has_series_id((*data_type, *country), &sid) {
    Err(err) => {
    println!("{}", err);
    panic!();
    },
    Ok(is_true) => !is_true,
    }
    })
    {
    for series_spec in series_specs {
    series_spec.write_data(root_path);
    series_spec.write_meta(root_path);
    }