semvec/pypi-packages huggingface dataset:
zhongguo-elasticsearch-kaifazhe-diaochabaogao-2019-fix1 2025.3.25.0
中国ElasticSearch开发者调查报告 2019
Requires Python: >=3.6

# 中国ElasticSearch开发者调查报告 2019

## 下载

### Docker

```
docker pull apachecn0/zhongguo-elasticsearch-kaifazhe-diaochabaogao-2019
docker run -tid -p <port>:80 apachecn0/zhongguo-elasticsearch-kaifazhe-diaochabaogao-2019
# 访问 http://localhost:{port} 查看文档
```

### PYPI

```
pip install zhongguo-elasticsearch-kaifazhe-diaochabaogao-2019
zhongguo-elasticsearch-kaifazhe-diaochabaogao-2019 <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g zhongguo-elasticsearch-kaifazhe-diaochabaogao-erlingyijiu
zhongguo-elasticsearch-kaifazhe-diaochabaogao-erlingyijiu <port>
# 访问 http://localhost:{port} 查看文档
```
yunshang-lang-duzhe-fix1 2025.3.25.0
云上朗读者
Requires Python: >=3.6

# 云上朗读者

## 下载

### Docker

```
docker pull apachecn0/yunshang-lang-duzhe
docker run -tid -p <port>:80 apachecn0/yunshang-lang-duzhe
# 访问 http://localhost:{port} 查看文档
```

### PYPI

```
pip install yunshang-lang-duzhe
yunshang-lang-duzhe <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g yunshang-lang-duzhe
yunshang-lang-duzhe <port>
# 访问 http://localhost:{port} 查看文档
```
yun-yuansheng-xiaoxi-duilie-apache-rocketmq-fix1 2025.3.25.0
云原生消息队列Apache RocketMQ
Requires Python: >=3.6

# 云原生消息队列Apache RocketMQ

## 下载

### Docker

```
docker pull apachecn0/yun-yuansheng-xiaoxi-duilie-apache-rocketmq
docker run -tid -p <port>:80 apachecn0/yun-yuansheng-xiaoxi-duilie-apache-rocketmq
# 访问 http://localhost:{port} 查看文档
```

### PYPI

```
pip install yun-yuansheng-xiaoxi-duilie-apache-rocketmq
yun-yuansheng-xiaoxi-duilie-apache-rocketmq <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g yun-yuansheng-xiaoxi-duilie-apache-rocketmq
yun-yuansheng-xiaoxi-duilie-apache-rocketmq <port>
# 访问 http://localhost:{port} 查看文档
```
yun-yuansheng-daguimo-yingyong-luodi-zhinan-fix1 2025.3.25.0
云原生大规模应用落地指南
Requires Python: >=3.6

# 云原生大规模应用落地指南

## 下载

### Docker

```
docker pull apachecn0/yun-yuansheng-daguimo-yingyong-luodi-zhinan
docker run -tid -p <port>:80 apachecn0/yun-yuansheng-daguimo-yingyong-luodi-zhinan
# 访问 http://localhost:{port} 查看文档
```

### PYPI

```
pip install yun-yuansheng-daguimo-yingyong-luodi-zhinan
yun-yuansheng-daguimo-yingyong-luodi-zhinan <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g yun-yuansheng-daguimo-yingyong-luodi-zhinan
yun-yuansheng-daguimo-yingyong-luodi-zhinan <port>
# 访问 http://localhost:{port} 查看文档
```
yun-wangluo-baipishu-fix1 2025.3.25.0
云网络白皮书
Requires Python: >=3.6

# 云网络白皮书

## 下载

### Docker

```
docker pull apachecn0/yun-wangluo-baipishu
docker run -tid -p <port>:80 apachecn0/yun-wangluo-baipishu
# 访问 http://localhost:{port} 查看文档
```

### PYPI

