Skip to content

Commit 6060680

Browse files
authored
Create pyproject.toml
1 parent 4d857eb commit 6060680

File tree

1 file changed

+114
-0
lines changed

1 file changed

+114
-0
lines changed

pyproject.toml

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
[project]
2+
name = "pyportfolioopt"
3+
version = "1.5.6"
4+
description = "Financial portfolio optimization in python"
5+
license = { file = "LICENSE" }
6+
maintainers = [
7+
{ name = "Robert Andrew Martin", email = "[email protected]" },
8+
]
9+
authors = [
10+
{ name = "Robert Andrew Martin", email = "[email protected]" },
11+
]
12+
readme = "README.md"
13+
keywords= ["finance", "portfolio", "optimization", "quant", "investing"]
14+
classifiers=[
15+
"Development Status :: 4 - Beta",
16+
"Environment :: Console",
17+
"Intended Audience :: Financial and Insurance Industry",
18+
"Intended Audience :: Science/Research",
19+
"License :: OSI Approved :: MIT License",
20+
"Natural Language :: English",
21+
"Operating System :: OS Independent",
22+
"Programming Language :: Python :: 3.14",
23+
"Programming Language :: Python :: 3.13",
24+
"Programming Language :: Python :: 3.12",
25+
"Programming Language :: Python :: 3.11",
26+
"Programming Language :: Python :: 3.10",
27+
"Programming Language :: Python :: 3 :: Only",
28+
"Topic :: Office/Business :: Financial",
29+
"Topic :: Office/Business :: Financial :: Investment",
30+
]
31+
32+
# core dependencies of pyportfolioopt
33+
# this set should be kept minimal!
34+
dependencies = [
35+
"cvxpy>=1.1.19",
36+
"numpy>=1.26.0",
37+
"pandas>=0.19",
38+
"scikit-base<0.14.0",
39+
"scikit-learn>=0.24.1",
40+
"scipy>=1.3.0",
41+
]
42+
43+
[project.optional-dependencies]
44+
# there are the following dependency sets:
45+
# - all_extras - all soft dependencies
46+
# - dev - the developer dependency set, for contributors
47+
#
48+
# soft dependencies are not required for the core functionality of pyportfolioopt
49+
50+
# all soft dependencies
51+
#
52+
# users can install via "pip install pyportfolioopt[all_extras]"
53+
#
54+
all_extras = [
55+
"matplotlib>=3.2.0",
56+
"ecos>=2.0.14,<2.1",
57+
"plotly>=5.0.0,<7",
58+
"cvxopt; python_version < '3.14'",
59+
]
60+
61+
# dev - the developer dependency set, for contributors and CI
62+
dev = [
63+
"pytest>=9.0.0",
64+
"pytest-cov>=7.0.0",
65+
"yfinance>=0.2.66",
66+
]
67+
68+
# notebook tests
69+
notebook_test = [
70+
"nbmake",
71+
"pytest-rerunfailures",
72+
]
73+
74+
[project.urls]
75+
Documentation = "https://pyportfolioopt.readthedocs.io/en/latest/"
76+
Download = "https://pypi.org/project/pyportfolioopt/#files"
77+
Homepage = "https://pyportfolioopt.readthedocs.io/en/latest/"
78+
Repository = "https://github.com/pyportfolio/pyportfolioopt"
79+
"Personal website" = "https://reasonabledeviations.com"
80+
81+
[build-system]
82+
build-backend = "setuptools.build_meta"
83+
requires = [
84+
"setuptools>=78.1.1",
85+
]
86+
87+
[tool.setuptools.packages.find]
88+
exclude = ["example", "example.*", "tests", "tests.*"]
89+
90+
[tool.ruff]
91+
line-length = 88
92+
# Keep Ruff aligned with project target version
93+
target-version = "py311"
94+
# Exclude individual files/patterns from Ruff linting/formatting
95+
exclude = [
96+
"tests/test_imports.py",
97+
"cookbook/*.ipynb",
98+
]
99+
100+
[tool.ruff.lint]
101+
# Keep the same selected rule sets as in ruff.toml
102+
select = ["F", "I"]
103+
104+
[tool.ruff.format]
105+
# Formatting configuration
106+
quote-style = "double"
107+
indent-style = "space"
108+
line-ending = "auto"
109+
skip-magic-trailing-comma = false
110+
111+
[tool.ruff.lint.isort]
112+
known-first-party = ["pypfopt"]
113+
combine-as-imports = true
114+
force-sort-within-sections = true

0 commit comments

Comments
 (0)