123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- [project]
- name = "reflex"
- version = "0.7.12dev1"
- description = "Web apps in pure Python."
- license = { text = "Apache-2.0" }
- authors = [
- { name = "Nikhil Rao", email = "nikhil@reflex.dev" },
- { name = "Alek Petuskey", email = "alek@reflex.dev" },
- { name = "Masen Furer", email = "masen@reflex.dev" },
- { name = "Elijah Ahianyo", email = "elijahahianyo@gmail.com" },
- { name = "Thomas Brandeho", email = "thomas@reflex.dev" },
- { name = "Khaleel Al-Adhami", email = "khaleel@reflex.dev" },
- ]
- maintainers = [
- { name = "Masen Furer", email = "masen@reflex.dev" },
- { name = "Thomas Brandeho", email = "thomas@reflex.dev" },
- { name = "Khaleel Al-Adhami", email = "khaleel@reflex.dev" },
- ]
- readme = "README.md"
- keywords = ["web", "framework"]
- requires-python = ">=3.10,<4.0"
- dependencies = [
- "alembic >=1.15.2,<2.0",
- "fastapi >=0.115.0",
- "granian[reload] >=2.2.5",
- "httpx >=0.28.0,<1.0",
- "jinja2 >=3.1.2,<4.0",
- "packaging >=24.2,<26",
- "platformdirs >=4.3.7,<5.0",
- "psutil >=7.0.0,<8.0",
- "pydantic >=1.10.21,<3.0",
- "python-socketio >=5.12.0,<6.0",
- "python-multipart >=0.0.20,<1.0",
- "redis >=5.2.1,<6.0",
- "reflex-hosting-cli >=0.1.47",
- "rich >=13,<15",
- "sqlmodel >=0.0.24,<0.1",
- "click >=8",
- "typing_extensions >=4.13.0",
- "wrapt >=1.17.0,<2.0",
- ]
- classifiers = [
- "Development Status :: 4 - Beta",
- "License :: OSI Approved :: Apache Software License",
- "Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3.10",
- "Programming Language :: Python :: 3.11",
- "Programming Language :: Python :: 3.12",
- "Programming Language :: Python :: 3.13",
- ]
- [project.urls]
- homepage = "https://reflex.dev"
- repository = "https://github.com/reflex-dev/reflex"
- documentation = "https://reflex.dev/docs/getting-started/introduction"
- [project.scripts]
- reflex = "reflex.reflex:cli"
- [build-system]
- requires = ["hatchling"]
- build-backend = "hatchling.build"
- [tool.hatch.build]
- include = ["reflex", "scripts/hatch_build.py"]
- [tool.hatch.build.targets.sdist]
- artifacts = ["*.pyi"]
- [tool.hatch.build.targets.wheel]
- artifacts = ["*.pyi"]
- [tool.hatch.build.hooks.custom]
- path = "scripts/hatch_build.py"
- dependencies = ["plotly", "ruff"]
- require-runtime-dependencies = true
- [tool.pyright]
- reportIncompatibleMethodOverride = false
- [tool.ruff]
- target-version = "py310"
- output-format = "concise"
- lint.isort.split-on-trailing-comma = false
- lint.select = [
- "ANN001",
- "B",
- "C4",
- "D",
- "E",
- "ERA",
- "F",
- "FURB",
- "I",
- "N",
- "PERF",
- "PGH",
- "PTH",
- "RUF",
- "SIM",
- "T",
- "TRY",
- "UP",
- "W",
- ]
- lint.ignore = [
- "B008",
- "D205",
- "E501",
- "F403",
- "SIM115",
- "RUF006",
- "RUF008",
- "RUF012",
- "TRY0",
- "UP038",
- ]
- lint.pydocstyle.convention = "google"
- [tool.ruff.lint.per-file-ignores]
- "__init__.py" = ["F401"]
- "tests/*.py" = ["ANN001", "D100", "D103", "D104", "B018", "PERF", "T", "N"]
- "benchmarks/*.py" = ["ANN001", "D100", "D103", "D104", "B018", "PERF", "T", "N"]
- "reflex/.templates/*.py" = ["D100", "D103", "D104"]
- "*.pyi" = ["D301", "D415", "D417", "D418", "E742", "N", "PGH"]
- "pyi_generator.py" = ["N802"]
- "reflex/constants/*.py" = ["N"]
- "*/blank.py" = ["I001"]
- [tool.pytest.ini_options]
- filterwarnings = "ignore:fields may not start with an underscore:RuntimeWarning"
- asyncio_default_fixture_loop_scope = "function"
- asyncio_mode = "auto"
- [tool.codespell]
- skip = "docs/*,*.html,examples/*, *.pyi, poetry.lock, uv.lock"
- ignore-words-list = "te, TreeE"
- [dependency-groups]
- dev = [
- "asynctest >=0.13",
- "darglint >=1.8",
- "dill >=0.3",
- "hatchling >=1.27",
- "libsass >=0.23",
- "numpy >=2.2",
- "pandas >=2.2",
- "pillow >=11",
- "playwright >=1.51",
- "plotly >=6.0",
- "pre-commit >=4.2",
- "psycopg[binary] >=3.2",
- "pyright >=1.1.400",
- "pytest >=8.3",
- "pytest-asyncio >=0.26",
- "pytest-benchmark >=5.1",
- "pytest-codspeed >=3.2",
- "pytest-cov >=6.1",
- "pytest-mock >=3.14",
- "pytest-playwright >=0.7",
- "pytest-retry >=1.7",
- "pytest-split >=0.10",
- "python-dotenv >=1",
- "ruff >=0.11",
- "selenium >=4.31",
- "starlette-admin >=0.14",
- "uvicorn >=0.34.0",
- ]
- [tool.coverage.run]
- source = ["reflex"]
- branch = true
- omit = [
- "*/pyi_generator.py",
- "reflex/__main__.py",
- "reflex/app_module_for_backend.py",
- "reflex/components/chakra/*",
- "reflex/experimental/*",
- ]
- [tool.coverage.report]
- show_missing = true
- # TODO bump back to 79
- fail_under = 70
- precision = 2
- ignore_errors = true
- exclude_also = [
- "def __repr__",
- # Don't complain about missing debug-only code:
- "if self.debug",
- # Don't complain if tests don't hit defensive assertion code:
- "raise AssertionError",
- "raise NotImplementedError",
- # Regexes for lines to exclude from consideration
- "if 0:",
- # Don't complain if non-runnable code isn't run:
- "if __name__ == .__main__.:",
- # Don't complain about abstract methods, they aren't run:
- "@(abc.)?abstractmethod",
- # Don't complain about overloaded methods:
- "@overload",
- ]
- [tool.coverage.html]
- directory = "coverage_html_report"
|