elysia-interfaces 2024.2.22
Interfacing between elysia and beam
Requires Python: >=3.10,<3.12

![logo](./miscellaneous/elysia_logo.png)

# elysia-interfaces package
The `elysia-interfaces` package is developed in [Elysia](elysia.co). It enables developers to version their codes.

|       |       |
|-------|-----------------------------------------------------------|
|elysia-interfaces| ![elysia-interfaces](https://img.shields.io/badge/elysia--interfaces-v2023.7.14-654dff.svg?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAGQAAABGCAYAAAA6hjFpAAAACXBIWXMAALiMAAC4jAHM9rsvAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm%2B48GgAACmNJREFUeJztnX2Q1VUZxz97WQQWlpcNhNERFJAXe9MApUjRmKgMLRAnpqkkC8EiZ%2BofnLCiacqX0l5Fs0DKwnFS07RxlAzE4qUyrcRYhICIcJeNDUwQ2N1vfzz37r389pzfffudu3d3%2FM6cubvn9zvnOec85%2FU5z%2FP8aiRRIaSA84ELgInAJOAcYCAwFKgH2oGjQCtwGNgJvAw0ApvTf5eDWuC0dOgHDEiH%2FulnfdKhAziWLsth4GA6LjhqAjNkODAfeC9wKdBQZn4HgI3Ao8CvgNeKSFtDlhGZ3%2F4xv5kwAGNSE7AP6xytZdbDX8gADEkBlwMLgSuwyofAUeAx4G5gQwHvl8OQ3P%2F7YR3jz8BW4ERC9bFCJsiQPsACYDkwOalMC8RzwO3AA%2FinlqQYkhtOAk8A60iIMakkMgE%2BCLwE%2FIzKMwNgCrAW67XvqSDdwdhM8CNgDgm0Z7kj5AzgO8DVRaT5N%2FAnbC7egc3Nr2GLJ9gC3w8YA4zDNgDTsfWoUDwCXA%2B8khNXQ3bhrsmJq8EaMrPgD0iXoQEYBQzBP0IGRMIO4BZgbxFlPQXlMGQesCpd%2BDh0AOuBB9O%2FjSXSmwi8P013BtawcWgBlgAPlUgPjFkjsM5xHjCWeIZkNgArgZ%2BURLAEhvTFesHnyfY0F14Bvg%2F8FPhXKYWLwZnAYmAR1ovjcA%2BwFJvvy8UIYCowExiGmyGZ8BSwDNs%2BF4xiGVKPbTkvi3lnP8awVcUWpgT0w0bBcqyxfFiPbb8PJUS3P9YGc4DT8TNlJ%2FBxbJouCMUwZDi2o5jqed4GfA9YAbxaaKYJoR74KnAD%2FqlsBzCLZEdrHfARbBqtw82UgxjjdheSYaEMGYHt9c%2FzPN%2BObXn%2FUkhmATEVuA%2BTAriwEzug7k%2BY7mTgJkzy4GLKAexwnHexL2SbNhB4HD8z7gOm0f3MANu9TQPu9zwfj01fIxOm%2B3dsPfut5%2FnY9LP8O0VJcaGPpEfkRoekFXnSd2dYli6jC5sk9QtAs0bSUknbJe2V1CzpVUltabpPS%2Bobl0c%2BArd6KtQm6doqaPR8YZGkdk8dVgeku1DSHnVliCTdGZc2LtPZnsp0SPp0FTR2oWGJ%2FCMlZKf6hNwMkaR5vnS%2BzEZIOuCpxI1V0MjFhuWeuhyWNDog3S%2FLzZBmSSNdaXwZ3eupwM%2BroHFLCTWSHvDU6Tfp5yHpRhkiSWtdaVyZvEvuIb5d0qAqaNxSw0BJjY56SdJVAekOlbTLQbND0ozo%2By6OPudI3CZpShU0arlhuqSTjvrtUJ7dT5nhYrk7%2BSZFRmf0HDIHeIdjd7wSu3Po6diCydeiOBe4LiDdZzGZXhTvxNq8E9GT%2Bqb0S7lowiSth%2BkdGIqJUaKyr13ABMLdnZ%2BOSbqj0vFnMOkBcOpJ%2FWK6MgPgW%2FQeZgD8F%2Fi6I34cdtEWCs3Adx3xM4GLOv%2FLmb%2FWOOa4FvXshdwX6mRbzyieDEy3QdIRB93OQ2pmhNRhEssofgj8L%2BmuUgU4CtzliJ9FvBi%2FXBwCfuyIn4tdJXQy5MOYCDsXosRbrx6Ce%2Bm6XvQBrgxMd5UjbijwPsgy5HLHS1uwxa%2B3Yg%2FwO0f83MB0twF%2FdcTPgyxDXDeAD4cqURXhcUfcJSSnjePDLxxxM8E0LSZi2iNRrA9ZIuxe%2FGOBaeTD2Y64euzCaVtAuq62PRsYXUvuliuLVuCFgAUC23vfEphGqbiIsAz5A7ZZGhSJn5HCRkgUL2CKzyHx1sD5l4O3BM7%2FJO4OPymF%2B%2F65VN2pYjChAjRKxVkVoOHaMJ2bwk6oUVSCIa51q1pQCYa42nh8LW7Nw6bAhQHbxW2oAJ1SEMzcIAcHHHHDa%2Bl6IITK6FXdVgEa1Ywjjrj6FF1Xeuid4pJqg5chb6B74NJQrEnhHg2uUfMGksUQR9yRWowhUds%2F17qSNJZhGuTViP8A3wxMw7l212J2FKMjD84MXBgwYdqFFaBTCrYQniEuM4rWFKaAHEUlDm1J24wkiX0VoOGSkOxM4T4xul5OGpWodKlwddKk4er0jSnMlCCKCzBLqZB4MXD%2B5SB02WoxJwpRNNYCv3c8qMcsW7cELNRWT%2FxdlGE0mRCeCZz%2FFMyCN4qttdjN2T%2FpurDPIixDXsItgt6F2Zz3ZrhMt%2FeRXkPALVOaH6w4hnZMgSyKkKo41QKXQsl6yF5V%2FtLxwvmEv7Nw0Z1J19HamzAZt53mryHLkCdwK8MtDFOmTjxK14uwVAXodieuccQdxvy2dDLkOO7euoiwp%2Blm3PfLn8GMJXsbBuPWIX6ItAl5rnDxB44X6zGj%2B5Bw0R0JXBuYbnfgs7g7%2BOrMH1Fl642Yjm8uWrFr3uakS5dGH%2BxwOjYS34Qdnlxi6p6IBuyWMGqJ%2ByymegR01T9ybTeHAbcmWrRT0Q582xE%2FEvhSQLqVxs24zaJvPuW%2FiDJwjaTNDmXgDpnRSSgl5NMkveyge1LShYEVoCsRpsttQLtFEYMdX2KXtc8emfZ2qEJf7aApmSldXRU0aqlhiNwmbe2SpkXf92Wy1pFBm8yAMaSB5NMOupJ0f0C6ocODnjrd43rfl8lwdTWLbpOZ%2BH4lYOHHyEyVXfhiFTRusWGFpy77Jb3JlSYusysimWQY0izzkBCqEp%2FyVKJD0uIqaORCw%2FWeerRLusyXLl%2BmK3MyymXIHkmfDFiZ1TGV6QleJBbLbZsuSV%2BLS5sv477Kzuu5DNkrW2xvUJi5va%2BkDZ4KSdIt3dzgcWFZTLkfk1Qbl74QAg0yg3sXQ56XdJuk%2BgAVGym%2Fob9kXiWqyf5xsGzz4cNmFbBbLEQv6xAwG79HtHdjzox9%2FrRKRRN2b%2BC7Tv0o8Ef8Hu4qiSmYr64FnufbMKfSR%2FNlVKii3F6scf7heT4KO81%2FjmRViPZj1l0%2B07pJ2CXa7XSPLtkQzK3hVsz5gAtbMdFISyEZFusE8wzMg9x4TDrpCi2YKHk9yTnBbMDMwOKcJDcD38BG6%2FGE6PpQh0ltlxHvFfUp4CqKUM0txU3sAGw0zMbPlGOYUHIjNq0cLJaIA32x3rgkz3tNmKfpu0net%2BIY7D5jKfHm08La6CaKNHwqx5HyNZj36MynHaLh9ZywG7tD30v5n36Yi9nP57Mnb8cUOB4GnsQkraVU9s3YyJyPScLjfBWDrbkLSV84FYtyXY2PAW7ExORxDMkNRzAny4cwNxdHMROvkxijRLbhhDVsG6c25ijgTtx30z60YPN5I6ZIsY%2FsSAazkxmESZknYOvTFPI7as7FWuALlGFfk8TXEVLABzD%2F7wPJz5Dos%2BMxvydyfl0FvRS4A9Mj605swzx9rys3oyTMETqwC%2FrrgDVU1lHNBmzbuwBbqyqNFzFHym8jAWZAmA%2B61AJvx4b7OVjvDjVCorgEW%2FSvxEZrCLyOfd1nDbY2JerOKfQnj4ZhesJnYXNzO2EZkkEd5hjsQ5haUbna%2FC2YI%2BR1mEJCj%2FrkkQ8pbGc0GOu9%2FdNxHWQX7swIOkaWESfSz8rBOMwX2ETsADce6yxD02XJGC61YvaVu7HFfzvwPPA3KvRRsP8DmADx4iI3ERoAAAAASUVORK5CYII%3D&labelColor=86868) |
|Build Status|[![Build Status](https://github.com/elysia-bi/elysia-interfaces/actions/workflows/ci.yml/badge.svg)](https://github.com/elysia-bi/elysia-interfaces/actions/workflows/ci.yml) |
|Compatibility|[![Python Compatibility](https://img.shields.io/badge/python->=3.10,<3.12-blue.svg)](https://www.python.org/downloads/release/python-311/)|

# Installation
To install the latest release, make sure you are connected to private feed.

```python
pip install elysia-interfaces
```

To install the package for development, run the following commands:
```python
git clone git@github.com:elysia-bi/elysia-interfaces.git
cd elysia-interfaces
poetry install --with=dev,test
```

# Developers guide
The `main` branch has to be the stable version of the code with strict rules to be merged into.
The `develop` branch should have the latest developtments where codes have been reviewed but still might result in
backward incompatibiliy and require further testing before being merged into `main`.
To contribute to the `elysia-interfaces` package, one would need to follow these steps:

* Create a new branch (`git checkout -b <branch_name>`)
* Install package with `dev` dependencies (`poetry install --with dev`)
* Install pre-commit hooks (`pre-commit install`). This way pre-commit issues need to be resolved before commit.
This should result in passing all hooks
![pre-commit](./miscellaneous/sample_pre-commit.png)
If there would be changes required, you will get detailed description of the issues.
* Once changes are ready, create a pull request (PR) to merge changes into `develop` branch. If the previous step has passed the tests locally, tests should pass in the pipeline too.
* PR should be reviewe by two reviewers for anlytics and coding purposes.