Skip to main content

pydantic-market-data

PyPI version License: MIT CI Status

Shared Pydantic models and interfaces for financial data sources. Defines a standard contract (DataSource) and data structures (OHLCV, Security, History) to ensure interoperability between finance packages.

Installation

pip install pydantic-market-data

Usage

Models

Standardized data models for financial entities.

from pydantic_market_data.models import Security, OHLCV, SecurityQuery

# Security Definition
s = Security(
    symbol="AAPL",
    name="Apple Inc.",
    exchange="NASDAQ",
    currency="USD",
    asset_class="equity",  # AssetClass value
    isin="US0378331005"
)

# Historical Data Point
candle = OHLCV(
    date="2023-12-01", # Coerced to FlexibleDatetime
    open=150.0,
    high=155.0,
    low=149.0,
    close=154.0,
    volume=50000000
)

# Security Lookup Query
query = SecurityQuery(
    symbol="AAPL",
    asset_class="equity",
    price_on={"price": 190.0, "date": "2023-12-01"}  # Known price, coerced to list[PriceOnDate]
)

Protocol

Implement the DataSource protocol to create compatible data providers.

from pydantic_market_data.interfaces import DataSource
from pydantic_market_data.models import SecurityQuery, Security, History, Symbol, HistoryPeriod

class MySource(DataSource):
    def resolve(self, criteria: SecurityQuery) -> Security | None:
        # Implementation...
        pass

    def history(self, symbol: Symbol.Input, period: HistoryPeriod = HistoryPeriod.MO1) -> History:
        # Implementation...
        pass

    def search(self, query: str) -> list[Security]:
        # Implementation...
        pass

    # ...plus get_price() and validate()

CLI Support

The package provides optimized pydantic-settings models for building professional CLI tools.

from pydantic_market_data.cli_models import SearchArgs, PatchedCliSettingsSource
from pydantic_settings import BaseSettings, CliSubCommand

class MyCliSettings(BaseSettings):
    search: CliSubCommand[SearchArgs]

    @classmethod
    def settings_customise_sources(cls, settings_cls, **kwargs):
        return (PatchedCliSettingsSource(settings_cls, cli_parse_args=True),)

# Usage:
# my-tool search --symbol AAPL -vv --format json

Key CLI features:

  • Clean Help: Automatically removes default values from help text for a cleaner look.
  • Improved Flags: Normalizes double-dash flags like --vv to -vv.
  • JSON Schema: Adds a --schema flag to output the interface definition.
  • Consistent Defaults: Whatever order your BaseSettings subclass lists its bases in, multi-word fields become --asset-class, -v/-vv are valueless flags, and optional values show as --symbol SYMBOL (not {SYMBOL,null}). Pass cli_kebab_case, cli_implicit_flags or cli_hide_none_type to the source to override.
  • Metavars: Custom types (SYMBOL, ISIN, etc.) provide descriptive help labels. The top-level pydantic_market_data.ISIN is the validating value object; the ISIN metavar lives in pydantic_market_data.cli_models.

SearchArgs and HistoryArgs are SecurityQueryArgs and HistoryQueryArgs plus GlobalArgs (-v, -vv, --format, --schema). SearchArgs also adds --limit, a paging option that list-command frameworks are expected to own. If your CLI framework already owns those options, use the domain-only *QueryArgs models instead:

from pydantic_market_data import SecurityQueryArgs

class SearchCommand(SecurityQueryArgs):
    pass  # --symbol, --isin, ... without -v/--format/--schema/--limit

License

MIT

Metadata

Release files for pydantic-market-data 0.10.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pydantic-market-data 0.10.0
File Size Uploaded
pydantic_market_data-0.10.0.tar.gz 36.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pydantic-market-data 0.10.0
File Interpreter ABI Platform
pydantic_market_data-0.10.0-py3-none-any.whl Python 3 none any Details

Total release size: 50.5 kB

Release files / pydantic_market_data-0.10.0.tar.gz

Download URL pydantic_market_data-0.10.0.tar.gz
Size 36.1 kB
Tags Source
SHA-256 checksum
How to use checksums
7369d39990dd6fa2f9ad6f78ae69d6048d301c773b318096fb47c383e37a53c2
BLAKE2b-256 checksum
How to use checksums
601ae28f76c5fdc524d836a40962f1931974501790bf97eaedd6f3b1134c03bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / pydantic_market_data-0.10.0-py3-none-any.whl

Download URL pydantic_market_data-0.10.0-py3-none-any.whl
Size 14.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a4e245ffc69058983c4df1fa5158dd0b1c967f5ed1f8ffcc5b72faf7c9ceca28
BLAKE2b-256 checksum
How to use checksums
3853332198c4edefc1f68b2299e60948ee17d244771ac32babf51271af6990e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.10.0 This release

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page