```
pip install yun-wangluo-baipishu
yun-wangluo-baipishu <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g yun-wangluo-baipishu
yun-wangluo-baipishu <port>
# 访问 http://localhost:{port} 查看文档
```
yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-20200630-fix1 2025.3.25.0
《缘梦项目笔记》——网赚掘金实操项目电子书 20200630
Requires Python: >=3.6

# 《缘梦项目笔记》——网赚掘金实操项目电子书 20200630

## 下载

### Docker

```
docker pull apachecn0/yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-20200630
docker run -tid -p <port>:80 apachecn0/yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-20200630
# 访问 http://localhost:{port} 查看文档
```

### PYPI

```
pip install yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-20200630
yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-20200630 <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-erlingerlinglingliusanling
yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-erlingerlinglingliusanling <port>
# 访问 http://localhost:{port} 查看文档
```
yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-20200530-fix1 2025.3.25.0
《缘梦项目笔记》——网赚掘金实操项目电子书 20200530
Requires Python: >=3.6

# 《缘梦项目笔记》——网赚掘金实操项目电子书 20200530

## 下载

### Docker

```
docker pull apachecn0/yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-20200530
docker run -tid -p <port>:80 apachecn0/yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-20200530
# 访问 http://localhost:{port} 查看文档
```

### PYPI

```
pip install yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-20200530
yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-20200530 <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-erlingerlinglingwusanling
yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-erlingerlinglingwusanling <port>
# 访问 http://localhost:{port} 查看文档
```
yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-20200430-fix1 2025.3.25.0
《缘梦项目笔记》——网赚掘金实操项目电子书 20200430
Requires Python: >=3.6

# 《缘梦项目笔记》——网赚掘金实操项目电子书 20200430

## 下载

### Docker

```
docker pull apachecn0/yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-20200430
docker run -tid -p <port>:80 apachecn0/yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-20200430
# 访问 http://localhost:{port} 查看文档
```

### PYPI

```
pip install yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-20200430
yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-20200430 <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-erlingerlinglingsisanling
yuanmeng-xiangmu-biji-wangzhuan-juejin-shicao-xiangmu-dianzishu-erlingerlinglingsisanling <port>
# 访问 http://localhost:{port} 查看文档
```
youku-xiangying-shi-buju-jishu-quan-jiexi-fix1 2025.3.25.0
优酷响应式布局技术全解析
Requires Python: >=3.6

# 优酷响应式布局技术全解析

## 下载

### Docker

```
docker pull apachecn0/youku-xiangying-shi-buju-jishu-quan-jiexi
docker run -tid -p <port>:80 apachecn0/youku-xiangying-shi-buju-jishu-quan-jiexi
# 访问 http://localhost:{port} 查看文档
```

### PYPI

```
pip install youku-xiangying-shi-buju-jishu-quan-jiexi
youku-xiangying-shi-buju-jishu-quan-jiexi <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g youku-xiangying-shi-buju-jishu-quan-jiexi
youku-xiangying-shi-buju-jishu-quan-jiexi <port>
# 访问 http://localhost:{port} 查看文档
```
xiandai-keyan-zhibei-fix1 2025.3.25.0
现代科研指北
Requires Python: >=3.6

# 现代科研指北

## 下载

### Docker

```
docker pull apachecn0/xiandai-keyan-zhibei
docker run -tid -p <port>:80 apachecn0/xiandai-keyan-zhibei
# 访问 http://localhost:{port} 查看文档
```

### PYPI

```
pip install xiandai-keyan-zhibei
xiandai-keyan-zhibei <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g xiandai-keyan-zhibei
xiandai-keyan-zhibei <port>
# 访问 http://localhost:{port} 查看文档
```
x2020-qianduan-gongchengshi-bidu-shouce-fix1 2025.3.25.0
2020前端工程师必读手册
Requires Python: >=3.6

# 2020前端工程师必读手册

## 下载

### Docker

