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.
Files changed (46) hide show
  1. rangekeeper-0.7.8/PKG-INFO +53 -0
  2. rangekeeper-0.7.8/README.md +26 -0
  3. rangekeeper-0.7.8/Rangekeeper.egg-info/PKG-INFO +53 -0
  4. rangekeeper-0.7.8/Rangekeeper.egg-info/SOURCES.txt +38 -0
  5. rangekeeper-0.7.8/Rangekeeper.egg-info/dependency_links.txt +1 -0
  6. rangekeeper-0.7.8/Rangekeeper.egg-info/requires.txt +18 -0
  7. rangekeeper-0.7.8/Rangekeeper.egg-info/top_level.txt +1 -0
  8. rangekeeper-0.7.8/pyproject.toml +35 -0
  9. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/__init__.py +4 -5
  10. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/duration.py +279 -185
  11. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/flux.py +174 -56
  12. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/formula/financial.py +95 -52
  13. rangekeeper-0.7.8/rangekeeper/graph.py +825 -0
  14. rangekeeper-0.7.8/rangekeeper/space.py +42 -0
  15. rangekeeper-0.7.8/setup.cfg +4 -0
  16. rangekeeper-0.7.8/tests/test_api.py +196 -0
  17. rangekeeper-0.7.8/tests/test_dynamics.py +683 -0
  18. rangekeeper-0.7.8/tests/test_formulas.py +307 -0
  19. rangekeeper-0.7.8/tests/test_graph.py +101 -0
  20. rangekeeper-0.7.8/tests/test_measures.py +108 -0
  21. rangekeeper-0.7.8/tests/test_models.py +180 -0
  22. rangekeeper-0.7.8/tests/test_modules.py +509 -0
  23. rangekeeper-0.7.8/tests/test_projections.py +84 -0
  24. rangekeeper-0.7.6/PKG-INFO +0 -51
  25. rangekeeper-0.7.6/README.md +0 -18
  26. rangekeeper-0.7.6/pyproject.toml +0 -34
  27. rangekeeper-0.7.6/rangekeeper/graph.py +0 -740
  28. rangekeeper-0.7.6/rangekeeper/space.py +0 -42
  29. rangekeeper-0.7.6/rangekeeper/span.py +0 -221
  30. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/api.py +0 -0
  31. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/conftest.py +0 -0
  32. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/distribution.py +0 -0
  33. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/dynamics/__init__.py +0 -0
  34. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/dynamics/black_swan.py +0 -0
  35. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/dynamics/cyclicality.py +0 -0
  36. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/dynamics/market.py +0 -0
  37. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/dynamics/noise.py +0 -0
  38. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/dynamics/trend.py +0 -0
  39. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/dynamics/volatility.py +0 -0
  40. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/extrapolation.py +0 -0
  41. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/format.py +0 -0
  42. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/formula/__init__.py +0 -0
  43. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/measure.py +0 -0
  44. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/policy.py +0 -0
  45. {rangekeeper-0.7.6 → rangekeeper-0.7.8}/rangekeeper/projection.py +0 -0
  46. {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,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
- from . import space as space
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
- main_class=None, exclude=("__module__", "__name__", "__dict__", "__weakref__")
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
-