Skip to content

Commit

Permalink
Update Vega-Lite to 5.21, remove 5.13, add Python functions to retrie…
Browse files Browse the repository at this point in the history
…ve library versions (#194)

* Add vega-lite 5.21, remove 5.13

* update tests

* Add Python methods to retrieve the bundled library versions

* py-fmt

* fmt-rs

* clipy fix

* fmt

* fix cli tests

* run cli tests with pixi
  • Loading branch information
jonmmease authored Oct 3, 2024
1 parent fb0080c commit 45a7e14
Show file tree
Hide file tree
Showing 39 changed files with 183 additions and 3,986 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,9 @@ jobs:
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
sudo apt-get install ttf-mscorefonts-installer
- name: Run tests
run: pixi run test-rs
run: |
pixi run test-rs
pixi run test-cli
- name: Upload test failures
uses: actions/upload-artifact@v3
if: always()
Expand Down
51 changes: 50 additions & 1 deletion vl-convert-python/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ use std::str::FromStr;
use std::sync::Mutex;
use vl_convert_rs::converter::{FormatLocale, Renderer, TimeFormatLocale, VgOpts, VlOpts};
use vl_convert_rs::html::bundle_vega_snippet;
use vl_convert_rs::module_loader::import_map::VlVersion;
use vl_convert_rs::module_loader::import_map::{
VlVersion, VEGA_EMBED_VERSION, VEGA_THEMES_VERSION, VEGA_VERSION, VL_VERSIONS,
};
use vl_convert_rs::module_loader::{FORMATE_LOCALE_MAP, TIME_FORMATE_LOCALE_MAP};
use vl_convert_rs::serde_json;
use vl_convert_rs::text::register_font_directory as register_font_directory_rs;
Expand Down Expand Up @@ -1145,6 +1147,49 @@ fn javascript_bundle(snippet: Option<String>, vl_version: Option<&str>) -> PyRes
}
}

/// Get the bundled version of Vega
///
/// Returns:
/// str: Vega version string (e.g. "5.30.0")
#[pyfunction]
#[pyo3(signature = ())]
fn get_vega_version() -> String {
VEGA_VERSION.to_string()
}

/// Get the bundled version of Vega-Themes
///
/// Returns:
/// str: Vega-Themes version string (e.g. "2.14.0")
#[pyfunction]
#[pyo3(signature = ())]
fn get_vega_themes_version() -> String {
VEGA_THEMES_VERSION.to_string()
}

/// Get the bundled version of Vega-Embed
///
/// Returns:
/// str: Vega-Embed version string (e.g. "6.26.0")
#[pyfunction]
#[pyo3(signature = ())]
fn get_vega_embed_version() -> String {
VEGA_EMBED_VERSION.to_string()
}

/// Get the bundled versions of Vega-Lite
///
/// Returns:
/// list: Vega-Lite version strings (e.g. ["5.8", "5.9", ..., "5.21"])
#[pyfunction]
#[pyo3(signature = ())]
fn get_vegalite_versions() -> Vec<String> {
VL_VERSIONS
.iter()
.map(|v| v.to_semver().to_string())
.collect()
}

/// Convert Vega-Lite specifications to other formats
#[pymodule]
fn vl_convert(_py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> {
Expand Down Expand Up @@ -1172,6 +1217,10 @@ fn vl_convert(_py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_function(wrap_pyfunction!(get_format_locale, m)?)?;
m.add_function(wrap_pyfunction!(get_time_format_locale, m)?)?;
m.add_function(wrap_pyfunction!(javascript_bundle, m)?)?;
m.add_function(wrap_pyfunction!(get_vega_version, m)?)?;
m.add_function(wrap_pyfunction!(get_vega_themes_version, m)?)?;
m.add_function(wrap_pyfunction!(get_vega_embed_version, m)?)?;
m.add_function(wrap_pyfunction!(get_vegalite_versions, m)?)?;
m.add("__version__", env!("CARGO_PKG_VERSION"))?;
Ok(())
}
Expand Down
6 changes: 3 additions & 3 deletions vl-convert-python/tests/test_specs.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def load_expected_png(name, vl_version, theme=None):
@pytest.mark.parametrize("name", ["circle_binned", "seattle-weather", "stacked_bar_h"])
@pytest.mark.parametrize(
"vl_version",
["v5_8", "v5_13", "v5_14", "v5_15", "v5_16", "v5_17", "v5_18", "v5_19", "v5_20"],
["v5_8", "v5_14", "v5_15", "v5_16", "v5_17", "v5_18", "v5_19", "v5_20", "v5_21"],
)
@pytest.mark.parametrize("as_dict", [False, True])
def test_vega(name, vl_version, as_dict):
Expand All @@ -96,14 +96,14 @@ def test_vega(name, vl_version, as_dict):
"vl_version",
[
"5.8",
"5.13",
"5.14",
"5.15",
"5.16",
"5.17",
"5.18",
"5.19",
"5.20",
"5.21",
],
)
def test_vegalite_to_html_no_bundle(name, vl_version):
Expand Down Expand Up @@ -132,14 +132,14 @@ def test_vegalite_to_html_no_bundle(name, vl_version):
"vl_version",
[
"5.8",
"5.13",
"5.14",
"5.15",
"5.16",
"5.17",
"5.18",
"5.19",
"5.20",
"5.21",
],
)
def test_vegalite_to_html_bundle(name, vl_version):
Expand Down
44 changes: 44 additions & 0 deletions vl-convert-python/vl_convert.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,10 @@ __all__ = [
"vegalite_to_svg",
"vegalite_to_url",
"vegalite_to_vega",
"get_vega_version",
"get_vega_themes_version",
"get_vega_embed_version",
"get_vegalite_versions",
]

def get_format_locale(name: FormatLocaleName) -> dict[str, Any]:
Expand Down Expand Up @@ -807,3 +811,43 @@ def vegalite_to_vega(
Vega JSON specification dict.
"""
...

def get_vega_version() -> str:
"""
Get the bundled version of Vega
Returns
-------
Vega version string (e.g. "5.30.0")
"""
...

def get_vega_themes_version() -> str:
"""
Get the bundled version of Vega-Themes
Returns
-------
Vega-Themes version string (e.g. "2.14.0")
"""
...

def get_vega_embed_version() -> str:
"""
Get the bundled version of Vega-Embed
Returns
-------
Vega-Embed version string (e.g. "6.26.0")
"""
...

def get_vegalite_versions() -> list[str]:
"""
Get the bundled versions of Vega-Lite
Returns
-------
Vega-Lite version strings (e.g. ["5.8", "5.9", ..., "5.21"])
"""
...
22 changes: 13 additions & 9 deletions vl-convert-rs/src/module_loader/import_map.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ pub const VEGA_EMBED_PATH: &str =
"/pin/[email protected]/mode=imports,min/optimized/vega-embed.js";
pub const DEBOUNCE_PATH: &str = "/pin/[email protected]/mode=imports,min/optimized/lodash.debounce.js";

pub const VEGA_VERSION: &str = "5.30.0";
pub const VEGA_THEMES_VERSION: &str = "2.15.0";
pub const VEGA_EMBED_VERSION: &str = "6.26.0";

pub fn url_for_path(path: &str) -> String {
format!("{}{}", SKYPACK_URL, path)
}
Expand All @@ -31,29 +35,29 @@ pub fn vega_themes_url() -> String {
#[allow(non_camel_case_types)]
pub enum VlVersion {
v5_8,
v5_13,
v5_14,
v5_15,
v5_16,
v5_17,
v5_18,
v5_19,
v5_20,
v5_21,
}

impl VlVersion {
pub fn to_path(self) -> String {
use VlVersion::*;
let path = match self {
v5_8 => "/pin/[email protected]/mode=imports,min/optimized/vega-lite.js",
v5_13 => "/pin/[email protected]/mode=imports,min/optimized/vega-lite.js",
v5_14 => "/pin/[email protected]/mode=imports,min/optimized/vega-lite.js",
v5_15 => "/pin/[email protected]/mode=imports,min/optimized/vega-lite.js",
v5_16 => "/pin/[email protected]/mode=imports,min/optimized/vega-lite.js",
v5_17 => "/pin/[email protected]/mode=imports,min/optimized/vega-lite.js",
v5_18 => "/pin/[email protected]/mode=imports,min/optimized/vega-lite.js",
v5_19 => "/pin/[email protected]/mode=imports,min/optimized/vega-lite.js",
v5_20 => "/pin/[email protected]/mode=imports,min/optimized/vega-lite.js"
v5_20 => "/pin/[email protected]/mode=imports,min/optimized/vega-lite.js",
v5_21 => "/pin/[email protected]/mode=imports,min/optimized/vega-lite.js"
};
path.to_string()
}
Expand All @@ -66,21 +70,21 @@ impl VlVersion {
use VlVersion::*;
match self {
v5_8 => "5.8",
v5_13 => "5.13",
v5_14 => "5.14",
v5_15 => "5.15",
v5_16 => "5.16",
v5_17 => "5.17",
v5_18 => "5.18",
v5_19 => "5.19",
v5_20 => "5.20",
v5_21 => "5.21",
}
}
}

impl Default for VlVersion {
fn default() -> Self {
VlVersion::from_str("5.20").unwrap()
VlVersion::from_str("5.21").unwrap()
}
}

Expand All @@ -90,29 +94,29 @@ impl FromStr for VlVersion {
fn from_str(s: &str) -> Result<Self, Self::Err> {
Ok(match s {
"5.8" | "v5.8" | "5_8" | "v5_8" => Self::v5_8,
"5.13" | "v5.13" | "5_13" | "v5_13" => Self::v5_13,
"5.14" | "v5.14" | "5_14" | "v5_14" => Self::v5_14,
"5.15" | "v5.15" | "5_15" | "v5_15" => Self::v5_15,
"5.16" | "v5.16" | "5_16" | "v5_16" => Self::v5_16,
"5.17" | "v5.17" | "5_17" | "v5_17" => Self::v5_17,
"5.18" | "v5.18" | "5_18" | "v5_18" => Self::v5_18,
"5.19" | "v5.19" | "5_19" | "v5_19" => Self::v5_19,
"5.20" | "v5.20" | "5_20" | "v5_20" => Self::v5_20,
"5.21" | "v5.21" | "5_21" | "v5_21" => Self::v5_21,
_ => bail!("Unsupported Vega-Lite version string {}", s),
})
}
}

pub const VL_VERSIONS: &[VlVersion] = &[
VlVersion::v5_8,
VlVersion::v5_13,
VlVersion::v5_14,
VlVersion::v5_15,
VlVersion::v5_16,
VlVersion::v5_17,
VlVersion::v5_18,
VlVersion::v5_19,
VlVersion::v5_20,
VlVersion::v5_21,
];

pub fn build_import_map() -> HashMap<String, String> {
Expand Down Expand Up @@ -160,14 +164,14 @@ pub fn build_import_map() -> HashMap<String, String> {
m.insert("/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-hierarchy.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-hierarchy.js").to_string());
m.insert("/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-interpreter.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-interpreter.js").to_string());
m.insert("/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-label.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-label.js").to_string());
m.insert("/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-loader.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-loader.js").to_string());
m.insert("/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-parser.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega-parser.js").to_string());
Expand All @@ -191,14 +195,14 @@ pub fn build_import_map() -> HashMap<String, String> {
m.insert("/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/-/[email protected]/dist=es2020,mode=imports,min/optimized/vega.js").to_string());
m.insert("/pin/[email protected]/mode=imports,min/optimized/lodash.debounce.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/pin/[email protected]/mode=imports,min/optimized/lodash.debounce.js").to_string());
m.insert("/pin/[email protected]/mode=imports,min/optimized/vega-embed.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/pin/[email protected]/mode=imports,min/optimized/vega-embed.js").to_string());
m.insert("/pin/[email protected]/mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/pin/[email protected]/mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/pin/[email protected]/mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/pin/[email protected]/mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/pin/[email protected]/mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/pin/[email protected]/mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/pin/[email protected]/mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/pin/[email protected]/mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/pin/[email protected]/mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/pin/[email protected]/mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/pin/[email protected]/mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/pin/[email protected]/mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/pin/[email protected]/mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/pin/[email protected]/mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/pin/[email protected]/mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/pin/[email protected]/mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/pin/[email protected]/mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/pin/[email protected]/mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/pin/[email protected]/mode=imports,min/optimized/vega-lite.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/pin/[email protected]/mode=imports,min/optimized/vega-lite.js").to_string());
m.insert("/pin/[email protected]/mode=imports,min/optimized/vega-themes.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/pin/[email protected]/mode=imports,min/optimized/vega-themes.js").to_string());
m.insert("/pin/[email protected]/mode=imports,min/optimized/vega.js".to_string(), include_str!("../../vendor/cdn.skypack.dev/pin/[email protected]/mode=imports,min/optimized/vega.js").to_string());
Expand Down
6 changes: 3 additions & 3 deletions vl-convert-rs/tests/test_specs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -316,14 +316,14 @@ mod test_vegalite_to_vega {
fn test(
#[values(
VlVersion::v5_8,
VlVersion::v5_13,
VlVersion::v5_14,
VlVersion::v5_15,
VlVersion::v5_16,
VlVersion::v5_17,
VlVersion::v5_18,
VlVersion::v5_19,
VlVersion::v5_20,
VlVersion::v5_21,
)]
vl_version: VlVersion,

Expand Down Expand Up @@ -361,14 +361,14 @@ mod test_vegalite_to_html_no_bundle {
fn test(
#[values(
VlVersion::v5_8,
VlVersion::v5_13,
VlVersion::v5_14,
VlVersion::v5_15,
VlVersion::v5_16,
VlVersion::v5_17,
VlVersion::v5_18,
VlVersion::v5_19,
VlVersion::v5_20,
VlVersion::v5_21,
)]
vl_version: VlVersion,

Expand Down Expand Up @@ -409,14 +409,14 @@ mod test_vegalite_to_html_bundle {
fn test(
#[values(
VlVersion::v5_8,
VlVersion::v5_13,
VlVersion::v5_14,
VlVersion::v5_15,
VlVersion::v5_16,
VlVersion::v5_17,
VlVersion::v5_18,
VlVersion::v5_19,
VlVersion::v5_20,
VlVersion::v5_21,
)]
vl_version: VlVersion,

Expand Down
Loading

0 comments on commit 45a7e14

Please sign in to comment.