```
docker pull apachecn0/x2020-qianduan-gongchengshi-bidu-shouce
docker run -tid -p <port>:80 apachecn0/x2020-qianduan-gongchengshi-bidu-shouce
# 访问 http://localhost:{port} 查看文档
```

### PYPI

```
pip install x2020-qianduan-gongchengshi-bidu-shouce
x2020-qianduan-gongchengshi-bidu-shouce <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g xerlingerling-qianduan-gongchengshi-bidu-shouce
xerlingerling-qianduan-gongchengshi-bidu-shouce <port>
# 访问 http://localhost:{port} 查看文档
```
x2020-gaode-jishu-niankan-fix1 2025.3.25.0
2020高德技术年刊
Requires Python: >=3.6

# 2020高德技术年刊

## 下载

### Docker

```
docker pull apachecn0/x2020-gaode-jishu-niankan
docker run -tid -p <port>:80 apachecn0/x2020-gaode-jishu-niankan
# 访问 http://localhost:{port} 查看文档
```

### PYPI

```
pip install x2020-gaode-jishu-niankan
x2020-gaode-jishu-niankan <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g xerlingerling-gaode-jishu-niankan
xerlingerling-gaode-jishu-niankan <port>
# 访问 http://localhost:{port} 查看文档
```
x2017-ali-jishu-niandu-jingxuan-xia-fix1 2025.3.25.0
2017 阿里技术年度精选（下）
Requires Python: >=3.6

# 2017 阿里技术年度精选（下）

## 下载

### Docker

```
docker pull apachecn0/x2017-ali-jishu-niandu-jingxuan-xia
docker run -tid -p <port>:80 apachecn0/x2017-ali-jishu-niandu-jingxuan-xia
# 访问 http://localhost:{port} 查看文档
```

### PYPI

```
pip install x2017-ali-jishu-niandu-jingxuan-xia
x2017-ali-jishu-niandu-jingxuan-xia <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g xerlingyiqi-ali-jishu-niandu-jingxuan-xia
xerlingyiqi-ali-jishu-niandu-jingxuan-xia <port>
# 访问 http://localhost:{port} 查看文档
```
x15-fenzhong-kaifa-shijue-ai-yingyong-fix1 2025.3.25.0
15分钟开发视觉AI应用
Requires Python: >=3.6

# 15分钟开发视觉AI应用

## 下载

### Docker

```
docker pull apachecn0/x15-fenzhong-kaifa-shijue-ai-yingyong
docker run -tid -p <port>:80 apachecn0/x15-fenzhong-kaifa-shijue-ai-yingyong
# 访问 http://localhost:{port} 查看文档
```

### PYPI

```
pip install x15-fenzhong-kaifa-shijue-ai-yingyong
x15-fenzhong-kaifa-shijue-ai-yingyong <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g xyiwu-fenzhong-kaifa-shijue-ai-yingyong
xyiwu-fenzhong-kaifa-shijue-ai-yingyong <port>
# 访问 http://localhost:{port} 查看文档
```
x15-fenzhong-dazao-ni-ziji-de-xiao-chengxu-fix1 2025.3.25.0
15分钟打造你自己的小程序
Requires Python: >=3.6

# 15分钟打造你自己的小程序

## 下载

### Docker

```
docker pull apachecn0/x15-fenzhong-dazao-ni-ziji-de-xiao-chengxu
docker run -tid -p <port>:80 apachecn0/x15-fenzhong-dazao-ni-ziji-de-xiao-chengxu
# 访问 http://localhost:{port} 查看文档
```

### PYPI

```
pip install x15-fenzhong-dazao-ni-ziji-de-xiao-chengxu
x15-fenzhong-dazao-ni-ziji-de-xiao-chengxu <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g xyiwu-fenzhong-dazao-ni-ziji-de-xiao-chengxu
xyiwu-fenzhong-dazao-ni-ziji-de-xiao-chengxu <port>
# 访问 http://localhost:{port} 查看文档
```
wuxu-cong-0-kaifa-1-tianshang-shou-zhineng-yuyin-li-zaixian-fangan-fix1 2025.3.25.0
无需从0开发 1天上手智能语音离在线方案
Requires Python: >=3.6

