Ctrl K
ComunidadGuías…

pyproject.toml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "openoutreach"
# **The base, not the released version.** Major and minor are declared here and bumped by
# hand when a change deserves it; the patch is derived at publish time from the number of
# commits since `v0.1.0` (`.github/workflows/deploy.yml`, job `publish-pypi`), because
# every green push to `main` releases and PyPI version numbers are single-use. A local
# install reports this literal — `core/version.py` is what identifies a build precisely.
version = "0.1.0"
description = "Open-source AI lead finder: describe your product, get qualified leads with the reason each one fits."
readme = "README.md"
requires-python = ">=3.12"
license = "GPL-3.0-or-later"
license-files = ["LICENCE.md"]
authors = [{ name = "OpenOutreach", email = "hello@openoutreach.app" }]
keywords = [
    "lead-generation",
    "b2b",
    "outreach",
    "cold-email",
    "sales-automation",
    "self-hosted",
    "open-source",
    "crm",
]
classifiers = [
    "Development Status :: 4 - Beta",
    "Environment :: Console",
    "Framework :: Django",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.12",
    "Topic :: Office/Business",
]

# Both children are required, not extras: `pip install openoutreach` alone has to be the
# whole find-then-send flow, or the second install is the friction this package exists to
# remove. Everything the finding and the sending need — pydantic-ai, fastembed, sklearn,
# the mail transport — arrives through them; what is declared here is what *this* package
# imports directly.
#
# **The pins are exact, and the cost is known.** This project hosts both children's Django
# apps in one registry and owns the one migration graph over them, so a model change in
# either child needs a matching release here. Three repos that move together is the price
# of one install, and of a wizard that hands each child the environment it reads.
dependencies = [
    "Django>=5.2,<7.0",
    "openoutfind==0.1.78",
    "openoutsend==0.1.72",
    # The wizard validates a country code against a real list of them. Declared rather
    # than inherited from the finder: the rule above is that this file names what *this*
    # package imports directly.
    "pytz>=2024.1",
]

[project.optional-dependencies]
dev = [
    "pytest>=8",
    "pytest-django>=4.8",
    "pytest-mock>=3.14",
    "pytest-cov>=5",
]

[project.scripts]
openoutreach = "openoutreach.__main__:main"

[project.urls]
Homepage = "https://openoutreach.app"
Source = "https://github.com/eracle/OpenOutreach"
Issues = "https://github.com/eracle/OpenOutreach/issues"

[tool.hatch.build.targets.wheel]
packages = ["openoutreach"]

[tool.hatch.build.targets.sdist]
include = ["openoutreach", "README.md", "LICENCE.md", "LEGAL_NOTICE.md", "pyproject.toml"]