Guild

Latest version: v1.3.7

Safety actively analyzes 621211 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 2

1.3.7

Minor fix to actors that only have a main generator

1.3.6

Bumped minor version number to 3 since we have dropped python 2 support.
The reason why the major version number hasn't changed is because the API
has not changed for python 3 users (yet). However the API being no longer
available for py2 users is a breaking change, so the version number should
be bumped.

This means that should I need to have security fixes for py2 I can start a
1.2.x version tree, and versions less than 1.2 can be applied for py2 by

1.3.0

* New features
- Initial version of the promises API
* guild.promise - core code
* guild.exceptions - extracted out for clarity
* guild.actor - uses promises in actor functions by default, extensions
to provide a mechanism for using any regular actor function as a
promise instead of blocking
- Allow promises to be cancelled before execution
- Allow an STM store to have specific custom values. The reason behind
this is to allow correct copying of things like SDL/pygame surfaces
- When committing a value to the STM you can now recieve a copy back of
the updated value

- An STM snapshot (checkout of values) can now pull updated versions from
the STM Store. This is ala a git pull - the changes are fetched and
merged into your snapshot. You *also* get a list of the values that
have changed.

- Update examples/sketch/pygame_test to be completely threadsafe, by using
the new features of the STM:
* To use a custom Value type for copying surfaces - SurfaceValue
* to push values into the store.
* To store requests surfaces in an STM store not a list
* Uses the pull_updates method to update its local checkout (which
will change when clients push changes to their surfaces). This also
is used for updating the display when surfaces change.
* This means the pygame_test is quickly becoming an exemplar on how
the STM can and should be used

* New experimental things
- Experimental sketches from guildpp merged into this codebase. (Work
towards a currently hypothetical C++ implementation of guild)
(This is stuff from 2019 through 2022)

* Deprecate use of "gen_process" over "main", including changing the
following to use main:

- guild.av.AudioCapture
- guild.av.WebCamTest
- guild.network.Selector
- Docs: README.md, setup.py, site/src/index.html
- guild.qtactor.QtActorMixin
- examples/qt_video_player.Player
- examples/99bottles.Follow
- examples/blog/log_watcher.Follow
- examples/blog/recording_webcam.Camera
- examples/sketch/pygame_test.Display

* Python3 related updates:
* quild.actor stop & exception handing updated
* examples/99bottles.Follow file handing updated
* Diched used of "six" - remove python2 support
* examples/blog/accounts-[1,2,3].py - largedly print related(!)
* examples/blog/accounts-stm-[1,2,3].py - largedly print related(!)
* examples/blog/accounts-stm.py - largedly print related(!)
* examples/blog/log_watcher - use "open" not "file"
* examples/blog/recording_webcam - exceptions
* examples/backplane_demo - print function
* examples/dogs_go_woof_actors.py - remove future import
* guild.stm.Store - locking updated to match changed API in py3.2

* Other updates:
* guild.qtactor and examples/qu_video_player updated to Qt5
* examples/sketch/pygame_test
- Restructured code re tracking of surfaces
- Then much later, lots of updates to use new features (see above)

* Code Cleanups
* Callback maker functions (eg actor_method) extracted from inline
* Remove race hazard in shutdown of process_method actors
* Ensure process_method actors stop if there's any exception raised
withing them
* process_methods stopped from rescheduling when stopping
* process_methods set to stopped when they exit
* fix examples/sketch/pygame_test to run flicker free, and cleanly under
plasma/KDE
* Minor change to guild.av.AudioCapture to improve capture quality &
flexibility
* example/av_record.py updates to list required libraries
* Old version of actor_function removed
* examples/blog/accounts-stm.py
- Make timeout time match comment
- Account checkout pulled into a separate function
- Handle retry exception
* Add join (synonym for wait_for) since like start() it matches the
thread API

1.1.6

Version bumped to keep ppa packaging happy.

* Update stdeb.cfg for python3 building on launchpad properly
- Incorrectly still assumed python2 build environment.
- Bumped version suite
- Incorrect dependencies removed
- Correct dependency AND build dependencies added
- Python version bumped to match current state"

* Fix RST formatting in doc string
Previously used a heading line that was informally accepted by
PYPI RST parser, but is now rejected. Fixed.

(not released to pypi since changes to primarily keep Launchpad happy)

1.1.5

Version bumped to keep ppa packaging happy.

(not released to pypi since changes to primarily keep Launchpad happy)

1.1.4

Bunch of minor changes improving the interface.

* Enable tracing of actor calls
Periodcally it's useful to see what's actually being transferred between
which actors. Having this as a flag that can be set ...

import guild
guild.trace_actor_calls = True

... makes this quite simple/useful.

* Update `Makefile` targets
The makefile is used as an interface for a bunch of useful things to do.
Sign posting which bits to use I think is useful, hence the updates.

* Drop support for python2 builds
Been using python3 pretty exclusively for a while, and python2 was EOL a
while back, so dropping support here seems reasonable.

* Process incoming messages before main loop
These were done after the main loop. However this led to to some minor
oddities - such as if an actor has a number of late bound methods, you
needed a matching number of yields before you could assume they've been
dealt with.

It will become clear at some point whether this is a good idea or a bad
one, but for now it's a better decision than the one before.

* When the main loop generator exits, set stop flag
This is to match the intent - which is to run one generator and then
stop. This may in itself be changed at some point (for example to handle
certain sorts of state machine better - RTSP springs to mind), but for
now this seems a reasonable plan. (It's better than the thread
continuing to run but not actually have any work to do!)

* Allow use of `main()` as well as `gen_process()`
It's more intuitive to use `main()` as the main loop (if any) of the
actor. More intuitive than `gen_process()` at least - so you can
now use `main()` instead. At some point `gen_process()` will become
deprecated, but it's been the core name for a while, so it can stay for
now.

* Make calls to unbound late bound methods report which one is bust
Before was not very helpful:

guild.actor.UnboundActorMethod: Call to Unbound Latebind

How it's more helpful:

guild.actor.UnboundActorMethod: ('Call to Unbound Latebind', <function Client.get_new_frame at 0x7fc07c3654c0>)

Could be prettier, but it's more useful this way.

* Ensure that generator in main thread is a generator

In order to run the thread mainloop, we run a generator alongside the
interactions needed for the actor (outbound/inbound queues).

Given that the function the user supplies must be a generator or else
there will be subtle errors that start creeping in. So we now enforce
this by checking the code object before starting it. Raises a ValueError
(which is perhaps wrong error) if the function isn't a generator (which
is technically a value error, but perhaps something better might be
useful)

Page 1 of 2

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.