Repeated capability accessors return internal `_SessionBase` type
Description of issue
Repeated capability accessors like Session.channels and Session.instruments return a _SessionBase object. Clients that pass channel objects around may need to refer to this type in PEP 484 type hints.
Example: https://github.com/ni/measurementlink-python/blob/9bffe48c1c2da4777eeca0ca159b74bde724ead6/examples/output_voltage_measurement/measurement.py#L177
def _wait_for_source_complete_event(
measurement_service: nims.MeasurementService,
channels: nidcpower._SessionBase,
cancellation_event: threading.Event,
) -> None: ...
The convention recommended in PEP8 and used by most Python code is that names with a single leading underscore are for internal use.
In general, public APIs ought to use public types.
System report
Not applicable.
Steps to reproduce issue
- Write a function that accepts a channel object (such as the linked example).
- Write PEP 484 type hints for this function.
BTW, providing public type aliases for Channel, Instrument, Pin, Site, etc. would be a relatively easy solution.
Channel = _SessionBase
Instrument = _SessionBase
...
Note that _SessionBase is in nidcpower.session and not aliased into nidcpower, so the example code above is incorrect.