Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ee.event_names #99

Merged
merged 4 commits into from Jan 12, 2022
Merged

ee.event_names #99

merged 4 commits into from Jan 12, 2022

Conversation

jfhbrook
Copy link
Owner

This is a light rework of #96. I added a docstring and tests, and I debugged the issue with new_listener.

For more details on what I changed, see: c25cf56

cc @leirons

jfhbrook and others added 4 commits January 11, 2022 23:13
* Add class decorator API

* Add autofunctions for pyee.cls

* Remove travis file

* docs: Fix a few typos (#91)

* Type Annotations (#97)

* Set up virtualenv, pyright and isort

* Run isort

* Passing type annotations for base.py

* action to run type checks

* Alas!

* Happy type checker for trio

* MOST of the library is type-checking

* working, non-cranky type annotations for uplift laul

* Type check the tests, cause an explosion

* Clean up requirements.txt

* tests type-checking

* py.typed file

* tests and linting happy

* Update build

* obvious action bugfix

* trailing comma

* remove inconsequential and angry type annotation

* Ignore type issues w asyncio import

* messy typecast

* anyway thats when I started blasting

* carnage!

* uplift bugfixes

* update pytest

* bye 3.6

* type annotations for cls

Co-authored-by: Tim Gates <tim.gates@iress.com>
Now that there are some asserts for the value of event_names, we can see
what issue @leirons was running into with `new_listener`. It turns out
the issue ran pretty deep.

Internally, pyee used to use a defaultdict to store events. This was
mildly convenient for implementing on and emit, but it also meant that
event names were added after an emit, even if there were no handlers.

OK, so you patch it to use a regular dict and do the bookkeeping
manually. But there's another reason an event might show up even if it
has no handlers: pyee doesn't make an effort to clean up the
OrderedDicts which contain the actual handlers.

To solve this, I removed the defaultdict (so no event after an
emit) and added a step on listener removal to clean up the OrderedDict.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants