gitronics 0.5.23__tar.gz → 0.5.24__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. {gitronics-0.5.23 → gitronics-0.5.24}/Cargo.lock +8 -1
  2. {gitronics-0.5.23 → gitronics-0.5.24}/Cargo.toml +2 -1
  3. {gitronics-0.5.23 → gitronics-0.5.24}/PKG-INFO +1 -1
  4. {gitronics-0.5.23 → gitronics-0.5.24}/src/utils.rs +24 -4
  5. {gitronics-0.5.23 → gitronics-0.5.24}/.github/workflows/ci.yml +0 -0
  6. {gitronics-0.5.23 → gitronics-0.5.24}/.github/workflows/docs.yml +0 -0
  7. {gitronics-0.5.23 → gitronics-0.5.24}/.github/workflows/release.yml +0 -0
  8. {gitronics-0.5.23 → gitronics-0.5.24}/.gitignore +0 -0
  9. {gitronics-0.5.23 → gitronics-0.5.24}/.vscode/settings.json +0 -0
  10. {gitronics-0.5.23 → gitronics-0.5.24}/LICENSE +0 -0
  11. {gitronics-0.5.23 → gitronics-0.5.24}/README.md +0 -0
  12. {gitronics-0.5.23 → gitronics-0.5.24}/docs/assets/logo.png +0 -0
  13. {gitronics-0.5.23 → gitronics-0.5.24}/docs/best_practices.md +0 -0
  14. {gitronics-0.5.23 → gitronics-0.5.24}/docs/examples.md +0 -0
  15. {gitronics-0.5.23 → gitronics-0.5.24}/docs/getting_started/assessments.md +0 -0
  16. {gitronics-0.5.23 → gitronics-0.5.24}/docs/getting_started/building_a_model.md +0 -0
  17. {gitronics-0.5.23 → gitronics-0.5.24}/docs/getting_started/card_id_numbers.md +0 -0
  18. {gitronics-0.5.23 → gitronics-0.5.24}/docs/getting_started/concepts.md +0 -0
  19. {gitronics-0.5.23 → gitronics-0.5.24}/docs/getting_started/configuration_file.md +0 -0
  20. {gitronics-0.5.23 → gitronics-0.5.24}/docs/getting_started/file_types.md +0 -0
  21. {gitronics-0.5.23 → gitronics-0.5.24}/docs/getting_started/migrating.md +0 -0
  22. {gitronics-0.5.23 → gitronics-0.5.24}/docs/getting_started/new_project.md +0 -0
  23. {gitronics-0.5.23 → gitronics-0.5.24}/docs/getting_started/project_structure.md +0 -0
  24. {gitronics-0.5.23 → gitronics-0.5.24}/docs/getting_started.md +0 -0
  25. {gitronics-0.5.23 → gitronics-0.5.24}/docs/hooks/version_from_git.py +0 -0
  26. {gitronics-0.5.23 → gitronics-0.5.24}/docs/index.md +0 -0
  27. {gitronics-0.5.23 → gitronics-0.5.24}/docs/installation.md +0 -0
  28. {gitronics-0.5.23 → gitronics-0.5.24}/docs/requirements.txt +0 -0
  29. {gitronics-0.5.23 → gitronics-0.5.24}/docs/usage/build.md +0 -0
  30. {gitronics-0.5.23 → gitronics-0.5.24}/docs/usage/migrate.md +0 -0
  31. {gitronics-0.5.23 → gitronics-0.5.24}/example_project/assessment_specific/filler_model_3.mcnp +0 -0
  32. {gitronics-0.5.23 → gitronics-0.5.24}/example_project/assessment_specific/filler_model_3.metadata +0 -0
  33. {gitronics-0.5.23 → gitronics-0.5.24}/example_project/assessment_specific/small_override.yaml +0 -0
  34. {gitronics-0.5.23 → gitronics-0.5.24}/example_project/configurations/valid_configuration.yaml +0 -0
  35. {gitronics-0.5.23 → gitronics-0.5.24}/example_project/output/.gitignore +0 -0
  36. {gitronics-0.5.23 → gitronics-0.5.24}/example_project/reference_model/data_cards/fine_mesh.tally +0 -0
  37. {gitronics-0.5.23 → gitronics-0.5.24}/example_project/reference_model/data_cards/materials.mat +0 -0
  38. {gitronics-0.5.23 → gitronics-0.5.24}/example_project/reference_model/data_cards/my_transform.transform +0 -0
  39. {gitronics-0.5.23 → gitronics-0.5.24}/example_project/reference_model/data_cards/volumetric_source.source +0 -0
  40. {gitronics-0.5.23 → gitronics-0.5.24}/example_project/reference_model/envelope_structure.mcnp +0 -0
  41. {gitronics-0.5.23 → gitronics-0.5.24}/example_project/reference_model/envelope_structure.metadata +0 -0
  42. {gitronics-0.5.23 → gitronics-0.5.24}/example_project/reference_model/filler_models/filler_model_1.mcnp +0 -0
  43. {gitronics-0.5.23 → gitronics-0.5.24}/example_project/reference_model/filler_models/filler_model_1.metadata +0 -0
  44. {gitronics-0.5.23 → gitronics-0.5.24}/example_project/reference_model/filler_models/filler_model_2.mcnp +0 -0
  45. {gitronics-0.5.23 → gitronics-0.5.24}/example_project/reference_model/filler_models/filler_model_2.metadata +0 -0
  46. {gitronics-0.5.23 → gitronics-0.5.24}/mkdocs.yml +0 -0
  47. {gitronics-0.5.23 → gitronics-0.5.24}/pyproject.toml +0 -0
  48. {gitronics-0.5.23 → gitronics-0.5.24}/python/gitronics/__init__.py +0 -0
  49. {gitronics-0.5.23 → gitronics-0.5.24}/python/gitronics/__main__.py +0 -0
  50. {gitronics-0.5.23 → gitronics-0.5.24}/python/gitronics/gitronics.pyi +0 -0
  51. {gitronics-0.5.23 → gitronics-0.5.24}/python/tests/test_build_model.py +0 -0
  52. {gitronics-0.5.23 → gitronics-0.5.24}/python/tests/test_cli_works.py +0 -0
  53. {gitronics-0.5.23 → gitronics-0.5.24}/resources/simple_model.mcnp +0 -0
  54. {gitronics-0.5.23 → gitronics-0.5.24}/src/build_model.rs +0 -0
  55. {gitronics-0.5.23 → gitronics-0.5.24}/src/build_report.rs +0 -0
  56. {gitronics-0.5.23 → gitronics-0.5.24}/src/cli.rs +0 -0
  57. {gitronics-0.5.23 → gitronics-0.5.24}/src/lib.rs +0 -0
  58. {gitronics-0.5.23 → gitronics-0.5.24}/src/main.rs +0 -0
  59. {gitronics-0.5.23 → gitronics-0.5.24}/src/migrate_model.rs +0 -0
  60. {gitronics-0.5.23 → gitronics-0.5.24}/src/model_config.rs +0 -0
  61. {gitronics-0.5.23 → gitronics-0.5.24}/src/project_manager/load_metadata.rs +0 -0
  62. {gitronics-0.5.23 → gitronics-0.5.24}/src/project_manager/load_model_config.rs +0 -0
  63. {gitronics-0.5.23 → gitronics-0.5.24}/src/project_manager/load_project_files.rs +0 -0
  64. {gitronics-0.5.23 → gitronics-0.5.24}/src/project_manager.rs +0 -0
  65. {gitronics-0.5.23 → gitronics-0.5.24}/src/python.rs +0 -0
  66. {gitronics-0.5.23 → gitronics-0.5.24}/src/report.css +0 -0
  67. {gitronics-0.5.23 → gitronics-0.5.24}/src/types.rs +0 -0
  68. {gitronics-0.5.23 → gitronics-0.5.24}/tests/test_example_project.rs +0 -0
