eulumdat/
lib.rs

1//! Python bindings for the eulumdat photometric file library.
2//!
3//! This module provides PyO3-based Python bindings for parsing, writing,
4//! and analyzing EULUMDAT (LDT) and IES photometric files.
5
6pub mod batch;
7pub mod bug_rating;
8pub mod calculations;
9pub mod diagram;
10pub mod error;
11pub mod types;
12pub mod validation;
13
14use pyo3::prelude::*;
15
16use batch::{BatchInput, BatchOutput, BatchStats, ConversionFormat, InputFormat};
17use bug_rating::{BugRating, ZoneLumens};
18use calculations::{
19    CieFluxCodes, GldfPhotometricData, PhotometricSummary, UgrParams, ZonalLumens30,
20};
21use diagram::SvgTheme;
22use types::{Eulumdat, LampSet, Symmetry, TypeIndicator};
23use validation::ValidationWarning;
24
25/// Python bindings for the eulumdat photometric file library.
26#[pymodule]
27fn eulumdat(m: &Bound<'_, PyModule>) -> PyResult<()> {
28    // Core types
29    m.add_class::<Eulumdat>()?;
30    m.add_class::<TypeIndicator>()?;
31    m.add_class::<Symmetry>()?;
32    m.add_class::<LampSet>()?;
33
34    // Diagram types
35    m.add_class::<SvgTheme>()?;
36
37    // Validation types
38    m.add_class::<ValidationWarning>()?;
39
40    // BUG rating types
41    m.add_class::<BugRating>()?;
42    m.add_class::<ZoneLumens>()?;
43
44    // Photometric calculation types
45    m.add_class::<PhotometricSummary>()?;
46    m.add_class::<GldfPhotometricData>()?;
47    m.add_class::<CieFluxCodes>()?;
48    m.add_class::<ZonalLumens30>()?;
49    m.add_class::<UgrParams>()?;
50
51    // Batch conversion types
52    m.add_class::<InputFormat>()?;
53    m.add_class::<ConversionFormat>()?;
54    m.add_class::<BatchInput>()?;
55    m.add_class::<BatchOutput>()?;
56    m.add_class::<BatchStats>()?;
57
58    // Batch conversion function
59    m.add_function(wrap_pyfunction!(batch::batch_convert, m)?)?;
60
61    Ok(())
62}