# ModelPark
ModelPark provides a versatile platform to share and manage your ML models directly from your machine, offering a convenient Python API to manage these tasks programmatically, including controlling access and publishing applications.
This library provides a more Pythonic way of managing your applications with [ModelPark](https://modelpark.app/) compared to using the CLI directly.
See [ModelPark](https://modelpark.app/) website and platform for more details.
![image](https://github.com/model-park/modelpark/assets/25637056/6eac80e7-91e9-477a-bcce-bd7d369d932e)
![image](https://github.com/model-park/modelpark/assets/25637056/be495106-915d-4989-818d-dad7bb5abc71)
## Features
- Share models directly from the Python API.
- Publish and manage applications using the ModelPark Python API.
- Configure access management according to your needs through Python methods.
## Installation
To install ModelPark, you can use pip:
```bash
pip install modelpark
```
## Configuration
Ensure Python and pip are installed on your machine. This API interfaces with the ModelPark CLI but manages interactions programmatically through Python.
## Usage
Here's how you can use the ModelPark Python package:
### Initialize and Login
```python
from modelpark import ModelPark
mp = ModelPark() # downloads the modelpark CLI binary/ executable to your home folder as "~/modelpark'
mp.login(username="your_username", password="your_password")
mp.init()
```
#### clear cache while init (remove existing modelpark CLI binaries from system)
```python
from modelpark import ModelPark
mp = ModelPark(clear_cache=True)
```
### Register an Application
#### Register an app running on a certain port
```python
mp.register(port=3000, name="my-app", access="public")
# access='private' if private (not visible/ accessible in modelpark dashboard)
```
#### Register a password protected app running on a certain port
```python
mp.register_port(port=3000, name="my-app", access="public", password='123')
```
#### Register an app running on a certain port
```python
mp.register_port(port=3000, name="my-app", access="public")
```
#### Register a streamlit app that is not run yet (this starts the app as well)
```python
mp.run_with_streamlit_and_register(port=3000, name="my-app", file_path="~/my-app/streamlit-app.py", access="public", framework="streamlit")
# generic registration also works >>
# mp.register(port=3000, name="my-app", file_path="~/my-app/streamlit-app.py", access="public", framework="streamlit")
```
#### Register a streamlit app that is not run yet
```python
mp.register(port=3000, name="my-app", file_path="~/my-app/streamlit-app.py", access="public", framework="streamlit")
```
#### Register a Fast API app while deploying
add `register_port` within startup_event() function in FAST API app
```python
@app.on_event("startup")
async def startup_event():
mp.register_port(port=5000, name="my-fast-api", access="public")
```
### List Registered Applications
```python
mp.ls()
# or mp.status()
```
### Stop and Logout
```python
mp.stop()
mp.logout()
```
### Kill an Application
```python
mp.kill(name="my-app")
```
### Kill all the registrations in this session
```python
mp.kill(all=True)
```
### Make an API Call to a Registered Application
```python
from modelpark import APIManager
mp_api = APIManager()
user_credentials = {'username': 'your_username', 'password': 'your_password'}
app_name = 'my-app'
extension = 'api_extension' # or None
password = 'psw' # or None if no password protection
request_payload = {'key': 'value'} # Payload required by the application
# Make the API call
response = mp_api.make_api_call(app_name, user_credentials, request_payload=request_payload, password=password, extension=extension)
print(response.json()) # Assuming the response is in JSON format
# get an access token to hit a modelpark api endpoint
import requests
expire ='7d' # x days or None
password = '1234' # or None if no password protection
auth_token = mp_api.get_auth_token(user_credentials)
access_token = mp_api.get_access_token(app_name, auth_token, password=password, expire=expire)
headers = {
"x-access-token": access_token}
query = {'key': 'value'}
requests.get(url, headers=headers, params=query).json()
```
Raw data
{
"_id": null,
"home_page": "https://github.com/model-park/modelpark",
"name": "modelpark",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "modelpark, deployment, cloud, api",
"author": "Veysel Kocaman",
"author_email": "info@modelpark.app",
"download_url": "https://files.pythonhosted.org/packages/05/90/761eb3df6defd79c1050ca7634f82cec2ed4f04cbd8784c57e0dcf802a46/modelpark-0.1.19.tar.gz",
"platform": null,
"description": "\n# ModelPark\n\nModelPark provides a versatile platform to share and manage your ML models directly from your machine, offering a convenient Python API to manage these tasks programmatically, including controlling access and publishing applications.\n\nThis library provides a more Pythonic way of managing your applications with [ModelPark](https://modelpark.app/) compared to using the CLI directly.\n\nSee [ModelPark](https://modelpark.app/) website and platform for more details.\n\n![image](https://github.com/model-park/modelpark/assets/25637056/6eac80e7-91e9-477a-bcce-bd7d369d932e)\n\n![image](https://github.com/model-park/modelpark/assets/25637056/be495106-915d-4989-818d-dad7bb5abc71)\n\n## Features\n\n- Share models directly from the Python API.\n- Publish and manage applications using the ModelPark Python API.\n- Configure access management according to your needs through Python methods.\n\n## Installation\n\nTo install ModelPark, you can use pip:\n```bash\npip install modelpark\n```\n\n## Configuration\n\nEnsure Python and pip are installed on your machine. This API interfaces with the ModelPark CLI but manages interactions programmatically through Python.\n\n## Usage\n\nHere's how you can use the ModelPark Python package:\n\n### Initialize and Login\n```python\nfrom modelpark import ModelPark\n\nmp = ModelPark() # downloads the modelpark CLI binary/ executable to your home folder as \"~/modelpark'\nmp.login(username=\"your_username\", password=\"your_password\")\nmp.init()\n```\n\n#### clear cache while init (remove existing modelpark CLI binaries from system)\n```python\nfrom modelpark import ModelPark\n\nmp = ModelPark(clear_cache=True)\n```\n\n### Register an Application \n\n#### Register an app running on a certain port\n```python\nmp.register(port=3000, name=\"my-app\", access=\"public\") \n# access='private' if private (not visible/ accessible in modelpark dashboard)\n```\n#### Register a password protected app running on a certain port\n\n```python\nmp.register_port(port=3000, name=\"my-app\", access=\"public\", password='123')\n```\n\n#### Register an app running on a certain port\n\n```python\nmp.register_port(port=3000, name=\"my-app\", access=\"public\")\n```\n\n#### Register a streamlit app that is not run yet (this starts the app as well)\n```python\nmp.run_with_streamlit_and_register(port=3000, name=\"my-app\", file_path=\"~/my-app/streamlit-app.py\", access=\"public\", framework=\"streamlit\")\n# generic registration also works >> \n# mp.register(port=3000, name=\"my-app\", file_path=\"~/my-app/streamlit-app.py\", access=\"public\", framework=\"streamlit\")\n\n```\n\n#### Register a streamlit app that is not run yet \n```python\nmp.register(port=3000, name=\"my-app\", file_path=\"~/my-app/streamlit-app.py\", access=\"public\", framework=\"streamlit\")\n```\n\n#### Register a Fast API app while deploying \nadd `register_port` within startup_event() function in FAST API app\n```python\n@app.on_event(\"startup\")\nasync def startup_event():\n mp.register_port(port=5000, name=\"my-fast-api\", access=\"public\") \n``` \n\n### List Registered Applications\n```python\nmp.ls()\n# or mp.status()\n```\n\n### Stop and Logout\n```python\nmp.stop()\nmp.logout()\n```\n\n### Kill an Application\n```python\nmp.kill(name=\"my-app\")\n```\n\n### Kill all the registrations in this session\n```python\nmp.kill(all=True)\n```\n\n\n### Make an API Call to a Registered Application \n```python\nfrom modelpark import APIManager\nmp_api = APIManager()\n\nuser_credentials = {'username': 'your_username', 'password': 'your_password'}\napp_name = 'my-app'\nextension = 'api_extension' # or None\npassword = 'psw' # or None if no password protection\nrequest_payload = {'key': 'value'} # Payload required by the application\n\n# Make the API call\nresponse = mp_api.make_api_call(app_name, user_credentials, request_payload=request_payload, password=password, extension=extension)\nprint(response.json()) # Assuming the response is in JSON format\n\n# get an access token to hit a modelpark api endpoint\n\nimport requests\n\nexpire ='7d' # x days or None\npassword = '1234' # or None if no password protection\nauth_token = mp_api.get_auth_token(user_credentials)\naccess_token = mp_api.get_access_token(app_name, auth_token, password=password, expire=expire)\n\nheaders = {\n \"x-access-token\": access_token}\n\nquery = {'key': 'value'} \n\nrequests.get(url, headers=headers, params=query).json()\n```\n\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Versatile solution for sharing apps through secure URLs",
"version": "0.1.19",
"project_urls": {
"Homepage": "https://github.com/model-park/modelpark"
},
"split_keywords": [
"modelpark",
" deployment",
" cloud",
" api"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "ac9843c88603cd92a22a660e2afd86cfa13014e147e7712a14612b4f862c1377",
"md5": "30b186a2239808b42eaa42380cddf204",
"sha256": "63ab121896a1f2c62786ed9ef0d8ba5746ad4812e84d4f6eca3b5309531a2f7b"
},
"downloads": -1,
"filename": "modelpark-0.1.19-py3-none-any.whl",
"has_sig": false,
"md5_digest": "30b186a2239808b42eaa42380cddf204",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 7096,
"upload_time": "2024-08-07T12:36:32",
"upload_time_iso_8601": "2024-08-07T12:36:32.160529Z",
"url": "https://files.pythonhosted.org/packages/ac/98/43c88603cd92a22a660e2afd86cfa13014e147e7712a14612b4f862c1377/modelpark-0.1.19-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0590761eb3df6defd79c1050ca7634f82cec2ed4f04cbd8784c57e0dcf802a46",
"md5": "fac402c78085de6aebbbd63fc4e9babf",
"sha256": "1e9d9e49bca7b3e7a7385692d4942ace8350f336c711058630e5171955a3810d"
},
"downloads": -1,
"filename": "modelpark-0.1.19.tar.gz",
"has_sig": false,
"md5_digest": "fac402c78085de6aebbbd63fc4e9babf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7041,
"upload_time": "2024-08-07T12:36:33",
"upload_time_iso_8601": "2024-08-07T12:36:33.621854Z",
"url": "https://files.pythonhosted.org/packages/05/90/761eb3df6defd79c1050ca7634f82cec2ed4f04cbd8784c57e0dcf802a46/modelpark-0.1.19.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-07 12:36:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "model-park",
"github_project": "modelpark",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "modelpark"
}