@@ -390,7 +390,7 @@ dependencies = [
390
390
 
391
391
  [[package]]
392
392
  name = "gitronics"
393
- version = "0.5.23"
393
+ version = "0.5.24"
394
394
  dependencies = [
395
395
  "chrono",
396
396
  "clap",
@@ -401,6 +401,7 @@ dependencies = [
401
401
  "log",
402
402
  "logtest",
403
403
  "migjorn",
404
+ "path-clean",
404
405
  "pyo3",
405
406
  "rayon",
406
407
  "regex",
@@ -672,6 +673,12 @@ version = "1.70.2"
672
673
  source = "registry+https://github.com/rust-lang/crates.io-index"
673
674
  checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
674
675
 
676
+ [[package]]
677
+ name = "path-clean"
678
+ version = "1.0.1"
679
+ source = "registry+https://github.com/rust-lang/crates.io-index"
680
+ checksum = "17359afc20d7ab31fdb42bb844c8b3bb1dabd7dcf7e68428492da7f16966fcef"
681
+
675
682
  [[package]]
676
683
  name = "pin-project-lite"
677
684
  version = "0.2.17"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "gitronics"
3
- version = "0.5.23"
3
+ version = "0.5.24"
4
4
  edition = "2024"
5
5
  description = "Build MCNP neutronics models from modular components"
6
6
  license = "EUPL-1.2"
@@ -30,6 +30,7 @@ clap = { version = "4.6.1", features = ["derive"] }
30
30
  indexmap = { version = "2.14.0", features = ["serde"] }
31
31
  git2 = "0.21.0"
32
32
  dunce = "1.0.5"
33
+ path-clean = "1.0.1"
33
34
 
34
35
  [dev-dependencies]
35
36
  tempfile = "3.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gitronics
3
- Version: 0.5.23
3
+ Version: 0.5.24
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -7,6 +7,7 @@
7
7
 
8
8
  use crate::types::{EnvelopeName, FileName, FillerName};
9
9
  use log::LevelFilter;
10
+ use path_clean::PathClean;
10
11
  use std::collections::HashMap;
11
12
  use std::collections::hash_map::Entry;
12
13
  use std::io;
@@ -90,11 +91,15 @@ pub enum GitronicsError {
90
91
 
91
92
  impl GitronicsError {
92
93
  pub fn io_path(path: impl AsRef<Path>, source: io::Error) -> Self {
94
+ let path_ref = path.as_ref();
95
+
96
+ let cleaned_path = dunce::canonicalize(path_ref)
97
+ .unwrap_or_else(|_| path_ref.to_path_buf().clean())
98
+ .display()
99
+ .to_string();
100
+
93
101
  Self::IoPath {
94
- path: dunce::canonicalize(path.as_ref())
95
- .unwrap_or_else(|_| path.as_ref().to_path_buf())
96
- .display()
97
- .to_string(),
102
+ path: cleaned_path,
98
103
  source,
99
104
  }
100
105
  }
@@ -211,4 +216,19 @@ mod tests {
211
216
  let err = get_file_paths(dir.path()).unwrap_err();
212
217
  assert!(err.to_string().contains("Duplicate file name `file1`"));
213
218
  }
219
+
220
+ #[test]
221
+ fn test_io_path_normalizes_parent_segments_when_not_canonicalizable() {
222
+ let err = GitronicsError::io_path(
223
+ Path::new("non_existing/../clean/path.yaml"),
224
+ io::Error::new(io::ErrorKind::NotFound, "missing"),
225
+ );
226
+
227
+ match err {
228
+ GitronicsError::IoPath { path, .. } => {
229
+ assert_eq!(Path::new(&path), Path::new("clean/path.yaml"));
230
+ }
231
+ _ => panic!("Expected IoPath error"),
232
+ }
233
+ }
214
234
  }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes