rangekeeper 0.4.2a0__tar.gz → 0.4.4a0__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 (30) hide show
  1. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/LICENSE +0 -0
  2. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/PKG-INFO +11 -9
  3. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/README.md +0 -0
  4. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/pyproject.toml +10 -8
  5. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/__init__.py +0 -0
  6. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/api.py +0 -0
  7. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/distribution.py +0 -0
  8. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/dynamics/__init__.py +0 -0
  9. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/dynamics/black_swan.py +0 -0
  10. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/dynamics/cyclicality.py +0 -0
  11. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/dynamics/market.py +0 -0
  12. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/dynamics/noise.py +0 -0
  13. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/dynamics/trend.py +0 -0
  14. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/dynamics/volatility.py +0 -0
  15. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/extrapolation.py +0 -0
  16. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/flux.py +1 -1
  17. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/graph.py +11 -2
  18. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/measure.py +2 -2
  19. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/models/__init__.py +0 -0
  20. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/models/deterministic.py +0 -0
  21. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/models/flexible.py +0 -0
  22. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/models/linear.py +0 -0
  23. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/models/linear_graph.py +0 -0
  24. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/models/probabilistic.py +0 -0
  25. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/periodicity.py +0 -0
  26. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/projection.py +1 -0
  27. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/segmentation.py +0 -0
  28. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/space.py +4 -3
  29. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/span.py +0 -0
  30. {rangekeeper-0.4.2a0 → rangekeeper-0.4.4a0}/rangekeeper/policy.py +0 -0
File without changes
@@ -1,37 +1,39 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: Rangekeeper
3
- Version: 0.4.2a0
3
+ Version: 0.4.4a0
4
4
  Summary: A Python library assisting financial modelling in scenario planning, decision-making, cashflow forecasting, and the like
5
5
  License: MPL-2.0
6
6
  Author: Daniel Fink
7
7
  Author-email: danfink@mit.edu
8
- Requires-Python: >=3.9,<3.11
8
+ Requires-Python: >=3.10,<3.13
9
9
  Classifier: License :: OSI Approved
10
10
  Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.9
12
11
  Classifier: Programming Language :: Python :: 3.10
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
13
14
  Requires-Dist: Pint (>=0.20.1,<0.21.0)
14
15
  Requires-Dist: PyYAML (>=6.0,<7.0)
15
16
  Requires-Dist: aenum (>=3.1.11,<4.0.0)
16
17
  Requires-Dist: docutils (==0.17.1)
18
+ Requires-Dist: ghp-import (>=2.1.0,<3.0.0)
17
19
  Requires-Dist: jupyter (>=1.0.0,<2.0.0)
18
- Requires-Dist: jupyter-book (>=0.15.1,<0.16.0)
20
+ Requires-Dist: jupyter-book (>=1.0.0,<2.0.0)
19
21
  Requires-Dist: matplotlib (>=3.7.0,<4.0.0)
22
+ Requires-Dist: mpld3 (>=0.5.10,<0.6.0)
20
23
  Requires-Dist: multiprocess (>=0.70.14,<0.71.0)
21
24
  Requires-Dist: networkx (>=3.0,<4.0)
22
- Requires-Dist: numba (>=0.57.0,<0.58.0)
25
+ Requires-Dist: numba (>=0.59.0,<0.60.0)
23
26
  Requires-Dist: pandas (>=2.0.1,<3.0.0)
24
27
  Requires-Dist: plotly (>=5.15.0,<6.0.0)
25
28
  Requires-Dist: py-linq (>=1.4.0,<2.0.0)
26
29
  Requires-Dist: py-moneyed (>=3.0,<4.0)
27
- Requires-Dist: pyppeteer (>=1.0.2,<2.0.0)
30
+ Requires-Dist: pyppeteer (>=2.0.0,<3.0.0)
28
31
  Requires-Dist: python-dateutil (>=2.8.2,<3.0.0)
29
32
  Requires-Dist: pyvis (>=0.3.2,<0.4.0)
30
- Requires-Dist: pyxirr (>=0.9.0,<0.10.0)
33
+ Requires-Dist: pyxirr (>=0.10.3,<0.11.0)
31
34
  Requires-Dist: scipy (>=1.11.2,<2.0.0)
32
- Requires-Dist: seaborn (>=0.12.2,<0.13.0)
35
+ Requires-Dist: seaborn (>=0.13.2,<0.14.0)
33
36
  Requires-Dist: specklepy (>=2.16.0,<3.0.0)
34
- Requires-Dist: sphinx-rtd-theme (>=1.2.0,<2.0.0)
35
37
  Requires-Dist: tabulate (>=0.9.0,<0.10.0)
36
38
  Requires-Dist: tqdm (>=4.65.0,<5.0.0)
37
39
  Description-Content-Type: text/markdown
File without changes
@@ -1,18 +1,18 @@
1
1
  [tool.poetry]
2
2
  name = "Rangekeeper"
3
- version = "0.4.2-alpha"
3
+ version = "0.4.4-alpha"
4
4
  description = "A Python library assisting financial modelling in scenario planning, decision-making, cashflow forecasting, and the like"
5
5
  authors = ["Daniel Fink <danfink@mit.edu>"]
6
6
  license = "MPL-2.0"
7
7
  readme = "README.md"
8
8
 
9
9
  [tool.poetry.dependencies]
10
- python = ">=3.9, <3.11"
10
+ python = ">=3.10, <3.13"
11
11
  aenum = "^3.1.11"
12
12
  matplotlib = "^3.7.0"
13
13
  pandas = "^2.0.1"
14
14
  Pint = "^0.20.1"
15
- pyxirr = "^0.9.0"
15
+ pyxirr = "^0.10.3"
16
16
  scipy = "^1.11.2"
17
17
  networkx = "^3.0"
18
18
  py-moneyed = "^3.0"
@@ -21,18 +21,20 @@ py-linq = "^1.4.0"
21
21
  tabulate = "^0.9.0"
22
22
  PyYAML = "^6.0"
23
23
  specklepy = "^2.16.0"
24
- numba = "^0.57.0"
24
+ numba = "^0.59.0"
25
25
  jupyter = "^1.0.0"
26
26
  #jupyterlab = "^4.0.5"
27
27
  docutils = "0.17.1" # See https://jupyterbook.org/en/stable/content/citations.html#citations-and-bibliographies
28
28
  tqdm = "^4.65.0"
29
29
  multiprocess = "^0.70.14"
30
- seaborn = "^0.12.2"
31
- jupyter-book = "^0.15.1"
32
- sphinx-rtd-theme = "^1.2.0"
30
+ seaborn = "^0.13.2"
31
+ jupyter-book = "^1.0.0"
32
+ #sphinx-rtd-theme = "^1.2.0"
33
33
  pyvis = "^0.3.2"
34
34
  plotly = "^5.15.0"
35
- pyppeteer = "^1.0.2"
35
+ pyppeteer = "^2.0.0"
36
+ ghp-import = "^2.1.0"
37
+ mpld3 = "^0.5.10"
36
38
 
37
39
  [tool.poetry.dev-dependencies]
38
40
  pytest = "^7.2.1"
@@ -682,7 +682,7 @@ class Stream:
682
682
  period_type=self.period_type)
683
683
 
684
684
  def total(self) -> np.float64:
685
- return self.sum().collapse().movements[0]
685
+ return self.sum().collapse().movements.iloc[0]
686
686
 
687
687
  def append(
688
688
  self,
@@ -123,6 +123,9 @@ class Entity(objects.Base):
123
123
  def __eq__(self, other):
124
124
  return self.entityId == other.entityId
125
125
 
126
+ def __hash__(self):
127
+ return hash(self.entityId)
128
+
126
129
  def __init__(
127
130
  self,
128
131
  entityId: str = None,
@@ -134,6 +137,12 @@ class Entity(objects.Base):
134
137
  type=type if type is not None else '[Unknown]'
135
138
  )
136
139
 
140
+ def try_get_attribute(self, key):
141
+ try:
142
+ return self[key]
143
+ except KeyError:
144
+ return None
145
+
137
146
  @classmethod
138
147
  def from_base(
139
148
  cls,
@@ -284,7 +293,7 @@ class Entity(objects.Base):
284
293
  keys = properties
285
294
  if properties is None:
286
295
  keys = list(filter(lambda key: key not in filtered, self.get_member_names()))
287
- attributes = {key: self[key] for key in keys}
296
+ attributes = {key: self.try_get_attribute(key) for key in keys}
288
297
  relationships = self.get_relationships(assembly=assembly)
289
298
  if arborescence is False:
290
299
  attributes['relationships'] = relationships
@@ -310,7 +319,7 @@ class Entity(objects.Base):
310
319
  if relationship_type is None:
311
320
  tree = assembly
312
321
  else:
313
- tree = assembly.filter_by_relationship_type(relationship_type)
322
+ tree = assembly.filter_by_type(relationship_type=relationship_type)
314
323
  if not nx.is_arborescence(tree.graph):
315
324
  raise Exception('The Assembly is not a tree. Cannot calculate ancestors.')
316
325
 
@@ -81,12 +81,12 @@ def register_currency(
81
81
  if '[currency]' not in registry._dimensions:
82
82
  registry.define('money = [currency]')
83
83
  registry.define(
84
- '{0} = nan money = {0} = {1}'.format(
84
+ '{0} = [currency] = {0} = {1}'.format(
85
85
  ''.join(currency.code.split()),
86
86
  ''.join(currency.name.split())))
87
87
  else:
88
88
  registry.define(
89
- '{0} = nan money = {0} = {1}'.format(
89
+ '{0} =[currency] = {0} = {1}'.format(
90
90
  ''.join(currency.code.split()),
91
91
  ''.join(currency.name.split())))
92
92
 
@@ -144,6 +144,7 @@ class Extrapolation(Projection):
144
144
 
145
145
  return result
146
146
 
147
+
147
148
  class Distribution(Projection):
148
149
  form: rk.distribution.Form
149
150
 
@@ -17,9 +17,10 @@ class Space(rk.graph.Entity):
17
17
  super().__init__(
18
18
  name=name,
19
19
  type=type,
20
- measurements=measurements,
21
- events=events,
22
- attributes=attributes)
20
+ # measurements=measurements,
21
+ # events=events,
22
+ # attributes=attributes
23
+ )
23
24
 
24
25
 
25
26
  class Apartment(Space):