Skip to content

Conversation

@alexgex
Copy link
Contributor

@alexgex alexgex commented Nov 25, 2025

This pull request modernizes and streamlines the build, packaging, and testing processes for the project, with a major migration from setup.py to PEP 517/518 standards using pyproject.toml, upgrades to Python 3.13, and improvements in Docker and CI workflows. It also includes various codebase cleanups and minor fixes.

Build and Packaging Modernization:

  • Migrated from setup.py to a modern PEP 517/518 compliant build system using pyproject.toml, centralizing dependencies, metadata, and configuration. Removed obsolete setup.py, pytest.ini, and ruff.toml files. [1]], [2]], [3]], [4]])
  • Updated the versioning mechanism to read from pyproject.toml instead of setup.py. ([scripts/set_versions_ga.shL10-R10])
  • Updated the CLI version retrieval in node_cli/cli/__init__.py to use importlib.metadata.version. ([node_cli/cli/init.pyL1-R3])

Python and Dependency Upgrades:

  • Upgraded the codebase and CI to use Python 3.13 (from 3.11), including Docker images, GitHub Actions workflows, and dependency versions. [1]], [2]])
  • Integrated the uv package manager for faster and more reproducible dependency installation in both Docker and CI. [1]], [2]])

CI/CD Workflow Improvements:

  • Refactored GitHub Actions workflows for build, test, and release:
    • Combined and simplified build and release jobs, leveraging matrix builds and the new build system.
    • Switched to softprops/action-gh-release for release creation and asset uploads.
    • Improved version and prerelease calculation, and checksum generation. ([.github/workflows/publish.ymlR2-L140])
  • Updated test workflow to use modern action versions, cache dependencies, and run tests using uv. [1]], [2]], [3]], [4]])

Dockerfile and Build Process Enhancements:

  • Refactored the Dockerfile to use a multi-stage build with Python 3.13, install dependencies via uv, streamline layer usage, and clean up unnecessary packages. ([DockerfileL1-R32])
  • Updated main.spec to use dynamic paths for PyInstaller, improving portability. ([main.specL3-R12])

Codebase Cleanups and Minor Fixes:

  • Improved CLI initialization and command group handling in node_cli/main.py for better error handling and extensibility. [1]], [2]], [3]], [4]])
  • Enhanced error messages and handling in global_config.py for permission and OS errors. ([node_cli/utils/global_config.pyL55-R59])
  • Rewrote str_to_bool in helper.py to remove deprecated distutils usage and improve type safety. [1]], [2]])

These changes collectively modernize the project infrastructure, improve reliability and reproducibility, and lay the groundwork for future development.


References:
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20]

@alexgex alexgex requested a review from badrogger as a code owner November 25, 2025 14:15
@alexgex alexgex added the enhancement New feature or request label Nov 25, 2025
@alexgex alexgex linked an issue Nov 25, 2025 that may be closed by this pull request
Copy link
Collaborator

@dmytrotkk dmytrotkk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pytest.ini can be moved to pyproject.toml

@alexgex alexgex requested a review from dmytrotkk December 29, 2025 17:50
@github-project-automation github-project-automation bot moved this from In Progress to Code Review in SKALE Engineering 🚀 Dec 29, 2025
@dmytrotkk dmytrotkk merged commit a116b32 into develop Dec 29, 2025
3 checks passed
@dmytrotkk dmytrotkk deleted the migrate-to-pyproject branch December 29, 2025 18:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migrate to pyproject, update python version, update deps

3 participants