OpenCyphal / pycyphal

Python implementation of the Cyphal protocol stack.
https://pycyphal.readthedocs.io/
MIT License
119 stars 106 forks source link

Store DSDL-generated packages in the local directory by default #86

Closed pavel-kirienko closed 4 years ago

pavel-kirienko commented 4 years ago

This is a better replacement for #85. It reduces the boilerplate while also avoiding global state.

It used to be:

import sys
import pathlib
import tempfile
import importlib
import pyuavcan
dsdl_generated_dir = pathlib.Path(tempfile.gettempdir(), 'dsdl-for-my-program', f'pyuavcan-v{pyuavcan.__version__}')
dsdl_generated_dir.mkdir(parents=True, exist_ok=True)
sys.path.insert(0, str(dsdl_generated_dir))
try:
    import pyuavcan.application
except (ImportError, AttributeError):
    script_path = os.path.abspath(os.path.dirname(__file__))
    pyuavcan.dsdl.generate_package(
        package_parent_directory=dsdl_generated_dir,
        root_namespace_directory=os.path.join(script_path, '../public_regulated_data_types/uavcan')
    )
    importlib.invalidate_caches()
    import pyuavcan.application

In #85 it was reduced to:

import sys
import pyuavcan
sys.path.insert(0, str(pyuavcan.dsdl.DEFAULT_GENERATED_PACKAGES_DIR))
import pyuavcan.application

The current state is:

import pyuavcan
import pyuavcan.application
coveralls commented 4 years ago

Pull Request Test Coverage Report for Build 694


Changes Missing Coverage Covered Lines Changed/Added Lines %
pyuavcan/dsdl/_composite_object.py 3 4 75.0%
<!-- Total: 49 50 98.0% -->
Files with Coverage Reduction New Missed Lines %
pyuavcan/application/heartbeat_publisher.py 1 84.46%
pyuavcan/presentation/_port/_subscriber.py 1 81.14%
.test_dsdl_generated/uavcan/si/sample/duration/Scalar_1_0.py 1 84.0%
.test_dsdl_generated/uavcan/si/sample/voltage/Scalar_1_0.py 1 84.0%
.test_dsdl_generated/uavcan/si/unit/energy/Scalar_1_0.py 1 84.31%
.test_dsdl_generated/uavcan/si/unit/length/Scalar_1_0.py 1 84.31%
.test_dsdl_generated/uavcan/si/unit/voltage/Scalar_1_0.py 1 84.31%
.test_dsdl_generated/uavcan/si/unit/volumetric_flow_rate/Scalar_1_0.py 1 84.31%
.test_dsdl_generated/uavcan/node/port/GetStatistics_0_1.py 2 91.4%
.test_dsdl_generated/uavcan/node/port/ID_1_0.py 2 89.36%
<!-- Total: 52 -->
Totals Coverage Status
Change from base Build 678: -6.5%
Covered Lines: 18953
Relevant Lines: 21344

💛 - Coveralls