[build-system] requires = ["setuptools>=68", "wheel"] build-backend = "setuptools.build_meta" [project] name = "underframe-deflection" version = "1.1.0" description = "High-speed train underframe longitudinal beam deflection measurement from scan point clouds + CAD reference." readme = "README.md" requires-python = ">=3.10" license = { text = "Proprietary" } authors = [ { name = "PKU High-Speed Train Project Team" }, ] keywords = ["point-cloud", "deflection", "ICP", "CAD", "metrology", "high-speed-train"] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Manufacturing", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Operating System :: OS Independent", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Image Processing", ] # Core dependencies — required for compute_deflection() and registration. dependencies = [ "numpy>=1.23,<3.0", "scipy>=1.10,<2.0", ] [project.optional-dependencies] # Required by render_plots() and run_measurement_pipeline() (writes PNGs). viz = ["matplotlib>=3.5,<4.0"] # Required by write_excel_report(); pipeline degrades gracefully if missing. excel = ["openpyxl>=3.1,<4.0"] # ONLY for the standalone test-data generator under tools/cad_sampling/ # (step_to_pointcloud.py). NOT needed by the measurement algorithm itself # and deliberately kept out of `all` so the runtime stays light. sampling = ["cadquery>=2.4"] # Convenience meta-extra that pulls everything an integrator usually wants # at RUNTIME (does NOT include the heavy `sampling` toolchain). all = [ "matplotlib>=3.5,<4.0", "openpyxl>=3.1,<4.0", ] [project.scripts] underframe-measure = "underframe_deflection.cli:main" [project.urls] # Fill in your internal hosting URLs before publishing. # Homepage = "https://example.invalid/underframe-deflection" # Issues = "https://example.invalid/underframe-deflection/issues" # --------------------------------------------------------------------------- # Package layout # # This pyproject.toml lives inside the package directory itself # (delivery_v1.1/underframe_deflection/), so the source root and the # package source are the same folder. # --------------------------------------------------------------------------- [tool.setuptools] packages = ["underframe_deflection"] package-dir = { "underframe_deflection" = "." } include-package-data = false [tool.setuptools.package-data] underframe_deflection = ["py.typed"]