rangekeeper 0.7.6__tar.gz → 0.7.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rangekeeper-0.7.8/PKG-INFO +53 -0
- rangekeeper-0.7.8/README.md +26 -0
- rangekeeper-0.7.8/Rangekeeper.egg-info/PKG-INFO +53 -0
- rangekeeper-0.7.8/Rangekeeper.egg-info/SOURCES.txt +38 -0
- rangekeeper-0.7.8/Rangekeeper.egg-info/dependency_links.txt +1 -0
- rangekeeper-0.7.8/Rangekeeper.egg-info/requires.txt +18 -0
- rangekeeper-0.7.8/Rangekeeper.egg-info/top_level.txt +1 -0
- rangekeeper-0.7.8/pyproject.toml +35 -0
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/__init__.py +4 -5
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/duration.py +279 -185
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/flux.py +174 -56
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/formula/financial.py +95 -52
- rangekeeper-0.7.8/rangekeeper/graph.py +825 -0
- rangekeeper-0.7.8/rangekeeper/space.py +42 -0
- rangekeeper-0.7.8/setup.cfg +4 -0
- rangekeeper-0.7.8/tests/test_api.py +196 -0
- rangekeeper-0.7.8/tests/test_dynamics.py +683 -0
- rangekeeper-0.7.8/tests/test_formulas.py +307 -0
- rangekeeper-0.7.8/tests/test_graph.py +101 -0
- rangekeeper-0.7.8/tests/test_measures.py +108 -0
- rangekeeper-0.7.8/tests/test_models.py +180 -0
- rangekeeper-0.7.8/tests/test_modules.py +509 -0
- rangekeeper-0.7.8/tests/test_projections.py +84 -0
- rangekeeper-0.7.6/PKG-INFO +0 -51
- rangekeeper-0.7.6/README.md +0 -18
- rangekeeper-0.7.6/pyproject.toml +0 -34
- rangekeeper-0.7.6/rangekeeper/graph.py +0 -740
- rangekeeper-0.7.6/rangekeeper/space.py +0 -42
- rangekeeper-0.7.6/rangekeeper/span.py +0 -221
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/api.py +0 -0
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/conftest.py +0 -0
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/distribution.py +0 -0
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/dynamics/__init__.py +0 -0
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/dynamics/black_swan.py +0 -0
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/dynamics/cyclicality.py +0 -0
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/dynamics/market.py +0 -0
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/dynamics/noise.py +0 -0
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/dynamics/trend.py +0 -0
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/dynamics/volatility.py +0 -0
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/extrapolation.py +0 -0
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/format.py +0 -0
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/formula/__init__.py +0 -0
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/measure.py +0 -0
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/policy.py +0 -0
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/projection.py +0 -0
- {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/segmentation.py +0 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: Rangekeeper
|
|
3
|
+
Version: 0.7.8
|
|
4
|
+
Summary: A Python library assisting financial modelling in real estate asset & development planning, decision-making, cashflow forecasting, and scenario analysis.
|
|
5
|
+
Author-email: Daniel Fink <danfink@mit.edu>
|
|
6
|
+
License-Expression: MPL-2.0
|
|
7
|
+
Requires-Python: <3.13,>=3.10
|
|
8
|
+
Description-Content-Type: text/markdown
|
|
9
|
+
Requires-Dist: matplotlib>=3.10
|
|
10
|
+
Requires-Dist: pandas>=2.2
|
|
11
|
+
Requires-Dist: pint>=0.24
|
|
12
|
+
Requires-Dist: pyxirr>=0.10
|
|
13
|
+
Requires-Dist: scipy>=1.14
|
|
14
|
+
Requires-Dist: networkx>=3.3
|
|
15
|
+
Requires-Dist: py-moneyed>=3.0
|
|
16
|
+
Requires-Dist: tabulate>=0.9
|
|
17
|
+
Requires-Dist: specklepy>=2.21
|
|
18
|
+
Requires-Dist: numba>=0.61
|
|
19
|
+
Requires-Dist: multiprocess>=0.70
|
|
20
|
+
Requires-Dist: seaborn>=0.13
|
|
21
|
+
Requires-Dist: pyvis>=0.3
|
|
22
|
+
Requires-Dist: plotly>=6.0
|
|
23
|
+
Requires-Dist: aenum>=3.1
|
|
24
|
+
Requires-Dist: numpy-financial>=1.0
|
|
25
|
+
Requires-Dist: black>=25.1
|
|
26
|
+
Requires-Dist: pytest>=8.3
|
|
27
|
+
|
|
28
|
+
# Rangekeeper Source
|
|
29
|
+
This directory holds the source code for the Rangekeeper Library
|
|
30
|
+
|
|
31
|
+
## Installation
|
|
32
|
+
The library is offered through PyPI, and so its installation in other projects can be performed by:
|
|
33
|
+
`pip install rangekeeper`, `poetry add rangekeeper`, or `uv add rangekeeper`, depending on your virtual environment manager.
|
|
34
|
+
|
|
35
|
+
## Development
|
|
36
|
+
If you wish to contribute to its development, it is recommended to use [uv](https://docs.astral.sh/uv/) for
|
|
37
|
+
environment and dependency management:
|
|
38
|
+
|
|
39
|
+
### Environment Setup
|
|
40
|
+
|
|
41
|
+
1. Install uv, if you haven't yet: <https://docs.astral.sh/uv/>
|
|
42
|
+
2. Clone this repo.
|
|
43
|
+
3. Create a virtual environment: `uv venv .venv`
|
|
44
|
+
4. Activate the virtual environment: `source .venv/bin/activate`
|
|
45
|
+
5. Install dependencies: `uv pip install -r <(uv pip compile pyproject.toml)`
|
|
46
|
+
6. Some tests require API access to [Speckle](https://speckle.systems/). It is recommended to use [Python-Dotenv]
|
|
47
|
+
(https://github.com/theskumar/python-dotenv), and add a `.env` file in the project's root directory with your `SPECKLE_TOKEN` environment variable.
|
|
48
|
+
|
|
49
|
+
### Publishing
|
|
50
|
+
1. First, remove any previously built packages: `rm -rf dist/*`
|
|
51
|
+
2. Build the package: `uv build`
|
|
52
|
+
3. Then, publish it to PyPI with your $UV_PUBLISH_TOKEN token recorded in a .env file: `uv publish`: export $(grep -v
|
|
53
|
+
'^#' .env | xargs) && uv publish --token $UV_PUBLISH_TOKEN
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Rangekeeper Source
|
|
2
|
+
This directory holds the source code for the Rangekeeper Library
|
|
3
|
+
|
|
4
|
+
## Installation
|
|
5
|
+
The library is offered through PyPI, and so its installation in other projects can be performed by:
|
|
6
|
+
`pip install rangekeeper`, `poetry add rangekeeper`, or `uv add rangekeeper`, depending on your virtual environment manager.
|
|
7
|
+
|
|
8
|
+
## Development
|
|
9
|
+
If you wish to contribute to its development, it is recommended to use [uv](https://docs.astral.sh/uv/) for
|
|
10
|
+
environment and dependency management:
|
|
11
|
+
|
|
12
|
+
### Environment Setup
|
|
13
|
+
|
|
14
|
+
1. Install uv, if you haven't yet: <https://docs.astral.sh/uv/>
|
|
15
|
+
2. Clone this repo.
|
|
16
|
+
3. Create a virtual environment: `uv venv .venv`
|
|
17
|
+
4. Activate the virtual environment: `source .venv/bin/activate`
|
|
18
|
+
5. Install dependencies: `uv pip install -r <(uv pip compile pyproject.toml)`
|
|
19
|
+
6. Some tests require API access to [Speckle](https://speckle.systems/). It is recommended to use [Python-Dotenv]
|
|
20
|
+
(https://github.com/theskumar/python-dotenv), and add a `.env` file in the project's root directory with your `SPECKLE_TOKEN` environment variable.
|
|
21
|
+
|
|
22
|
+
### Publishing
|
|
23
|
+
1. First, remove any previously built packages: `rm -rf dist/*`
|
|
24
|
+
2. Build the package: `uv build`
|
|
25
|
+
3. Then, publish it to PyPI with your $UV_PUBLISH_TOKEN token recorded in a .env file: `uv publish`: export $(grep -v
|
|
26
|
+
'^#' .env | xargs) && uv publish --token $UV_PUBLISH_TOKEN
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: Rangekeeper
|
|
3
|
+
Version: 0.7.8
|
|
4
|
+
Summary: A Python library assisting financial modelling in real estate asset & development planning, decision-making, cashflow forecasting, and scenario analysis.
|
|
5
|
+
Author-email: Daniel Fink <danfink@mit.edu>
|
|
6
|
+
License-Expression: MPL-2.0
|
|
7
|
+
Requires-Python: <3.13,>=3.10
|
|
8
|
+
Description-Content-Type: text/markdown
|
|
9
|
+
Requires-Dist: matplotlib>=3.10
|
|
10
|
+
Requires-Dist: pandas>=2.2
|
|
11
|
+
Requires-Dist: pint>=0.24
|
|
12
|
+
Requires-Dist: pyxirr>=0.10
|
|
13
|
+
Requires-Dist: scipy>=1.14
|
|
14
|
+
Requires-Dist: networkx>=3.3
|
|
15
|
+
Requires-Dist: py-moneyed>=3.0
|
|
16
|
+
Requires-Dist: tabulate>=0.9
|
|
17
|
+
Requires-Dist: specklepy>=2.21
|
|
18
|
+
Requires-Dist: numba>=0.61
|
|
19
|
+
Requires-Dist: multiprocess>=0.70
|
|
20
|
+
Requires-Dist: seaborn>=0.13
|
|
21
|
+
Requires-Dist: pyvis>=0.3
|
|
22
|
+
Requires-Dist: plotly>=6.0
|
|
23
|
+
Requires-Dist: aenum>=3.1
|
|
24
|
+
Requires-Dist: numpy-financial>=1.0
|
|
25
|
+
Requires-Dist: black>=25.1
|
|
26
|
+
Requires-Dist: pytest>=8.3
|
|
27
|
+
|
|
28
|
+
# Rangekeeper Source
|
|
29
|
+
This directory holds the source code for the Rangekeeper Library
|
|
30
|
+
|
|
31
|
+
## Installation
|
|
32
|
+
The library is offered through PyPI, and so its installation in other projects can be performed by:
|
|
33
|
+
`pip install rangekeeper`, `poetry add rangekeeper`, or `uv add rangekeeper`, depending on your virtual environment manager.
|
|
34
|
+
|
|
35
|
+
## Development
|
|
36
|
+
If you wish to contribute to its development, it is recommended to use [uv](https://docs.astral.sh/uv/) for
|
|
37
|
+
environment and dependency management:
|
|
38
|
+
|
|
39
|
+
### Environment Setup
|
|
40
|
+
|
|
41
|
+
1. Install uv, if you haven't yet: <https://docs.astral.sh/uv/>
|
|
42
|
+
2. Clone this repo.
|
|
43
|
+
3. Create a virtual environment: `uv venv .venv`
|
|
44
|
+
4. Activate the virtual environment: `source .venv/bin/activate`
|
|
45
|
+
5. Install dependencies: `uv pip install -r <(uv pip compile pyproject.toml)`
|
|
46
|
+
6. Some tests require API access to [Speckle](https://speckle.systems/). It is recommended to use [Python-Dotenv]
|
|
47
|
+
(https://github.com/theskumar/python-dotenv), and add a `.env` file in the project's root directory with your `SPECKLE_TOKEN` environment variable.
|
|
48
|
+
|
|
49
|
+
### Publishing
|
|
50
|
+
1. First, remove any previously built packages: `rm -rf dist/*`
|
|
51
|
+
2. Build the package: `uv build`
|
|
52
|
+
3. Then, publish it to PyPI with your $UV_PUBLISH_TOKEN token recorded in a .env file: `uv publish`: export $(grep -v
|
|
53
|
+
'^#' .env | xargs) && uv publish --token $UV_PUBLISH_TOKEN
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
pyproject.toml
|
|
3
|
+
Rangekeeper.egg-info/PKG-INFO
|
|
4
|
+
Rangekeeper.egg-info/SOURCES.txt
|
|
5
|
+
Rangekeeper.egg-info/dependency_links.txt
|
|
6
|
+
Rangekeeper.egg-info/requires.txt
|
|
7
|
+
Rangekeeper.egg-info/top_level.txt
|
|
8
|
+
rangekeeper/__init__.py
|
|
9
|
+
rangekeeper/api.py
|
|
10
|
+
rangekeeper/conftest.py
|
|
11
|
+
rangekeeper/distribution.py
|
|
12
|
+
rangekeeper/duration.py
|
|
13
|
+
rangekeeper/extrapolation.py
|
|
14
|
+
rangekeeper/flux.py
|
|
15
|
+
rangekeeper/format.py
|
|
16
|
+
rangekeeper/graph.py
|
|
17
|
+
rangekeeper/measure.py
|
|
18
|
+
rangekeeper/policy.py
|
|
19
|
+
rangekeeper/projection.py
|
|
20
|
+
rangekeeper/segmentation.py
|
|
21
|
+
rangekeeper/space.py
|
|
22
|
+
rangekeeper/dynamics/__init__.py
|
|
23
|
+
rangekeeper/dynamics/black_swan.py
|
|
24
|
+
rangekeeper/dynamics/cyclicality.py
|
|
25
|
+
rangekeeper/dynamics/market.py
|
|
26
|
+
rangekeeper/dynamics/noise.py
|
|
27
|
+
rangekeeper/dynamics/trend.py
|
|
28
|
+
rangekeeper/dynamics/volatility.py
|
|
29
|
+
rangekeeper/formula/__init__.py
|
|
30
|
+
rangekeeper/formula/financial.py
|
|
31
|
+
tests/test_api.py
|
|
32
|
+
tests/test_dynamics.py
|
|
33
|
+
tests/test_formulas.py
|
|
34
|
+
tests/test_graph.py
|
|
35
|
+
tests/test_measures.py
|
|
36
|
+
tests/test_models.py
|
|
37
|
+
tests/test_modules.py
|
|
38
|
+
tests/test_projections.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
matplotlib>=3.10
|
|
2
|
+
pandas>=2.2
|
|
3
|
+
pint>=0.24
|
|
4
|
+
pyxirr>=0.10
|
|
5
|
+
scipy>=1.14
|
|
6
|
+
networkx>=3.3
|
|
7
|
+
py-moneyed>=3.0
|
|
8
|
+
tabulate>=0.9
|
|
9
|
+
specklepy>=2.21
|
|
10
|
+
numba>=0.61
|
|
11
|
+
multiprocess>=0.70
|
|
12
|
+
seaborn>=0.13
|
|
13
|
+
pyvis>=0.3
|
|
14
|
+
plotly>=6.0
|
|
15
|
+
aenum>=3.1
|
|
16
|
+
numpy-financial>=1.0
|
|
17
|
+
black>=25.1
|
|
18
|
+
pytest>=8.3
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
rangekeeper
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "Rangekeeper"
|
|
3
|
+
version = "0.7.8"
|
|
4
|
+
description = "A Python library assisting financial modelling in real estate asset & development planning, decision-making, cashflow forecasting, and scenario analysis."
|
|
5
|
+
authors = [
|
|
6
|
+
{ name = "Daniel Fink", email = "danfink@mit.edu" }
|
|
7
|
+
]
|
|
8
|
+
license = "MPL-2.0"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10, <3.13"
|
|
11
|
+
|
|
12
|
+
dependencies = [
|
|
13
|
+
"matplotlib>=3.10",
|
|
14
|
+
"pandas>=2.2",
|
|
15
|
+
"pint>=0.24",
|
|
16
|
+
"pyxirr>=0.10",
|
|
17
|
+
"scipy>=1.14",
|
|
18
|
+
"networkx>=3.3",
|
|
19
|
+
"py-moneyed>=3.0",
|
|
20
|
+
"tabulate>=0.9",
|
|
21
|
+
"specklepy>=2.21",
|
|
22
|
+
"numba>=0.61",
|
|
23
|
+
"multiprocess>=0.70",
|
|
24
|
+
"seaborn>=0.13",
|
|
25
|
+
"pyvis>=0.3",
|
|
26
|
+
"plotly>=6.0",
|
|
27
|
+
"aenum>=3.1",
|
|
28
|
+
"numpy-financial>=1.0",
|
|
29
|
+
"black>=25.1",
|
|
30
|
+
"pytest>=8.3",
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
[tool.ruff.format]
|
|
34
|
+
preview = true # Uses Black's experimental formatting rules
|
|
35
|
+
|
|
@@ -7,9 +7,9 @@ from . import graph as graph
|
|
|
7
7
|
from . import measure as measure
|
|
8
8
|
from . import policy as policy
|
|
9
9
|
from . import projection as projection
|
|
10
|
-
from . import span as span
|
|
11
10
|
from . import segmentation as segmentation
|
|
12
|
-
|
|
11
|
+
|
|
12
|
+
# from . import space as space
|
|
13
13
|
from . import dynamics as dynamics
|
|
14
14
|
from . import formula as formula
|
|
15
15
|
from . import format as format
|
|
@@ -22,8 +22,8 @@ from matplotlib import cm
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
def update_class(
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
main_class=None, exclude=("__module__", "__name__", "__dict__", "__weakref__")
|
|
26
|
+
):
|
|
27
27
|
"""Class decorator. Adds all methods and members from the wrapped class to main_class
|
|
28
28
|
|
|
29
29
|
Args:
|
|
@@ -51,4 +51,3 @@ def rgba_from_cmap(cmap_name, start_val, stop_val, val):
|
|
|
51
51
|
norm = mpl.colors.Normalize(vmin=start_val, vmax=stop_val)
|
|
52
52
|
scalar_map = cm.ScalarMappable(norm=norm, cmap=cmap)
|
|
53
53
|
return scalar_map.to_rgba(val)
|
|
54
|
-
|