Official Python Package for creation of disy Cadenza analytics extensions
Project description
Cadenza Analytics Python
cadenzaanalytics is the official package for fast and easy creation of disy Cadenza analytics extensions with Python. It enables the extension of disy Cadenza for advanced analytics purposes with the usage of python code.
Currently, this package is in beta status: it can be used for testing, but there may be breaking changes before a full release.
Find the docs at https://disyinformationssysteme.github.io/cadenza-analytics-python
Dependencies:
- Python 3
- Flask
- Pandas
- requests-toolbelt
Example:
Example extension can be found in examples.
To test a example extension, clone this repository, install the dependencies, navigate to the folder, e.g. examples/calculation/extension
. Run the example file in your python environment e.g.:
python example_extensions.py
A development server will be started on localhost http://127.0.0.1:5005
. The analytics extension can now be registered and used in disy Cadenza.
It is not recommended to use the development server in a production environment.
Development of Cadenza Analytics Python
Development Environment
Development is possible via most common IDEs such as Visual Studio Code or PyCharm. Make sure to mark the src
directory as "Sources Root" to make sure cross imports from the examples
directory work as expected and that imports within cadenzaanalytics
can get resolved by the IDE.
Python version
We aim to support older python versions and dependencies, but best experience and most features will be available for newer versions, currently this is Python 9.12
.
Versioning
Versioning of cadenzaanalytics
will happen via poetry-bumpversion. On release, this will bump the version depending on the chosen release type.
The project uses semantic versioning with a major, minor and patch version.
Documentation
On release, all "Unreleased" changes in the Changelog will be automatically tagged with the released version. So make sure to add relevant changelog notes for every change you make and follow the style described in the changelog file.
Pylint
Pylint is used for making sure that cadenzaanalytics
follows some common styles. If necessary some rules can be disabled globally in the .pylintrc file or in the corresponding python file. There is a GitHub workflow to validate this. For some IDEs like PyCharm there are also plugins for Pylint so that linting can happen within the IDE and errors in the pipeline can be avoided.
Releasing:
Make sure to check the following
- Does the Changelog contain all relevant information?
- Are all relevant workflows green?
- Do you want to make a test release to https://test.pypi.org? This is helpful to test
cadenzaanalytics
with existing extensions. To get the latest version immediately it might be good to disable caches, e.g. viapip install --upgrade cadenzaanalytics --extra-index-url https://test.pypi.org/simple --no-cache-dir
. For a first installation in a new (virtual) environment, you can usepip install cadenzaanalytics --extra-index-url https://test.pypi.org/simple
- To make a non-test release, choose the pypi.org deployment environment in the release dialog.
Dockerized Example Extension
To run the example (and your production application) in a docker container you will need to define the wsgi server that will run the flask app.
The provided Dockerfile in the examples uses gunicorn with some example options, for more details consult the documentation. Important is that gunicorn has access to a function creating or providing the flask app object, which for cadenzanalytics
is the CadenzaAnalyticsExtensionService
.
The requirements file can use test releases when adding --extra-index-url https://test.pypi.org/simple
in the first line. It can (re)define versions of its own or transient dependencies, but most importantly needs the cadenzaanalytics
dependency.
cd /examples/calculation
docker build . -t cadenza-analytics-example
docker image list
docker run -p 8080:8080 YOUR_CREATED_IMAGE_ID
Technical notes
The release process uses PyPi's trusted publishing, so is based on
OIDC id token and uses no API token from PyPi. The relevant permission id-token: write
must be given to the release-job.
The test environment test.pypi.org makes no guarantee on availability of the package or even on the account. So it might be necessary to recreate an account at some point in time.
To test and play around with poetry-bumpversion locally, you can use it as follows, see documentation of poetry and poetry-bumpversion
pipx install poetry
pipx run poetry self add poetry-bumpversion
pipx run poetry version minor -s
License:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file cadenzaanalytics-0.1.23.tar.gz
.
File metadata
- Download URL: cadenzaanalytics-0.1.23.tar.gz
- Upload date:
- Size: 17.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1170ce40c4275914cbd34f0403f81b159596c9a89409155ae40a3ad77724dd63 |
|
MD5 | e29307cbd93bc829298188309d1b3883 |
|
BLAKE2b-256 | dd640130b0cc474293ccdd14042a69b24357b1b676a0acf5eb9ceb15e906861b |
File details
Details for the file cadenzaanalytics-0.1.23-py3-none-any.whl
.
File metadata
- Download URL: cadenzaanalytics-0.1.23-py3-none-any.whl
- Upload date:
- Size: 24.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00ac452af47097926b320835f7003b8a6476a4c99474353a04a1dedfaf8f91aa |
|
MD5 | 7460505fd515bd82d67178a03ac21f4e |
|
BLAKE2b-256 | be5da8e641c58a833380545a8edb1ffa713088facb7902cb144924a4064643d1 |