# 无需从0开发 1天上手智能语音离在线方案

## 下载

### Docker

```
docker pull apachecn0/wuxu-cong-0-kaifa-1-tianshang-shou-zhineng-yuyin-li-zaixian-fangan
docker run -tid -p <port>:80 apachecn0/wuxu-cong-0-kaifa-1-tianshang-shou-zhineng-yuyin-li-zaixian-fangan
# 访问 http://localhost:{port} 查看文档
```

### PYPI

```
pip install wuxu-cong-0-kaifa-1-tianshang-shou-zhineng-yuyin-li-zaixian-fangan
wuxu-cong-0-kaifa-1-tianshang-shou-zhineng-yuyin-li-zaixian-fangan <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g wuxu-cong-0-kaifa-1-tianshang-shou-zhineng-yuyin-li-zaixian-fangan
wuxu-cong-0-kaifa-1-tianshang-shou-zhineng-yuyin-li-zaixian-fangan <port>
# 访问 http://localhost:{port} 查看文档
```
fastoas 0.0.1
Customize and override OpenAPI schema details in FastAPI with ease
Requires Python: >=3.8

<p align="center">
  <a href="https://github.com/AlexDemure/fastoas">
    <a href="https://ibb.co/SwwDyCsJ"><img src="https://i.ibb.co/jkk9fX6H/Frame-1349-2.png" alt="Frame-1349-2" border="0"></a>
  </a>
</p>

<p align="center">
  Utility toolkit to modify and override OpenAPI schema definitions in FastAPI.
</p>

---

## Installation

```
pip install fastoas
```

## Usage
```
from fastoas import OpenAPI

app.openapi = Fastoas(app)
```

### Extension ```fastoas.extensions.affix```

```
from fastapi import FastAPI
from pydantic import BaseModel

from fastoas import OpenAPI
from fastoas.extensions.affix import affix

app = FastAPI()

app.openapi = OpenAPI(app, handlers=[affix])


class Deprecated(BaseModel):
    __affix__ = "Deprecated:"


class User(Deprecated):
    id: int


@app.get("/user", response_model=User)
def get_user():
    return {"id": 1}

openapi.json
>>>
{
  "paths": {
    "schema": {
      "$ref": "#/components/schemas/DeprecatedUser"
    }
  },
  "schemas": {
      "DeprecatedUser": {
        "title": "DeprecatedUser"
      }
    }
}
```

### Extension ```fastoas.extensions.operationid```

```
from fastapi import FastAPI
from pydantic import BaseModel

from fastoas import OpenAPI
from fastoas.extensions.operationid import use_route_as_operation_id

app = FastAPI()

app.openapi = OpenAPI(app, handlers=[use_route_as_operation_id])


class User(Deprecated):
    id: int


@app.get("/user", response_model=User)
def get_user():
    return {"id": 1}

openapi.json
>>> BEFORE
{
  "paths": {
    "/user": {
      "get": {
        "operationId": "get_user_user_get",
      }
    }
  }
}

>>> AFTER
{
  "paths": {
    "/user": {
      "get": {
        "operationId": "get_user",
      }
    }
  }
}
```

### Extension ```fastoas.extensions.errors``` 

```
from fastapi import FastAPI
from fastoas.extensions.errors import APIError, openapi_errors

app = FastAPI()


class MyError(APIError):
    ...


@app.get("/user", response_model=dict, responses=openapi_errors(MyError))
def get_user():
    return {"id": 1}

openapi.json
>>>
{
  "paths": {
    "/user": {
      "get": {
        "responses": {
          "200": {
            "description": "Successful Response"
          },
          "418": {
            "description": "MyError",
            "content": {
              "application/json": {
                "example": {
                  "status_code": 418,
                  "detail": {
                    "type": "MyError"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
```


