Rangekeeper 0.8.27__tar.gz → 0.8.29__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 (39) hide show
  1. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/PKG-INFO +1 -1
  2. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/Rangekeeper.egg-info/PKG-INFO +1 -1
  3. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/pyproject.toml +1 -1
  4. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/duration.py +10 -10
  5. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/tests/test_modules.py +7 -1
  6. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/README.md +0 -0
  7. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/Rangekeeper.egg-info/SOURCES.txt +0 -0
  8. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/Rangekeeper.egg-info/dependency_links.txt +0 -0
  9. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/Rangekeeper.egg-info/requires.txt +0 -0
  10. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/Rangekeeper.egg-info/top_level.txt +0 -0
  11. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/__init__.py +0 -0
  12. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/api.py +0 -0
  13. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/distribution.py +0 -0
  14. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/dynamics/__init__.py +0 -0
  15. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/dynamics/black_swan.py +0 -0
  16. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/dynamics/cyclicality.py +0 -0
  17. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/dynamics/market.py +0 -0
  18. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/dynamics/noise.py +0 -0
  19. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/dynamics/trend.py +0 -0
  20. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/dynamics/volatility.py +0 -0
  21. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/extrapolation.py +0 -0
  22. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/flux.py +0 -0
  23. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/format.py +0 -0
  24. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/formula/__init__.py +0 -0
  25. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/formula/financial.py +0 -0
  26. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/graph.py +0 -0
  27. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/measure.py +0 -0
  28. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/policy.py +0 -0
  29. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/projection.py +0 -0
  30. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/segmentation.py +0 -0
  31. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/rangekeeper/space.py +0 -0
  32. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/setup.cfg +0 -0
  33. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/tests/test_api.py +0 -0
  34. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/tests/test_dynamics.py +0 -0
  35. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/tests/test_formulas.py +0 -0
  36. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/tests/test_graph.py +0 -0
  37. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/tests/test_measures.py +0 -0
  38. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/tests/test_models.py +0 -0
  39. {rangekeeper-0.8.27 → rangekeeper-0.8.29}/tests/test_projections.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Rangekeeper
3
- Version: 0.8.27
3
+ Version: 0.8.29
4
4
  Summary: A Python library assisting financial modelling in real estate asset & development planning, decision-making, cashflow forecasting, and scenario analysis.
5
5
  Author-email: Daniel Fink <danfink@mit.edu>
6
6
  License-Expression: MPL-2.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Rangekeeper
3
- Version: 0.8.27
3
+ Version: 0.8.29
4
4
  Summary: A Python library assisting financial modelling in real estate asset & development planning, decision-making, cashflow forecasting, and scenario analysis.
5
5
  Author-email: Daniel Fink <danfink@mit.edu>
6
6
  License-Expression: MPL-2.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "Rangekeeper"
3
- version = "0.8.27"
3
+ version = "0.8.29"
4
4
  description = "A Python library assisting financial modelling in real estate asset & development planning, decision-making, cashflow forecasting, and scenario analysis."
5
5
  authors = [
6
6
  { name = "Daniel Fink", email = "danfink@mit.edu" }
@@ -18,7 +18,7 @@ class Type(enum.Enum):
18
18
  SEMIYEAR = "6M"
19
19
  QUARTER = "Q"
20
20
  MONTH = "M"
21
- BIWEEKLY = "2W"
21
+ BIWEEK = "2W"
22
22
  WEEK = "W"
23
23
  DAY = "D"
24
24
 
@@ -39,7 +39,7 @@ class Type(enum.Enum):
39
39
  if value == "M":
40
40
  return Type.MONTH
41
41
  if value in ("2W", "2W-SUN"):
42
- return Type.BIWEEKLY
42
+ return Type.BIWEEK
43
43
  if value in ("W-SUN", "W"):
44
44
  return Type.WEEK
45
45
  if value == "D":
@@ -63,7 +63,7 @@ class Type(enum.Enum):
63
63
  return "Q"
64
64
  if type == Type.MONTH:
65
65
  return "M"
66
- if type == Type.BIWEEKLY:
66
+ if type == Type.BIWEEK:
67
67
  return "2W"
68
68
  if type == Type.WEEK:
69
69
  return "W"
@@ -88,10 +88,10 @@ class Type(enum.Enum):
88
88
  return "QE"
89
89
  if type == Type.MONTH:
90
90
  return "ME"
91
- if type == Type.BIWEEKLY:
92
- return "2W"
91
+ if type == Type.BIWEEK:
92
+ return "2W-SUN"
93
93
  if type == Type.WEEK:
94
- return "W"
94
+ return "W-SUN"
95
95
  if type == Type.DAY:
96
96
  return "D"
97
97
  else:
@@ -129,7 +129,7 @@ def measure(
129
129
  result = (delta.years * 4) + math.floor(delta.months / 3)
130
130
  elif duration.value == Type.MONTH.value:
131
131
  result = (delta.years * 12) + delta.months
132
- elif duration.value == Type.BIWEEKLY.value:
132
+ elif duration.value == Type.BIWEEK.value:
133
133
  result = math.floor((calc_end_date - start_date).days / 14)
134
134
  elif duration.value == Type.WEEK.value:
135
135
  result = math.floor((calc_end_date - start_date).days / 7)
@@ -177,7 +177,7 @@ def offset(
177
177
  result = date + pd.offsets.MonthEnd(3 * amount)
178
178
  elif duration.value == Type.MONTH.value:
179
179
  result = date + pd.offsets.MonthEnd(amount)
180
- elif duration.value == Type.BIWEEKLY.value:
180
+ elif duration.value == Type.BIWEEK.value:
181
181
  result = date + pd.DateOffset(weeks=2 * amount)
182
182
  elif duration.value == Type.WEEK.value:
183
183
  result = date + pd.DateOffset(weeks=amount)
@@ -200,7 +200,7 @@ def offset(
200
200
  result = date + pd.DateOffset(months=3 * amount)
201
201
  elif duration.value == Type.MONTH.value:
202
202
  result = date + pd.DateOffset(months=amount)
203
- elif duration.value == Type.BIWEEKLY.value:
203
+ elif duration.value == Type.BIWEEK.value:
204
204
  result = date + pd.DateOffset(weeks=2 * amount)
205
205
  elif duration.value == Type.WEEK.value:
206
206
  result = date + pd.DateOffset(weeks=amount)
@@ -245,7 +245,7 @@ class Period:
245
245
  Type.SEMIYEAR: 2,
246
246
  Type.QUARTER: 4,
247
247
  Type.MONTH: 12,
248
- Type.BIWEEKLY: 26,
248
+ Type.BIWEEK: 26,
249
249
  Type.WEEK: 52,
250
250
  Type.DAY: 365,
251
251
  }.get(duration, None)
@@ -229,9 +229,15 @@ class TestFlow:
229
229
  to_periods = flow.to_periods(frequency=rk.duration.Type.YEAR)
230
230
 
231
231
  def test_conversion_to_period_index(self):
232
- print(TestFlow.to_periods)
232
+ # print(TestFlow.to_periods)
233
233
  # assert TestFlow.to_periods
234
234
 
235
+ resampled = TestFlow.invert_flow.resample(frequency=rk.duration.Type.BIWEEK)
236
+ resampled.display()
237
+
238
+ fortnightly = TestFlow.invert_flow.to_periods(frequency=rk.duration.Type.BIWEEK)
239
+ print(fortnightly)
240
+
235
241
  def test_distribution_as_input(self):
236
242
  periods = rk.duration.Sequence.from_bounds(
237
243
  include_start=datetime.date(2020, 1, 31),
File without changes
File without changes