Skip to main content

What is Crappy ?

CRAPPY is an acronym and stands for Command and Real-time Acquisition in Parallelized PYthon.

Crappy is developed at the “Laboratoire de Mécanique de Lille”, a mechanical research laboratory based in Lille, France to provide a powerful and easy-to-use framework for materials testing.

In order to understand the mechanical behaviour of materials, we tend to perform tests with more and more sensors and actuators from various suppliers. There’s thus an increasing need to drive these devices in a synchronized way while managing the high complexity of the setups.

As we are one step ahead of industrials, the commercially available testing solutions may also not be well-suited to our objectives. Custom software solutions thus need to be developed in order to further improve our tests.

These are the original purposes of Crappy : providing a framework for controlling tests and driving hardware in a synchronized and supplier-independent software environment.

Key features of Crappy

To this end, choices were made that are now keys to our framework:

  • open-source : It is important for us that everyone can use our work, and bring its own code to the world.

  • modular : We provide a software basis that can easily be extended to drive new hardware and perform custom operation on data.

  • simple : Python has been chosen for its high level. We are not developers, and neither are our users, so we cannot afford to use a low level programming language. We work with typical loop time of more than 1 millisecond (10ms most of the time), and Python is enough for that. It is also pretty easy to add a small piece of C/C++ to the Python code if a speedup is needed.

  • performance : A great deal of work is made to ensure the performance of the framework. Most tests require a good repeatability and stability, and may become hazardous in case of non-handled issue.

  • parallelization : The key to a good test is the synchronisation between the different sensors. This is why we chose to massively parallelize our framework, ensuring every device can run simultaneously in a same time basis. This is also one of the major difficulties we have to deal with in Python.

Is Crappy for me ?

Although it was originally designed for driving mechanical tests, Crappy has acquired the flexibility to adapt to other domains as well. Pretty much any device communicating over USB, serial, SPI or I2C can be integrated within the framework, making it suitable for many fields !

So Crappy is the right solution for you if :

  • You want to drive sensors and actuators in a synchronized and parallelized way.

  • You want a modular solution in which you can easily add new hardware, functions and write your own test protocols.

  • You don’t want to bother coding in a low-level language.

  • You want to remain independent from commercial software environments.

As Crappy’s scope is well-defined, there are also situations in which Crappy won’t be able to help you. So Crappy is NOT for you if :

  • You need to acquire data or drive actuators at frequencies greater than 200Hz.

  • You cannot drive your devices over USB, serial, SPI or I2C.

  • You don’t want to code in Python (although you should give it a try, it’s great and easy to learn :) )

Metadata

Release files for crappy 1.5.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for crappy 1.5.4
File Size Uploaded Provenance Actions
crappy-1.5.4.tar.gz 11.1 MB Without provenance Details for crappy-1.5.4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for crappy 1.5.4
File Interpreter ABI Platform Actions
crappy-1.5.4-py3-none-any.whl Python 3 none any Details for crappy-1.5.4-py3-none-any.whl

Total release size: 11.8 MB

Release files / crappy-1.5.4.tar.gz

Download URL crappy-1.5.4.tar.gz
Size 11.1 MB
Tags Source
SHA-256 checksum
How to use checksums
068034e3bb73905aa66db9b530dca5c282bf0806369d7e4defa772fd21f3e7a7
BLAKE2b-256 checksum
How to use checksums
6d10570dcc3e67eadbc5599aa24446ab11afe6cf87d0a0e7a02c0f27140602af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.8.10

Release files / crappy-1.5.4-py3-none-any.whl

Download URL crappy-1.5.4-py3-none-any.whl
Size 654.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e648be25fc7d4d49ef56e27a5c3e9aa5eaa0558a90cffaebfd8133af6ee16fe7
BLAKE2b-256 checksum
How to use checksums
437bd36f6acd4a5dbe00bcb2189c7cbdd32847185f8f0598c2f345ab11de79c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.8.10

Security for crappy 1.5.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.5.4 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page