Metadata-Version: 2.4
Name: ccflow-http
Version: 0.1.0
Summary: ccflow models for HTTP
Project-URL: Repository, https://github.com/1kbgz/ccflow-http
Project-URL: Homepage, https://github.com/1kbgz/ccflow-http
Author-email: 1kbgz <dev@1kbgz.com>
License: Apache-2.0
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
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: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.10
Requires-Dist: ccflow-etl>=0.1.0
Requires-Dist: ccflow>=0.8.5
Requires-Dist: httpx
Requires-Dist: jinja2
Provides-Extra: develop
Requires-Dist: build; extra == 'develop'
Requires-Dist: bump-my-version; extra == 'develop'
Requires-Dist: check-dist; extra == 'develop'
Requires-Dist: codespell; extra == 'develop'
Requires-Dist: hatchling; extra == 'develop'
Requires-Dist: mdformat; extra == 'develop'
Requires-Dist: mdformat-tables>=1; extra == 'develop'
Requires-Dist: pytest; extra == 'develop'
Requires-Dist: pytest-cov; extra == 'develop'
Requires-Dist: ruff; extra == 'develop'
Requires-Dist: twine; extra == 'develop'
Requires-Dist: ty; extra == 'develop'
Requires-Dist: uv; extra == 'develop'
Requires-Dist: wheel; extra == 'develop'
Description-Content-Type: text/markdown

# ccflow-http

ccflow models for HTTP

[![Build Status](https://github.com/1kbgz/ccflow-http/actions/workflows/build.yaml/badge.svg?branch=main&event=push)](https://github.com/1kbgz/ccflow-http/actions/workflows/build.yaml)
[![codecov](https://codecov.io/gh/1kbgz/ccflow-http/branch/main/graph/badge.svg)](https://codecov.io/gh/1kbgz/ccflow-http)
[![License](https://img.shields.io/github/license/1kbgz/ccflow-http)](https://github.com/1kbgz/ccflow-http)
[![PyPI](https://img.shields.io/pypi/v/ccflow-http.svg)](https://pypi.python.org/pypi/ccflow-http)

## Overview

`ccflow-http` provides public, domain-neutral HTTP callable models for `ccflow` workflows. It should own request configuration, auth strategies, request templating, pagination, response parsing, timeout handling, retry/rate-limit integration, and HTTP result metadata.

It should not contain provider-specific endpoint catalogs. Domain packages can configure or subclass these generic models for particular APIs.

## Current Status

- Implemented: `HTTPConfig`, `HTTPAuth`, `HTTPContext`, `HTTPRequestContext`, `HTTPRequest`, `HTTPRetryPolicy`, `HTTPResponseResult`, compatibility `HTTPResult`, `HTTPModel`, templated path/query/header rendering, request explanation through `build_request`, no-auth/bearer/API-key/basic auth helpers, JSON/text/bytes/CSV/gzip response parsing, HTTP status retry classification over `ccflow` retry semantics, retry event summaries on HTTP results, `ccflow-etl` `ExecutionPolicy` request spacing, `next_url`/cursor/page/offset pagination, rate-limit header capture, and mocked `httpx` transport tests.
- Partial: the shared execution policy is currently consumed inside `HTTPModel` for sequential request spacing; broader evaluator-level concurrency coordination still belongs in evaluator integrations.
- Missing: broader integration examples and provider-specific subclasses/configs in downstream packages.

## Dependency Contract

- Depends on `ccflow` for callable model, context, and result interfaces.
- Depends on `ccflow` retry policy semantics and `ccflow-etl` execution policy models.
- Must not depend on finance packages or application-specific packages.

## Test Convention

Default tests should use mocked `httpx` transports or local fixtures. They should not require live network calls or provider credentials.

> [!NOTE]
> This library was generated using [copier](https://copier.readthedocs.io/en/stable/) from the [Base Python Project Template repository](https://github.com/python-project-templates/base).