### Custom handler

```
from fastapi import FastAPI
from fastoas import OpenAPI

def my_handler(app: FastAPI, openapi: dict) -> tuple[FastAPI, dict]:
    # Mutate openapi here
    return app, openapi

app = FastAPI()

app.openapi = OpenAPI(app, handlers=[my_handler])

@app.get("/user", response_model=dict)
def get_user():
    return {"id": 1}
```
raplan 0.9.9
Ratio maintenance planning and scheduling in Python.
Requires Python: >=3.11
Keywords: distribution, planning, scheduling, visualisation, visualization

# RaPlan

Ratio maintenance planning and scheduling in Python.

## Quickstart

### Installation

RaPlan can be installed from PyPI using `pip install raplan[all]` for any Python version \>=3.11.
For managed projects, use:

- uv: `uv add raplan[all]`
- Poetry: `poetry add raplan -E all`

### User documentation

The further user documentation is available on
[https://raplan.ratio-case.nl](https://raplan.ratio-case.nl)!

## Development installation

This project is packaged using [uv](https://docs.astral.sh/uv/) as the environment manager and build
frontend. Packaging information as well as dependencies are stored in
[pyproject.toml](./pyproject.toml).

For ease of use, this project uses the [just](https://github.com/casey/just) command runner to
simplify common tasks. Installing the project and its development dependencies can be done by
running `just install` in the cloned repository directory or manually by running `uv sync --all-extras`.

Please consult the [justfile](./justfile) for the underlying commands or run `just` to display a
list of all available commands.

### Tests

Tests can be run using `just test` and subsequent arguments will be passed to pytest.

### Linting

Linting the project can be done using `just lint`, automatic fixes can be applied using `just fix`.
Linting config is included in [pyproject.toml](./pyproject.toml) for Ruff.

### Documentation

Documentation can be built using `just docs` or served continuously using `just serve-docs` with
the help of [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/).

## Contributions and license

To get contributing, feel free to fork, pick up an issue or file your own and get going for your
first merge! We'll be more than happy to help.

For contribution instructions, head over to [CONTRIBUTING.md](./CONTRIBUTING.md).

RaPlan is licensed following a dual licensing model. In short, we want to provide anyone that
wishes to use our published software under the GNU GPLv3 to do so freely and without any further
limitation. The GNU GPLv3 is a strong copyleft license that promotes the distribution of free,
open-source software. In that spirit, it requires dependent pieces of software to follow the same
route. This might be too restrictive for some. To accommodate users with specific requirements
regarding licenses, we offer a proprietary license. The terms can be discussed by reaching out to
Ratio.
EasyGram 0.0.4.2
Библиотека для удобного и многофункционального(в будущем) использования.
Requires Python: >=3.7

Установить:

```bash
pip install git+https://github.com/flexyyyapk/EasyGram.git
```

## Быстрый старт

#### Эхо бот(синхронный)

```python
from EasyGram import SyncBot, types

bot = SyncBot('Token here')

@bot.message(content_types='text')
def echo_bot(message: types.Message):
	message.answer(message.text)

bot.polling()
```

#### Эхо бот(асинхронный)

```python
from EasyGram.Async import AsyncBot, types

bot = AsyncBot('Token here')

@bot.message(content_types='text')
async def echo_bot(message: types.Message):
	await message.answer(message.text)

bot.executor()
```

---

#### Бот рандомайзер(синхронный):

```python
from EasyGram import SyncBot, types
from random import randint

bot = SyncBot('Token here')

@bot.message(commands='start')
def start(message: types.Message):
	#Делаем маленькую кнопку
	button = types.ReplyKeyboardMarkup(resize_keyboard=True)
	button.add('От 1 до 10')

	message.answer('Привет!', reply_markup=button)

@bot.message(lambda message: message.text == 'От 1 до 10')
def random_number(message: types.Message):
	message.answer(f'Тебе выпало: {randint(1, 10)}!')

bot.polling()
```

#### Бот рандомайзер(асинхронный)

```python
from EasyGram.Async import AsyncBot, types
from random import randint

bot = AsyncBot('Token here')

@bot.message(commands='start')
async def start(message: types.Message):
	#Делаем маленькую кнопку
	button = types.ReplyKeyboardMarkup(resize_keyboard=True)
	button.add('От 1 до 10')

	await message.answer('Привет!', reply_markup=button)

@bot.message(lambda message: message.text == 'От 1 до 10')
async def random_number(message: types.Message):
	await message.answer(f'Тебе выпало: {randint(1, 10)}!')

bot.executor()
```

#### Бот для профиля(синхронный)

```python
from EasyGram import SyncBot, types
from EasyGram.state import State, StatesGroup, StateRegExp

bot = SyncBot('Token here')

class States(StatesGroup):
	name = State()
	age = State()
	last_name = State()
	room = State()

@bot.message(commands='start')
def start(message: types.Message):
	States.room.set_state(message.chat.id, message.from_user.id, 'Get name')

bot.polling()
```


## Что нового?

С новой версии `0.0.4.2`:

- AsyncBot...

## Что добавить ещё?

Связаться:

- 📞💌Telegram channel: [Channel](https://t.me/oprosmenya)
taoverse 2.0.2
A utilities library for model training subnets.
Requires Python: >=3.9

# Taoverse Package

This is a package containing various python modules for use in bittensor subnets.

Currently it is primarily supporting the Macrocosmos SN 9 Pretraining and SN 37 Finetuning subnets but much of the code is generally useful and all are welcome to leverage it for their own work as well.

Find the latest published package here: https://pypi.org/project/taoverse/

Following is an overview of each module and some of the bigger pieces of code they include.

## Metagraph

The metagraph module contains code relating to metagraph operations.

- The `MetagraphSyncer` allows for easily refreshing a specified metagraph at a specified cadence. It will operate in asynchronously on the asyncio event loop and will notify any registered listeners after each sync.

- The `MinerIterator` provides a thread safe infinite iterator that safely handles adding new uids.

## Model

The model module contains code relating to large language models.

- The `ModelTracker` will track model metadata and evaluation history on a per hotkey basis. It is designed to keep state across restarts and has methods to save and load state.

- The `ModelUpdater` reads metadata from the chain, validates it, and checks if it is an update to a previous tracked hotkey.

- The model.competition module supports grouping models into distinct competitions.
  - The `CompetitionTracker` helps track weights at a per competition and per subnet level. Like the `ModelTracker` it is designed to keep state across restarts.
  - The `EpislonFunc` allows for computing epsilon with a custom function on a per competition basis. Both a `FixedEpsilon` and a `LinearDecay` implementation are included.

- The model.storage module supports storing and retrieving models and metadata.
  - For models there are included implementations for Hugging Face and the local disk.
  - For metadata there is an included implementation using the Bittensor chain.

## Utilities

The utilities module contains code found to be generically useful in the context of subnets.

- The `PerfMonitor` is a context manager that tracks the performance of a block of code by taking several samples
- In `utils.py` there are some helpers to `run_in_thread` or `run_in_subprocess`.
  - Running metagraph operations in a separate thread with a ttl can help avoid getting stuck on those actions.
  - Running model evaluation within a sub process can help ensure that the model is completely removed from the gpu afterwards.
kontakt 5.0.0
Foundation for adding extensibility to Python packages.
Requires Python: >=3.11

=======
kontakt
=======

Foundation for adding extensibility to Python packages.

This provides an `Extension` base class and utilities for working with it. To create a new
type of extension, you'll first create a subclass of `Extension`. Then for each type of
your new extension, you'll inherit from your subclass. Finally, you'll register these
types of extension with `setuptools` through *entry points* in your `setup.py`.

See `kontakt.example` for a simple example.