Skip to content

revamp: adds support for CityJSON 2.0.0 and major revamps of the repo - #30

Merged
konmast3r merged 8 commits into
mainfrom
seriarize-cityjson-object-and-wire-it-up
Aug 10, 2026
Merged

revamp: adds support for CityJSON 2.0.0 and major revamps of the repo#30
konmast3r merged 8 commits into
mainfrom
seriarize-cityjson-object-and-wire-it-up

Conversation

@konmast3r

@konmast3r konmast3r commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

Summary

This PR adds complete CityJSON serialization and Blender import/export support, strengthens Python quality standards, substantially expands automated testing, and introduces CI and release automation.

Key changes

  • Adopted UV as the project’s dependency and environment manager.
  • Added CityJSON serialization and deserialization across city objects, geometry primitives, templates, semantics, and metadata.
  • Wired CityJSON importing and exporting into the Blender add-on.
  • Moved Blender-specific registration into addon.py, keeping init.py as a lightweight entry point.
  • Renamed cityobjects.py to city_objects.py and standardized city_object/city_objects naming throughout the codebase.
  • Added comprehensive type annotations, including specific protocols and aliases for Blender objects where possible.
  • Updated project metadata and synchronized the initial version as 0.0.0.

Code quality

  • Configured Ruff to enforce:
    • Formatting
    • Linting
    • Import sorting
    • Python naming conventions
    • Type-annotation rules
    • Configured strict mypy checking

Testing and coverage

  • Added unit tests for models, serialization, core utilities, materials, and import/export behavior.
  • Added real CityJSON sample datasets under tests/data.
  • Added dataset round-trip tests covering actual import, serialization, export, and re-import.
  • Added headless Blender integration tests using Blender 5.2.0.
  • Added combined unit and Blender integration coverage with a 95% minimum.

Release automation

  • Added an installable up3date-.zip release asset containing only:
    • Add-on Python files
    • core/ and models/
    • blender_manifest.toml
    • LICENSE

Repository governance and documentation

  • Added CODEOWNERS for liberostelios and konmast3r.
  • Added development and release documentation.
  • Updated the README with current setup, testing, coverage, and add-on usage information.
  • Added the Blender extension manifest and project packaging metadata.

Konstantinos Mastorakis added 8 commits August 9, 2026 23:35
- add GitHub Actions workflow for Ruff, mypy, and pytest
- format and lint the codebase with Ruff
- enforce import ordering, annotations, and Python naming conventions
- add type hints and structural protocols for Blender API objects
- separate Blender-dependent add-on implementation from package initialization
- standardize snake_case identifiers and CityJSON serialization boundaries
- use .city.json as the default export extension
- extend the quality workflow with unit and headless Blender coverage
- download and verify Blender 5.2 during CI
- combine unit and integration coverage with a 95% minimum threshold
- add headless import/export tests for every dataset in tests/data
- add 3DBAG, Vienna, LoD3 Railway, and noise extension fixtures
- add unit tests for core object, material, and utility behavior
- preserve CityJSON IDs that Blender interprets as numeric name suffixes
- support extension CityObjects with attributes, relationships, geometry,
geographical extents, and custom properties
- preserve unsupported mesh representations such as GeometryInstance and
MultiLineString during round trips
- preserve document appearance, extensions, and geometry templates
- require semantic type metadata before reusing Blender materials
- normalize missing or invalid polygon material indices
- handle zero-valued transform scales without export failures
- safely remove Blender collections while iterating
- replace linear solid-vertex searches with indexed lookups
- add Blender API typing for custom-property access
- add pytest-cov and coverage configuration
- extend the quality workflow with unit and headless Blender coverage
- download and verify Blender 5.2 during CI
- combine unit and integration coverage with a 95% minimum threshold
- add headless import/export tests for every dataset in tests/data
- add 3DBAG, Vienna, LoD3 Railway, and noise extension fixtures
- add unit tests for core object, material, and utility behavior
- preserve CityJSON IDs that Blender interprets as numeric name suffixes
- support extension CityObjects with attributes, relationships, geometry,
geographical extents, and custom properties
- preserve unsupported mesh representations such as GeometryInstance and
MultiLineString during round trips
- preserve document appearance, extensions, and geometry templates
- require semantic type metadata before reusing Blender materials
- normalize missing or invalid polygon material indices
- handle zero-valued transform scales without export failures
- safely remove Blender collections while iterating
- replace linear solid-vertex searches with indexed lookups
- add Blender API typing for custom-property access
- add pytest-cov and coverage configuration
@konmast3r
konmast3r force-pushed the seriarize-cityjson-object-and-wire-it-up branch from 9e8cff5 to 55c7122 Compare August 10, 2026 23:17
@konmast3r
konmast3r merged commit 18fb32c into main Aug 10, 2026
3 checks passed
@konmast3r
konmast3r deleted the seriarize-cityjson-object-and-wire-it-up branch August 10, 2026 23:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant