rangekeeper 0.7.5__tar.gz → 0.7.7__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 (44) hide show
  1. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/PKG-INFO +23 -29
  2. rangekeeper-0.7.7/Rangekeeper.egg-info/PKG-INFO +45 -0
  3. rangekeeper-0.7.7/Rangekeeper.egg-info/SOURCES.txt +38 -0
  4. rangekeeper-0.7.7/Rangekeeper.egg-info/dependency_links.txt +1 -0
  5. rangekeeper-0.7.7/Rangekeeper.egg-info/requires.txt +18 -0
  6. rangekeeper-0.7.7/Rangekeeper.egg-info/top_level.txt +1 -0
  7. rangekeeper-0.7.7/pyproject.toml +35 -0
  8. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/__init__.py +4 -5
  9. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/duration.py +279 -185
  10. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/flux.py +142 -76
  11. rangekeeper-0.7.7/rangekeeper/graph.py +825 -0
  12. rangekeeper-0.7.7/rangekeeper/space.py +42 -0
  13. rangekeeper-0.7.7/setup.cfg +4 -0
  14. rangekeeper-0.7.7/tests/test_api.py +190 -0
  15. rangekeeper-0.7.7/tests/test_dynamics.py +683 -0
  16. rangekeeper-0.7.7/tests/test_formulas.py +303 -0
  17. rangekeeper-0.7.7/tests/test_graph.py +101 -0
  18. rangekeeper-0.7.7/tests/test_measures.py +108 -0
  19. rangekeeper-0.7.7/tests/test_models.py +180 -0
  20. rangekeeper-0.7.7/tests/test_modules.py +509 -0
  21. rangekeeper-0.7.7/tests/test_projections.py +84 -0
  22. rangekeeper-0.7.5/pyproject.toml +0 -34
  23. rangekeeper-0.7.5/rangekeeper/graph.py +0 -740
  24. rangekeeper-0.7.5/rangekeeper/space.py +0 -42
  25. rangekeeper-0.7.5/rangekeeper/span.py +0 -221
  26. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/README.md +0 -0
  27. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/api.py +0 -0
  28. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/conftest.py +0 -0
  29. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/distribution.py +0 -0
  30. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/dynamics/__init__.py +0 -0
  31. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/dynamics/black_swan.py +0 -0
  32. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/dynamics/cyclicality.py +0 -0
  33. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/dynamics/market.py +0 -0
  34. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/dynamics/noise.py +0 -0
  35. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/dynamics/trend.py +0 -0
  36. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/dynamics/volatility.py +0 -0
  37. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/extrapolation.py +0 -0
  38. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/format.py +0 -0
  39. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/formula/__init__.py +0 -0
  40. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/formula/financial.py +0 -0
  41. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/measure.py +0 -0
  42. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/policy.py +0 -0
  43. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/projection.py +0 -0
  44. {rangekeeper-0.7.5 → rangekeeper-0.7.7}/rangekeeper/segmentation.py +0 -0
@@ -1,34 +1,29 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: Rangekeeper
3
- Version: 0.7.5
3
+ Version: 0.7.7
4
4
  Summary: A Python library assisting financial modelling in real estate asset & development planning, decision-making, cashflow forecasting, and scenario analysis.
5
- License: MPL-2.0
6
- Author: Daniel Fink
7
- Author-email: danfink@mit.edu
8
- Requires-Python: >=3.10,<3.13
9
- Classifier: License :: OSI Approved
10
- Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.10
12
- Classifier: Programming Language :: Python :: 3.11
13
- Classifier: Programming Language :: Python :: 3.12
14
- Requires-Dist: aenum (>=3.1,<4.0)
15
- Requires-Dist: black (>=25.1.0,<26.0.0)
16
- Requires-Dist: matplotlib (>=3.10,<4.0)
17
- Requires-Dist: multiprocess (>=0.70,<0.71)
18
- Requires-Dist: networkx (>=3.3,<4.0)
19
- Requires-Dist: numba (>=0.61,<0.62)
20
- Requires-Dist: numpy-financial (>=1.0,<2.0)
21
- Requires-Dist: pandas (>=2.2,<3.0)
22
- Requires-Dist: pint (>=0.24,<0.25)
23
- Requires-Dist: plotly (>=6.0,<7.0)
24
- Requires-Dist: py-moneyed (>=3.0,<4.0)
25
- Requires-Dist: pyvis (>=0.3,<0.4)
26
- Requires-Dist: pyxirr (>=0.10,<0.11)
27
- Requires-Dist: scipy (>=1.14,<2.0)
28
- Requires-Dist: seaborn (>=0.13,<0.14)
29
- Requires-Dist: specklepy (>=2.21,<3.0)
30
- Requires-Dist: tabulate (>=0.9,<0.10)
5
+ Author-email: Daniel Fink <danfink@mit.edu>
6
+ License-Expression: MPL-2.0
7
+ Requires-Python: <3.13,>=3.10
31
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
32
27
 
33
28
  # Rangekeeper Source
34
29
  This directory holds the source code for the Rangekeeper Library
@@ -48,4 +43,3 @@ If you wish to contribute to its development, it is recommended to use [Poetry](
48
43
  4. If you wish to develop this repo alongside other projects locally, you may install the local Rangekeeper library via `<path_to_repo>$ poetry run pip install -e <path_to_rangekeeper_repo>`,
49
44
  replacing `<path_to_rangekeeper_repo>` with its location on your system.
50
45
  5. Some tests require API access to [Speckle](https://speckle.systems/). It is recommended to use the [Poetry Dotenv Plugin](https://github.com/mpeteuil/poetry-dotenv-plugin) via `poetry self add poetry-dotenv-plugin`, and add a `.env` file in the project's root directory with your `SPECKLE_TOKEN` environment variable.
51
-
@@ -0,0 +1,45 @@
1
+ Metadata-Version: 2.4
2
+ Name: Rangekeeper
3
+ Version: 0.7.7
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` or `poetry add rangekeeper`
34
+
35
+ ## Development
36
+ If you wish to contribute to its development, it is recommended to use [Poetry](https://python-poetry.org/) for environment and dependency management:
37
+
38
+ ### Environment Setup
39
+
40
+ 1. Install poetry, if you haven't yet: <https://python-poetry.org/docs/master/#installing-with-the-official-installer>
41
+ 2. Clone this repo.
42
+ 3. Use a terminal to install poetry packages from the repo's directory: `<path_to_repo>$ poetry install`
43
+ 4. If you wish to develop this repo alongside other projects locally, you may install the local Rangekeeper library via `<path_to_repo>$ poetry run pip install -e <path_to_rangekeeper_repo>`,
44
+ replacing `<path_to_rangekeeper_repo>` with its location on your system.
45
+ 5. Some tests require API access to [Speckle](https://speckle.systems/). It is recommended to use the [Poetry Dotenv Plugin](https://github.com/mpeteuil/poetry-dotenv-plugin) via `poetry self add poetry-dotenv-plugin`, and add a `.env` file in the project's root directory with your `SPECKLE_TOKEN` environment variable.
@@ -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.7"
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
-