ProtoModulenow acceptsfile_path=None: a unique filename (definition_N.proto) is auto-generated via a class-level counter.- Python 3.13 and 3.14 support added to classifiers and CI matrix.
tytype-checker added to the lint tox environment.ruffisort configuration added (combine-as-imports = true).
KeyErrorintest_compile_simple_dependencycaused by iterating duplicateProtoModulevalues inProtoCollection.modules. Fixed by deduplicating withset()before iterating.compiler_version()now correctly returnsNoneinstead of raising when no output is produced.
- Breaking: dropped Python 3.8 and 3.9 support; minimum is now Python 3.10.
requires-pythonupdated from>=3.8to>=3.10.ProtoCollection.modulesnow indexes each module by bothPathandstrkey for flexible lookup.- Tox configuration migrated from
tox.iniintopyproject.toml;tox-uvadded as a requirement. urllib3version constraint relaxed (removed<2pin).- CI: removed
py_39_proto_203job;py_31x_proto_252matrix extended to include Python 3.12, 3.13, 3.14. - CI: migrated
test.ymlfromactions/setup-python+ pip toastral-sh/setup-uv; replacedpip installsteps withuv run --extra; removed Black from lint job. - CI: updated GitHub Actions plugins to latest versions:
actions/checkout@v6,astral-sh/setup-uv@v7,actions/setup-python@v6.
workflow_dispatchtrigger added to CI workflow.CONTRIBUTING.mdenhanced with releasing details.
- Update versions of pre-commit hooks; use
macos-13wheremacos-14is not supported. - Exclude
setup.pyfromcheck-python-versions; relax the check in the generated.py.
- Repair wheel build.
- Reintroduce
tox.ini. - Remove tagging from
bumpverconfig. - Adapt
CONTRIBUTING.mdto the releasing process.
- Add a release workflow.
- Add
README.mdtopyproject.toml. - Add more details to
CONTRIBUTING.md. - Add Black dependency.
- Move CI packages dependency to
pyproject.toml.
- Remove direct dependency on Black in GitHub Actions.
- Isolate
compiler_pathtocompiled()methods.
ruff-powered linting.- Docstrings and examples for
ProtoCollectionandDelimitedMessageFactory.
- Breaking: rename
ProtoCollection.compile()tocompiled(). - Breaking:
compiler_pathis now a parameter ofcompiled()instead of theProtoCollectionconstructor. - Replace the use of protobuf
GetMessageswithdescriptor_poolandGetMessageClassesForFiles. - Remove
tox.iniandsetup.cfg; enhancepyproject.toml.
- Add Google address book example to README.
- Add Python 3.12 support.
- Add
protocversion matrix to CI actions.
- Pin
protocto version3.20.3; add a "latest" build.
- Remove
cidirectory; centralize requirements. - Migrate to
tox4 andtox-gh.
ProtoCollection.compiler_version()method added.- Python 3.11 support added.
protocpinned to version23.2in CI;arduino/setup-protocupgraded fromv1tov2.protoc --versionstep added to CI workflows.long_description_content_typeadded tosetup.py.
- Improve robustness of
test_compiler_version()andtest_compile_invalid_source(). - Increase overall test robustness; add dependency tests.
- Remove the use of
api_implementationwarning check. - Replace
bytearraywithbytesinbytes_read()andmessage_read()return values. - README converted from RST to Markdown.
DelimitedMessageFactorystream type changed fromio.BytesIOtotyping.BinaryIO.
- Breaking:
bytes_read()andmessage_read()generators now yield(offset, data)tuples instead of bare data, prefixing each message with its offset in the input stream.
bytes_read()generator added toDelimitedMessageFactoryto yield raw byte chunks.message_read()generator added toDelimitedMessageFactoryto yield decoded protobuf messages.
- Breaking: rename
DelimitedMessagetoDelimitedMessageFactory. DelimitedMessageFactorynow dispatchesread()to eitherbytes_read()ormessage_read()depending on whethermessage_typeis set.
DelimitedMessageclass added (later renamed toDelimitedMessageFactory) for reading and writing length-delimited protobuf messages.ProtoCollectionnow parses theFileDescriptorSetand populates.descriptor_setand.messagesusingGetMessages.
ProtoModule.compiled()convenience method added, wrapping single-module compilation viaProtoCollection.- Duplicate proto detection:
add_proto()now raisesKeyErrorif the samefile_pathis added twice. - Encode and decode tests added.
protocinstallation added to CI.
- Rename CI workflow file
github-actions.ymltotest.yml.
- Breaking:
ProtoModule().proto_sourcerenamed to.source. - Breaking:
ProtoCollection().file_descriptor_setrenamed to.descriptor_data. importlib.utilused instead of bareimportlibfor module loading.
- Breaking: rename
ProtoDicttoProtoCollection;.protosdict renamed to.modules. - Breaking:
ProtoModulefields renamed:module_core_name→name,content→proto_source,module_source→py_source,module→py. ProtoModulenow usesimportlib.util.spec_from_loaderandmodule_from_specfor module creation.ProtoCollectiongains.file_descriptor_setattribute (serializedFileDescriptorSetbytes).
raise_for_errs(): early return whenerrsis empty (no exception raised on empty stderr).
- Linting fixes in
entities.py.
__init__.pyfiles added to package directories to allow package importing.raise_for_errs()andadd_init_files()extracted as separate methods onProtoCollection.
ProtoModule.__init__now acceptsfile_pathasPathinstead ofstr.- Allow injection of a
global_scopedict into module execution. - Tolerate
protocwarnings for unused.protofiles (only raise on real errors).
- License changed from LGPL-3.0 to MIT before making the source public.
- Version bump only (no functional changes).
- Fix
protoc_commandextension: pass list of string paths instead of dict keys directly.
- Type annotations added throughout (
Dict, class-level field declarations). - Index protos by full
file_pathinstead ofmodule_core_nameto avoid conflicts. - Use a single
TemporaryDirectoryfor both source and output instead of two nested ones. marshal()static method added to write proto sources to the temp directory.
ProtoModule.__init__signature changed:file_name: strreplaced byfile_path: str;package_pathderived fromPath(file_path).parentinstead of being a constructor argument.protocinvocation refactored to use per-proto paths derived fromfile_path.
- Core
ProtoModuleandProtoDictclasses introduced insrc/proto_topy/entities.py. ProtoDict.compile()method: writes proto sources to a temp dir, invokesprotoc, loads generated Python modules.NoCompilerandCompilationFailedexceptions added.- Initial test suite added.
- Removed docs/, future/, readthedocs scaffolding inherited from cookiecutter template.
- Simplified CI workflow; removed Sphinx documentation build.
setup.pyrewritten to read version and requirements dynamically.
- Initial project skeleton.