moexapi 1.7.6__tar.gz → 1.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: moexapi
3
- Version: 1.7.6
3
+ Version: 1.7.8
4
4
  Summary: Python API for MOEX ISS
5
5
  Author-email: Aliaksei Rak <kventinel@gmail.com>
6
6
  License: MIT License
@@ -28,7 +28,7 @@ class Amortization:
28
28
  @dataclasses.dataclass
29
29
  class Coupon:
30
30
  date: datetime.date
31
- start_date: datetime.date
31
+ start_date: T.Optional[datetime.date]
32
32
  value: float
33
33
  initialfacevalue: float
34
34
 
@@ -99,30 +99,34 @@ class Bond:
99
99
  for line in amortization:
100
100
  date = datetime.date.fromisoformat(line["amortdate"])
101
101
  end_date = _max(end_date, date)
102
- self.amortization.append(
103
- Amortization(date=date, value=line["value"], initialfacevalue=line["initialfacevalue"])
102
+ item = Amortization(
103
+ date=date,
104
+ value=line["value"],
105
+ initialfacevalue=line["initialfacevalue"],
104
106
  )
107
+ if item not in self.amortization:
108
+ self.amortization.append(item)
105
109
  for line in coupons:
106
110
  date = datetime.date.fromisoformat(line["recorddate"] if line["recorddate"] else line["coupondate"])
107
111
  end_date = _max(end_date, date)
108
- self.coupons.append(
109
- Coupon(
110
- date=date,
111
- start_date=datetime.date.fromisoformat(line["startdate"]),
112
- value=line["value"],
113
- initialfacevalue=line["initialfacevalue"],
114
- )
112
+ item = Coupon(
113
+ date=date,
114
+ start_date=datetime.date.fromisoformat(line["startdate"])
115
+ if line.get("startdate") else None,
116
+ value=line["value"],
117
+ initialfacevalue=line["initialfacevalue"],
115
118
  )
119
+ if item not in self.coupons:
120
+ self.coupons.append(item)
116
121
  for line in offers:
117
122
  date = datetime.date.fromisoformat(line["offerdate"])
118
123
  end_date = _max(end_date, date)
119
- self.offers.append(Offer(date=date, value=line["value"]))
124
+ item = Offer(date=date, value=line["value"])
125
+ if item not in self.offers:
126
+ self.offers.append(item)
120
127
  if end_date == start_date:
121
128
  break
122
129
  start_date = end_date
123
- self.amortization = [item for item in self.amortization if item.date != start_date]
124
- self.coupons = [item for item in self.coupons if item.date != start_date]
125
- self.offers = [item for item in self.offers if item.date != start_date]
126
130
  original_values = [item.value for item in self.amortization]
127
131
  amortization_sum = sum(original_values)
128
132
  if abs(amortization_sum - self.initial_face_value) > 1e-9 and len(original_values) > 1:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: moexapi
3
- Version: 1.7.6
3
+ Version: 1.7.8
4
4
  Summary: Python API for MOEX ISS
5
5
  Author-email: Aliaksei Rak <kventinel@gmail.com>
6
6
  License: MIT License
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "moexapi"
7
- version = "1.7.6"
7
+ version = "1.7.8"
8
8
  description = "Python API for MOEX ISS"
9
9
  readme = "README.md"
10
10
  authors = [{ name = "Aliaksei Rak", email = "kventinel@gmail.com" }]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes