1#![forbid(unsafe_code)]
2#![doc = include_str!("../README.md")]
3
4pub use use_python_version::*;
5
6pub use use_python_identifier::*;
7
8pub use use_python_keyword::*;
9
10pub use use_python_value::*;
11
12pub use use_python_module::*;
13
14pub use use_pyproject::*;
15
16pub use use_pip::*;
17
18pub use use_uv::*;
19
20pub use use_venv::*;
21
22pub use use_pytest::*;
23
24#[cfg(test)]
25mod tests {
26 use super::{
27 PipRequirement, PyProject, PyProjectProjectMetadata, PytestMarkerName, PythonIdentifier,
28 PythonImplementation, PythonKeyword, PythonModuleName, PythonPrimitiveValue, PythonVersion,
29 PythonVirtualEnvKind, PythonVirtualEnvName, UvPackageSpec,
30 };
31
32 #[test]
33 fn facade_exposes_every_child_crate() -> Result<(), Box<dyn std::error::Error>> {
34 let version: PythonVersion = "3.12.1".parse()?;
35 let identifier = PythonIdentifier::new("async_task")?;
36 let module = PythonModuleName::new("package.module")?;
37 let project =
38 PyProject::new().with_project(PyProjectProjectMetadata::new().with_name("demo")?);
39 let requirement = PipRequirement::new("requests>=2")?;
40 let package = UvPackageSpec::new("ruff>=0.4")?;
41 let env_name = PythonVirtualEnvName::new(".venv")?;
42 let marker = PytestMarkerName::new("slow")?;
43
44 assert!(version.is_python3());
45 assert_eq!(identifier.as_str(), "async_task");
46 assert_eq!(PythonKeyword::Return.as_str(), "return");
47 assert_eq!(PythonPrimitiveValue::None.type_name(), "NoneType");
48 assert_eq!(module.as_str(), "package.module");
49 assert_eq!(project.project_name(), Some("demo"));
50 assert_eq!(requirement.as_str(), "requests>=2");
51 assert_eq!(package.as_str(), "ruff>=0.4");
52 assert_eq!(env_name.as_str(), ".venv");
53 assert_eq!(marker.as_str(), "slow");
54 assert_eq!(PythonImplementation::CPython.as_str(), "cpython");
55 assert_eq!(PythonVirtualEnvKind::Venv.as_str(), "venv");
56 Ok(())
57 }
58}