semvec/pypi-packages huggingface dataset:
lunary 1.4.37
Python SDK for Lunary, the open-source platform where GenAI teams manage and improve LLM chatbots.
Requires Python: <4.0.0,>=3.10.0
Keywords: Lunary, lunary.ai, Langchain, AI, Analytics, Monitoring, LLM, GenAI, SDK

<div align="center">

<img src="https://lunary.ai/logo.png" style='border-radius: 12px;' width="50"/> 
<h1>Lunary Python SDK</h1>

**📈 Python monitoring for AI apps and agent**

[website](https://lunary.ai) - [docs](https://lunary.ai/docs/py/) - ![PyPI - Version](https://img.shields.io/pypi/v/lunary)

---

</div>

Use it with any LLM model and custom agents (not limited to OpenAI).

To get started, get a project ID by registering [here](https://lunary.ai).

## 🛠️ Installation

```bash
pip install lunary
```

## 📖 Documentation

Full docs are available [here](https://lunary.ai/docs/py).
metaboatrace.scrapers 3.4.0
Scrapers for Japanese boatrace websites
Requires Python: >=3.13

![GitHub Workflow Status](https://github.com/metaboatrace/scrapers/actions/workflows/publish.yml/badge.svg)
![GitHub Workflow Status](https://github.com/metaboatrace/scrapers/actions/workflows/tests.yml/badge.svg)
![GitHub Workflow Status](https://github.com/metaboatrace/scrapers/actions/workflows/lint.yml/badge.svg)
![Coverage](https://img.shields.io/codecov/c/github/metaboatrace/scrapers.svg)
![PyPI version](https://img.shields.io/pypi/v/metaboatrace.scrapers.svg)
![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)
![Python version](https://img.shields.io/badge/python-3.13-blue.svg)
![Code style: ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)

## 概要

ボートレース関連の WEB サイトのスクレイピングライブラリ

以下の機能を備える

- [ボートレース公式サイト](https://boatrace.jp/) に対応する下記
  - URL の生成
  - スクレイピング

## パッケージの構成

名前空間パッケージになっており、共通の名前空間 (`metaboatrace`) を保持する同種のパッケージがある。

- [metaboatrace.models](https://github.com/metaboatrace/models)

### ボートレース公式サイトに対応する規約

名前空間は以下のように切られている。

- metaboatrace.scrapers.official.website.v1707

この `v1707` の部分はボートレース公式サイトのバージョンに対応している。

バージョニングは、Ubuntu でのそれに近い。  
Ubuntu は 22.04 のように年と月という形でバージョニングされている（22.04.1 のようセキュリティパッチのリビジョンも付くことがある）。

ボートレースの公式サイトが現行のものになったのは 2017 年の 7 月なので、それに合わせてここでは `v1707` としている。

## 機能

`metaboatrace/scrapers/official/website/v1707/pages` 直下に、公式サイトのページに対応した名前空間がある。  
例えば、[公式サイトの月間スケジュール](https://boatrace.jp/owpc/pc/race/monthlyschedule)に対応するものは `monthly_schedule_page` である。

これらの配下に `location` と `scraping` というモジュールがある。

前者は引数（日付など）をもとに公式サイトの URL を生成するような責務を負った関数が包含されている。  
例えば、年と月を与えたら "https://boatrace.jp/owpc/pc/race/monthlyschedule?ym=202209" といったそのデータに対応する公式サイトの月間スケジュールの URL を返すような関数が入っている。

後者は、公式サイトの HTML ファイルをスクレイピングのモジュールである。  
例えば、ここに入ってる関数は "https://boatrace.jp/owpc/pc/race/monthlyschedule?ym=202209" のファイルをスクレイピングして[エンティティ](https://github.com/metaboatrace/models)を返すような処理を行う。

※ ここでいうエンティティはクリーンアーキテクチャの定義上のエンティティのことであり、[metaboatrace.models](https://github.com/metaboatrace/models)はそういったものを提供しているパッケージ

## ブランチ戦略

[GitHub Flow](https://docs.github.com/en/get-started/using-github/github-flow) を採用している。
metaboatrace.models 2.4.0
Models of Japanese boatrace
Requires Python: >=3.13

![GitHub Workflow Status](https://github.com/metaboatrace/models/actions/workflows/publish.yml/badge.svg)
![GitHub Workflow Status](https://github.com/metaboatrace/models/actions/workflows/tests.yml/badge.svg)
![GitHub Workflow Status](https://github.com/metaboatrace/models/actions/workflows/lint.yml/badge.svg)
![Coverage](https://img.shields.io/codecov/c/github/metaboatrace/models.svg)
![PyPI version](https://img.shields.io/pypi/v/metaboatrace.models.svg)
![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)
![Python version](https://img.shields.io/badge/python-3.13-blue.svg)
![Code style: ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)

## 概要

ボートレース関連の開発で用いるモデルのパッケージ  
※ 機械学習におけるモデルではなく、クリーンアーキテクチャでのエンティティ層に相当するモジュールの集積

## インストール

```bash
$ pip install metaboatrace.models
```

## 開発環境構築

```bash
uv sync
source .venv/bin/activate
```

※ `uv` が事前にインストールされていること

## ブランチ戦略

[GitHub Flow](https://docs.github.com/en/get-started/using-github/github-flow) を採用している。
unfazed-checkpointer 0.0.1
Langgraph checkpointer Plugin for Mysql
Requires Python: >=3.12

Unfazed Checkpointer
======

unfazed-checkoutpointer is a unfazed plugin for langgraph.

important:
- only support async methods now.
- only support mysql/tidb protocol now.

reference docs:

- [what is checkpoint](https://docs.langchain.com/oss/python/langgraph/persistence#checkpointer-libraries)
- [checkpoint for pg](https://github.com/langchain-ai/langgraph/tree/main/libs/checkpoint-postgres/langgraph/checkpoint/postgres)


## Usage

Install unfazed-checkpointer

> make sure you already installed unfazed

```bash

pip install unfazed-checkpointer

```


Migrate the DB

> currently we only support mysql or tidb



```bash

# for the first migration
unfazed-cli init-db


# for the upgrade
unfazed-cli migrate
unfazed-cli upgrade

```

Use it in your code


```py

import uuid

from langchain_core.runnables import RunnableConfig
from langgraph.graph import END, START, StateGraph
from langgraph.types import Command as LangGraphCommand
from langgraph.types import interrupt

from unfazed_checkpointer.services import TortoiseCheckpointSaver

# ==================== State & Nodes ====================


class SimpleState(t.TypedDict):
    foo: str
    bar: t.Annotated[list[str], operator.add]



class InterruptState(t.TypedDict):
    foo: str
    bar: t.Annotated[list[str], operator.add]


def interrupt_node(state: InterruptState) -> dict[str, t.Any]:
    """Runs second, interrupts and modifies foo on resume."""
    approved = interrupt("Do you want to proceed?")
    return {"foo": f"a-approved:{approved}", "bar": ["a"]}

async def main():
    workflow = StateGraph(SimpleState)
    workflow.add_node("node", interrupt_node)
    workflow.add_edge(START, "node")
    workflow.add_edge("node", END)
    checkpointer = TortoiseCheckpointSaver()
    graph = workflow.compile(checkpointer=checkpointer)
    thread_id = str(uuid.uuid4())
    config: RunnableConfig = {"configurable": {"thread_id": thread_id}}
    await graph.ainvoke(
            t.cast(SimpleState, {"foo": "init", "bar": ["init"]}), config
        )

```