ezmsg-org / ezmsg

Pure-Python DAG-based high-performance SHM-backed pub-sub and multi-processing pattern
https://ezmsg.readthedocs.io/en/latest/
MIT License
9 stars 5 forks source link

dev -> main #68

Closed pperanich closed 4 months ago

pperanich commented 7 months ago

Summary of Changes

The following are a list of changes proposed for merging the dev branch into main:

Packaging changes

The src layout is a modern standard that isolates our source code from other project resources. This change minimizes the risk of accidental inclusion of unwanted files in the distribution, leads to cleaner packaging and install processes, and contributes to more reliable testing practices. For our developers and contributors, this translates to a more straightforward and error-resistant development workflow.

In conjunction with the migration to a src layout, ezmsg is also excited to convert to poetry for our packaging and dependency management needs. Poetry is a cutting-edge tool that offers several advantages over traditional packaging systems. Read about it here

Core Changes

Extensions (ezmsg-zmq)

Extensions (ezmsg-sigproc)

Utilities and Version Bumping

Documentation and Examples

Acknowledgments

Thanks to the contributors who have played a role in enhancing the robustness and feature set of ezmsg.

cboulay commented 5 months ago

Some of my recent PRs broke the tests. I think it's just a missing import. I'll fix it tomorrow.

cboulay commented 5 months ago

Please merge #89 so the test runner can try again.

cboulay commented 5 months ago

One of my tests is still causing a problem. I will get to it when I'm done my current effort on gen_to_unit.

cboulay commented 4 months ago

Looking through the test failures, I can see that at least one of them is my fault. In some of the tests I wrote (e.g. modify_axis), I used typing.Optional[dict[key_type, value_type]] as a type. I guess this should be typing.Optional[typing.Dict[key_type, value_type]]. I can never remember what version of Python supports which plain types in type hints. Please let me know if you want me to make a pass over all of those, or if you want to do it.

P.S. I'd love to use int | None instead of typing.Optional[int]. But I guess requiring min py 3.10 leaves behind a little too much.

pperanich commented 4 months ago

I believe type hinting generics were introduced in Python 3.9 via PEP585. For now, I think we plan to continue Python 3.8 support. Maybe we can revisit once 3.8 hits EOL (October 2024).

cboulay commented 4 months ago

The most recent test failures are due to changes in MessageLogger. When reading back the logs, ezmsg.util.messagecodec message_log()... in the for loop the obj is always a dict now I guess, so the isinstance(obj, LogStart) is always False. This line can be changed to if isinstance(obj["obj"], LogStart) and all the tests pass. But I don't know if that's how the logger is intended to work.

griffinmilsap commented 4 months ago

Thanks for the heads up on message_log @cboulay. I think tests are passing now, so I think we're ready for review. I've also drafted a release tag in the releases section. I'm going to mark this PR as "Ready for Review".

FYI @pperanich and @cboulay -- There's a github action in this repository that uses a secret in the repo to update the PyPI packages on a new tagged version in main. If the internal version number of the new packages is not the same as the packages already there, it will upload new versions automatically and update the public package repository. Any developer or maintainer is able to push packages directly to PyPI. I'm happy to publish what's here now, but please feel free to review and I'll hit the button myself tomorrow afternoon if nobody else has hit it by then.

🍺 Cheers yall, every new release feels like quite a feat!

griffinmilsap commented 4 months ago

Alas, poor pull request. We hardly knew ye.

Actually scratch that, this PR's been open for months and got squished by https://github.com/isaacs/github/issues/361.

So it goes.

New PR #101 ahoy!