Releases: LaboratoireMecaniqueLille/crappy
v2.0.7
Crappy 2.0.7
Changes in this new release:
- Drop support for Python 3.7 and 3.8 by including features from versions 3.8 and 3.9 (
typing.Literal
, walrus operator, positional-only arguments, etc.) - Ensure Python 3.13 is supported and add it to the list of supported versions
- Enable nit-picky mode for documentation, and fix the numerous errors that appeared. Allowed to reduce the number of broken links, and in the future will permit to detect these much quicker
- Various minor type hint fixes
- Add a
crappy.blocks.Pause
Block for momentarily putting some Blocks on hold. Also update the internals ofcrappy.blocks.Block
to enable this feature - Fix a serious error affecting frequency handling of all the Blocks
- Introduce a new
crappy.camera.RaspberyPiCamera2
Camera for reading images on Raspberry Pi hardware using thepicamera2
library
Merged pull requests
- Release/2.0.6 by @WeisLeDocto in #134
- Add support for Python 3.13 by @WeisLeDocto in #135
- Include new features from Python 3.8 and 3.9 by @WeisLeDocto in #136
- Various minor fixes by @WeisLeDocto in #137
- Update configuration and dependencies for documentation by @WeisLeDocto in #138
- Add a pause mechanism for the Blocks by @WeisLeDocto in #139
- Various minor fixes by @WeisLeDocto in #140
- Add support for
picamera2
on Raspberry Pi by @WeisLeDocto in #141 - Release version 2.0.7 by @WeisLeDocto in #142
Full Changelog: v2.0.6...v2.0.7
The tarball and the wheel are available on PyPI
v2.0.6
Crappy 2.0.6
Changes in this new release:
- Fix bug in CameraConfig class where an error image would unexpectedly appear if no image is acquired for a few seconds
- Update test_python_package.yml GitHub Action to prevent crash on latest macOS version. Also improve the overall workflow
- Fix color image recording in the ImageSaver class, buggy with the
sitk
andpil
backends - Fix incompatibility with newly released NumPy 2.0.0, because of new return type policy
- Several minor documentation updates
Merged pull requests
- Release/2.0.5 by @WeisLeDocto in #112
- Fix camera configuration bug and remove duplicate code by @WeisLeDocto in #114
- Update GitHub actions by @WeisLeDocto in #122
- Fix color image recording by @WeisLeDocto in #129
- Add missing example on arbitrary Generator condition by @WeisLeDocto in #130
- Minor updates in camera documentation by @WeisLeDocto in #131
- fix: cast numpy types to Python types wherever needed by @WeisLeDocto in #132
- Release/2.0.6 by @WeisLeDocto in #133
Full Changelog: v2.0.5...v2.0.6
The tarball and the wheel are available on PyPI
v2.0.5
Crappy 2.0.5
Main changes in this new release:
- Fix missing
resources
class in Crappy (bug added in ef8640d, present in versions2.0.3
and2.0.4
) - Fix duplicate image formats listed in
CameraGstreamer
andCameraOpencv
when used withv4l2
- Fix wrong image shape and data type detection in camera configuration window when no image can be acquired from the camera
- Add a padding of zeros to the image index in the name of the images recorded by the
Camera
Block - Add the possibility for users to provide their own fields as numpy arrays for image correlation
- The
Camera
Block now sends a message containing the timestamp, index, and metadata of all the recorded images in case no image processing is performed, and at least one output Link is defined - Add the
Synchronizer
Block, for interpolating input labels over the same time base as a reference label. Similar to the existingMultiplexer
Block, except theMultiplexer
treats all labels equally and doesn't consider one as a reference - Various minor documentation updates
Merged pull requests
- build: update project version from 2.0.3 to 2.0.4 by @WeisLeDocto in #96
- Missing
resources
class in__init__.py
by @WeisLeDocto in #101 - Not setting shape and dtype in config window when no image acquired by @WeisLeDocto in #102
- Wrong type hint for the image shape argument by @WeisLeDocto in #103
- Change name of images recorded by the
Camera
Block by @WeisLeDocto in #104 - Remove duplicate formats when using
v4l2-ctl
in Cameras by @WeisLeDocto in #100 - Refactor change-set information by @WeisLeDocto in #105
- Allow user-defined fields for image correlation by @WeisLeDocto in #106
- Send signal when recording images with Camera Block by @WeisLeDocto in #107
- Add the
Synchronizer
Block by @WeisLeDocto in #108 - Send image index on save by @WeisLeDocto in #109
- Not interpolating reference label in Synchronizer Block by @WeisLeDocto in #110
- Release/2.0.5 by @WeisLeDocto in #111
Full Changelog: v2.0.4...v2.0.5
The tarball and the wheel are available on PyPI
v2.0.4
Crappy 2.0.4
This new release of Crappy brings various minor improvements and additions :
- Addition of the Phidget4AStepper Actuator
- Addition of the PhidgetWheatstoneBridge InOut
- Addition of the DownSampler Modifier
- Addition of an automated GitHub workflow checking that Crappy builds and installs correctly on the supported OS and Python versions
- Documentation update to include the latest additions
- Addition of an example demonstrating the use of the DownSampler Modifier
Merged pull requests
- Release of version 2.0.2 by @WeisLeDocto in #87
- Add a phidget stepper driver and a phidget inout by @PIERROOOTT in #88
- Add workflow for checking the installation and import of Crappy by @WeisLeDocto in #89
- Release of version 2.0.3 by @WeisLeDocto in #92
- Add a downsampling modifier by @PIERROOOTT in #90
- Add new options on Phidget4AStepper by @PIERROOOTT in #93
- Add a class attribute to check switches state in the open method by @PIERROOOTT in #94
- Release of version 2.0.4 by @WeisLeDocto in #95
Full Changelog: v2.0.3...v2.0.4
The tarball and the wheel are available on PyPI
v2.0.3
Crappy 2.0.3
This new release of Crappy is a bux-fix release, that addresses the following minor problems :
- Wrong default backend order in the
ImageSaver
object - Bugs in the
DAQmx
InOut making it impossible to use - Cleaned-up the top-level attributes importable with Crappy
- Numpy had become a dependency of Crappy at build-time, this is no longer the case
- Suppressed warnings when building Crappy due to incorrect syntax in
pyproject.toml
Merged pull requests
- Release of version 2.0.3 by @WeisLeDocto in #91
Full Changelog: v2.0.2...v2.0.3
The tarball and the wheel are available on PyPI
v2.0.2
Crappy 2.0.2
This new release of Crappy brings improvements mostly on three aspects of the module :
- It moves most of the packaging metadata from
setup.py
topyproject.toml
(#68). This paves the way for a complete removal of thesetup.py
file, once all the extension modules are removed from Crappy in version 2.1.0 (#62). - It brings a final touch to the documentation (collapse menus, section authors, intersphinx mapping, changesets), already entirely refactored in #79.
- It comes with substantial improvements on the existing Camera classes, in terms of implemented settings and functionalities. Only the
RaspberryPiCamera
remains to improve, in #64. The improved cameras are:- The
XiAPI
Camera, with more settings to tune and bug fixes. - The
CameraGstreamer
Camera, with a better support whenv4l-utils
is not installed and more parameters to tune whenv4l-utils
is installed. - The
CameraOpencv
Camera, with more parameters to tune whenv4l-utils
is installed.
- The
- Also, a few minor bug fixes
Merged pull requests
- Final touch to the documentation after update to 2.0 by @WeisLeDocto in #73
- Enhancement of the parameters management for the opencv camera by @PIERROOOTT in #71
- Update packaging-related files by @WeisLeDocto in #77
- Enhancement of the format detection in camera gstreamer basic by @PIERROOOTT in #76
- Various style refactorings and fixes on
CameraGstreamer
andCameraOpencv
objects by @WeisLeDocto in #78 - Improvement of the XiAPI camera by @WeisLeDocto in #83
- Hotfixing version 2.0.0 by @WeisLeDocto in #85
- Release of version 2.0.2 by @WeisLeDocto in #86
Full Changelog: v2.0.1...v2.0.2
The tarball and the wheel are available on PyPI
v2.0.1
Version 2.0.1
This version is a bug fix release that corrects two minor issues :
- There was no deprecation message for old-style Modifiers defining the
evaluate
method - A number of links in the documentation were broken
Merged pull requests
- Hotfixing version 2.0.0 by @WeisLeDocto in #84
Full Changelog: v2.0.0...v2.0.1
The tarball and the wheel are available on PyPI
v2.0.0
Version 2.0.0
The version 2.0.0 of Crappy is a backwards-incompatible release that contains almost one year's worth of work.
It brings notable changes at almost every level in the module, and constitutes a clean base for future developments of Crappy.
The transition from version 1.5 to version 2.0 is not seamless for users, but still clearly documented. Refer to a Discussion to come for more information about it.
The main changes in the module between versions 1.5 and 2.0 are listed below.
Main changes (in chronological order)
This list is a simplified overview of all the changes that occurred in the module. In particular, it does not list all the changes in the names of the files, classes, methods, or arguments. To get a better overview of all the names that changed, users should instead refer to the online documentation or check for DeprecationError
s when running their old code compatible with Crappy 1.5 in Crappy 2.0.
- The old
Camera
Block (and its children) could only perform the acquisition, processing and recording of the images in a sequential way. The display of images was delegated to theDisplayer
Block. Now, the newCamera
Block (and its children) performs the acquisition, display, recording and processing of the images in a parallelized way. This greatly improves the achievable frame rate for all these operations. - The
Displayer
Block was removed, as the display is now handled directly by theCamera
Block. Having a separate Block for the display was a source of bugs due to the limitation of the bandwidth between the Blocks. - The
CameraConfig
window now handles the case when no image can be grabbed by the camera, and displays an error image instead of freezing. It can also handle the case when the flow of images stops, still without freezing. - A special
trigger
setting was added to theCamera
object for handling the hardware trigger option that some cameras may possess. - The
open
,stop
andclose
methods were added to the definition of the baseActuator
object. - The
Machine
Block can now acquire the speed and the position of the driven Actuator regardless of the driving mode, and adjust the target speed at runtime in position mode via an incoming label. - The base
Block
was totally refactored to improve its stability and efficiency, using all the possibilities offered by themultiprocessing
module. All the Blocks were updated accordingly. - As a consequence of the point above, the methods to use for receiving data from upstream Blocks were totally changed. They now have a different name and a different behavior.
- A clean logging mechanism was added to Crappy, in place of the previous calls to
print
. The logs are both displayed in the console, and saved to a log file. - The instantiation of the hardware related objects (Actuator, Camera, InOut) is now always performed once the Process driving them has started, for compatibility with the spawn start method of the
multiprocessing
module. - The
Link
object was updated consistently with the improvements brought to the baseBlock
. The methods of theLink
now have a different name and a different behavior, and users are not expected to call them directly anymore. - A
debug
argument was added to all the Blocks, to let users choose the debug level to use between INFO and DEBUG for each Block individually. - All the classes relying on the
FT232H
tool were moved to separate folders, to make them clearly discernible from the other classes. - The
FT232H
tool and the associatedUSBServer
were improved, to increase both the communication speed and the stability. - The entire structure of the module was re-thought, with the creation of many sub-folders containing sub-categories of files.
- The names of all the files and classes were changed to enforce PEP8. The list of the changes is too long to be displayed here, but all the name changes are clearly mentioned in the documentation.
- A number of unused files in the
util/
folder of the project were removed. - The
impact/
folder of the project was removed. - It is now possible for users to subclass the base
Generator Path
. That was previously not possible. - The entire architecture of the project was changed from flat to src. It is considered a good practice for avoiding test and build errors.
- The
verbose
argument of all the Blocks was renamed todisplay_freq
, which is a more accurate description of what this argument does. - A draft for a test suite for Crappy was added in the
tests/
folder of the project. It will be completed and actively used in future releases. - The calculation of the histogram in the
CameraConfig
window is now parallelized, therfore improving the performance of this window. - The P, I, and D gains of the
PID
Block can now be adjusted at runtime by sending new values over given labels. - The images recorded by the
Camera
Block can now be saved as.npy
files. - The
Modifier
objects now use the__call__
method for altering the received data, instead of theevaluate
method previously. This behavior is more consistent with the possibility to pass bare functions as Modifiers. - A few objects were moved to a
src/crappy/lamcube/
folder, to clearly indicate that they are only meant to be used at the LaMcube laboratory. - Most of the objects in Crappy now accept any type of iterable where they previously requested lists or tuples.
- The
examples/
folder of the project was totally refactored, with more, thoroughly commented, tested examples. Most of the Blocks now have at least one example illustrating their usage, and most of the examples can be run locally without requiring any hardware. - The packaging-related files (
setup.py
,requirements.txt
,pyproject.toml
,MANIFEST.in
) were all refactored to include more complete and up-to-date information, and to comply with the recent standards. - The configuration files for building the documentation (
.readthedocs.yml
,docs/source/conf.py
,docs/Makefile
) were updated to include more infor...
v2.0.0-rc.0
Version 2.0.0-rc.0
This release is the first candidate version for the upcoming 2.0.0 release, and hopefully the last one !
The remaining steps before the release of version 2.0.0 are :
- To heavily test it on both Windows and Linux
- To check that it runs as expected on all the supported Python versions
- To test it on real use cases on the experimental setups at the LaMcube
Changes
Compared to the last 2.0.0.dev3 release, it contains :
- A reorganization of the repository to have the extension files in src
- The addition of two Blocks for stopping Crappy in a clean way without using CTRL+C
- The addition of a possible no_raise argument to
crappy.start()
- Notable changes on the runtime sequence of the Block, in particular in unexpected situations
- A refactoring of the examples following the update of the Block
- The addition of a CODEOWNERS file to the repository
- Improvements on the Camera Block to make it more user-friendly to subclass
- Improvements on the Generator Path to make it more user-friendly to subclass
- A major documentation and README update
- A number of Camera-related changes, in the configuration window and in the CameraGstreamer object
- Updates related to the transition towards 2.0.0
- Other minor example updates and bug fixes
Accepted pull requests
- Reset Block after cleanup by @WeisLeDocto in #45
- Runtime order check in Block by @WeisLeDocto in #46
- Add button to auto apply settings in the configuration window by @PIERROOOTT in #48
- Allow custom overlay on Camera Displayer by @WeisLeDocto in #49
- Make it more user-friendly to instantiate custom Camera Blocks by @WeisLeDocto in #50
- Add a step option for the camera scale setting in the configuration window by @PIERROOOTT in #51
- Documentation update for version 2.0.0 by @WeisLeDocto in #52
- Add example demonstrating the creation of a custom Camera Block by @WeisLeDocto in #53
- Simplify the creation of custom Path objects by @WeisLeDocto in #54
- Update the README files by @WeisLeDocto in #56
- Enhancement of the parameters management for the gstreamer camera by @PIERROOOTT in #55
- Add deprecation errors for objects renamed between v1.5 and v2.0 by @WeisLeDocto in #69
- Update version to 2.0.0-rc.0 by @WeisLeDocto in #70
Full Changelog: v2.0.0.dev3...v2.0.0-rc.0
The tarball and the wheel are available on PyPI
v1.5.11
Version 1.5.11
This release is the last one before the version upgrade to 2.0.0 !
It contains warnings signaling the upcoming changes in version 2.0.0.
Adapt your code accordingly when upgrading !
What's Changed
- added additional layout cmd to properly layout arbitrary aspect ratio plots by @magnus-haw in #38
- remove clear button and replace with 'c' keypress by @magnus-haw in #39
- fix bug in example code in the documentation by @WeisLeDocto in #42
- include documentation fix in branch v1.5.11 by @WeisLeDocto in #44
- minor fixes in the distributed examples by @WeisLeDocto in #67
- fix missing dependency for building online documentation by @WeisLeDocto in #67
- add warnings signaling the upcoming changes in version 2.0.0 by @WeisLeDocto in #67
New Contributors
- @magnus-haw made their first contribution in #38
Full Changelog: v1.5.10...v1.5.11
The tarball and the wheel are available on PyPI