Metadata-Version: 2.4
Name: hopeit.engine
Version: 0.29.0
Summary: Hopeit Engine: Microservices with Streams
Author-email: Leo Smerling & Pablo Canto <contact@hopeit.com.ar>, Leo Smerling <contact@hopeit.com.ar>, Pablo Canto <contact@hopeit.com.ar>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/hopeit-git/hopeit.engine
Project-URL: CI: GitHub Actions, https://github.com/hopeit-git/hopeit.engine/actions?query=workflow
Project-URL: Docs: RTD, https://hopeitengine.readthedocs.io/en/latest/
Project-URL: GitHub: issues, https://github.com/hopeit-git/hopeit.engine/issues
Project-URL: GitHub: repo, https://github.com/hopeit-git/hopeit.engine
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Development Status :: 5 - Production/Stable
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Framework :: AsyncIO
Description-Content-Type: text/markdown
Requires-Dist: pydantic<3,>=2.12.5
Requires-Dist: lz4>=4.4.5
Requires-Dist: PyJWT[crypto]>=2.10.1
Requires-Dist: deepdiff>=8.6.1
Requires-Dist: multidict>=6.7.0
Requires-Dist: aiohttp<4,>=3.11.12
Requires-Dist: aiohttp-cors>=0.8.1
Requires-Dist: aiohttp-swagger3>=0.10.0
Requires-Dist: gunicorn>=23.0.0
Requires-Dist: click>=8.3.1
Requires-Dist: uvloop>=0.22; platform_system != "Windows"
Provides-Extra: web
Provides-Extra: cli
Provides-Extra: redis-streams
Requires-Dist: hopeit.redis-streams==0.29.0; extra == "redis-streams"
Provides-Extra: redis-storage
Requires-Dist: hopeit.redis-storage==0.29.0; extra == "redis-storage"
Provides-Extra: fs-storage
Requires-Dist: hopeit.fs-storage==0.29.0; extra == "fs-storage"
Provides-Extra: config-manager
Requires-Dist: hopeit.config-manager==0.29.0; extra == "config-manager"
Provides-Extra: log-streamer
Requires-Dist: hopeit.log-streamer==0.29.0; extra == "log-streamer"
Provides-Extra: apps-visualizer
Requires-Dist: hopeit.apps-visualizer==0.29.0; extra == "apps-visualizer"
Provides-Extra: apps-client
Requires-Dist: hopeit.apps-client==0.29.0; extra == "apps-client"
Provides-Extra: dataframes
Requires-Dist: hopeit.dataframes==0.29.0; extra == "dataframes"

## hopeit.engine

Docs: https://hopeitengine.readthedocs.io/en/latest/


### Engine development README

#### Install locally for apps or plugins development:
- Install [uv](https://docs.astral.sh/uv/getting-started/installation/)
- Run from hopeit.engine project root
```
    make dev
```
- Now everything you need is installed in .venv/
- Then you can create your apps or plugins and run the server

#### Install from Python Package Index
Install core hopeit.engine lib:
```
pip install "hopeit.engine"
```

#### Configure
- Create server configuration json file
    - See [configuration examples](./config/)
- Create apps configuration and python files
    - See [apps examples](../apps/examples/)
- Optionally you can develop plugins, similar to apps but can be shared
    - See available [plugins](../plugins/)

#### Start http server
- Example starting a single app/microservice
```
    python -m hopeit.server.web --config-files=server-config.json,app-folder/config/app-config.json
```

- Additional options:
```
    --config-files: comma-separated file of config files to load, starting with server config, then plugins, then apps
    --api-file: path to openapi complaint json specification
    --host: server host address or name, default is --host=0.0.0.0
    --port: indicates to listen on another port number, default is --port=8020
    --path: indicates to listen in a unix socket path, default is disabled    
    --start-streams: indicates to automatically start events of type STREAM when starting server
    
```

- Example starting a single app that depends on plugins:
```
    python engine/server/web.py --config-files=server-config.json,plugin-folder/config/plugin-config.json,app-folder/config/app-config.json
```

### Tools for Engine Development

- To install development dependencies, from engine folder run:
```
    make dev
```

- To run tests
```
    make test
```

- To fromat code
```
    make format
```

- To run static code checks (types, style)
```
    make lint
```

- To create distribution library (hopeit.engine)
```
    make dist
```
