wbfdm 1.50.15__py2.py3-none-any.whl → 1.51.0__py2.py3-none-any.whl

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.

Potentially problematic release.


This version of wbfdm might be problematic. Click here for more details.

@@ -230,7 +230,7 @@ class StatementWithEstimates:
230
230
  df[Financial.ENTERPRISE_VALUE.value] = (
231
231
  df.get(MarketData.MARKET_CAPITALIZATION.value, empty_series)
232
232
  + df.get(Financial.NET_DEBT.value, empty_series)
233
- - df.get(Financial.CASH_EQUIVALENTS, empty_series)
233
+ - df.get(Financial.CASH_EQUIVALENTS.value, empty_series)
234
234
  )
235
235
 
236
236
  # Calculate a couple of variables
@@ -251,7 +251,7 @@ class StatementWithEstimates:
251
251
  df["price_sales_ratio"] = pd.concat(
252
252
  [
253
253
  yearly_df.get(MarketData.MARKET_CAPITALIZATION.value, yearly_empty_series)
254
- / yearly_df.get(Financial.GROSS_PROFIT.value, yearly_empty_series),
254
+ / yearly_df.get(Financial.REVENUE.value, yearly_empty_series),
255
255
  quarterly_df.get(MarketData.MARKET_CAPITALIZATION.value, quarterly_empty_series)
256
256
  / quarterly_df.get(Financial.REVENUE.value, quarterly_empty_series)
257
257
  .rolling(4, min_periods=1)
@@ -305,7 +305,7 @@ class StatementWithEstimates:
305
305
  df.get(Financial.EBIT.value, empty_series) / df.get(Financial.REVENUE.value, empty_series) * 100
306
306
  )
307
307
  df["net_income_margin"] = (
308
- df.get(Financial.NET_INCOME_REPORTED, empty_series)
308
+ df.get(Financial.NET_INCOME_REPORTED.value, empty_series)
309
309
  / df.get(Financial.REVENUE.value, empty_series)
310
310
  * 100
311
311
  )
@@ -344,7 +344,7 @@ class StatementWithEstimates:
344
344
  )
345
345
 
346
346
  df["price_to_tangible_bv_ratio"] = df.get(MarketData.CLOSE.value, empty_series) / df.get(
347
- Financial.TANGIBLE_BOOK_VALUE_PER_SHARE, empty_series
347
+ Financial.TANGIBLE_BOOK_VALUE_PER_SHARE.value, empty_series
348
348
  )
349
349
  df["cash_shares_ratio"] = df.get(Financial.CASH_AND_SHORT_TERM_INVESTMENT.value, empty_series) / df.get(
350
350
  Financial.DILUTED_WEIGHTED_AVG_SHARES.value, empty_series
@@ -359,7 +359,7 @@ class StatementWithEstimates:
359
359
  Financial.STOCK_COMPENSATION.value, empty_series
360
360
  ) / df.get(Financial.EMPLOYEES.value, empty_series)
361
361
 
362
- df["net_cash"] = df.get(Financial.CASH_EQUIVALENTS, empty_series) - df.get(
362
+ df["net_cash"] = df.get(Financial.CASH_EQUIVALENTS.value, empty_series) - df.get(
363
363
  Financial.CURRENT_LIABILITIES.value, empty_series
364
364
  )
365
365
  df[Financial.EBIT.value] = df.get(Financial.EBIT.value, empty_series)
@@ -0,0 +1,257 @@
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+ # This file is distributed under the same license as the PACKAGE package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+ #
6
+ #, fuzzy
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: PACKAGE VERSION\n"
10
+ "Report-Msgid-Bugs-To: \n"
11
+ "POT-Creation-Date: 2025-05-20 09:31+0200\n"
12
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
+ "Language-Team: LANGUAGE <LL@li.org>\n"
15
+ "Language: \n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=UTF-8\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20
+ #: wbfdm/contrib/metric/filters.py:27
21
+ msgid "Basket Content Type"
22
+ msgstr ""
23
+
24
+ #: wbfdm/contrib/metric/viewsets/configs/utils.py:127
25
+ msgid "Fundamentals"
26
+ msgstr ""
27
+
28
+ #: wbfdm/models/exchanges/exchanges.py:184
29
+ #: wbfdm/viewsets/configs/display/instruments.py:77
30
+ msgid "Exchange"
31
+ msgstr ""
32
+
33
+ #: wbfdm/models/exchanges/exchanges.py:185
34
+ msgid "Exchanges"
35
+ msgstr ""
36
+
37
+ #: wbfdm/models/instruments/instrument_requests.py:116
38
+ #: wbfdm/models/instruments/instrument_requests.py:182
39
+ msgid "An instrument already exists with the proposed identifier"
40
+ msgstr ""
41
+
42
+ #: wbfdm/viewsets/configs/buttons/classifications.py:10
43
+ msgid "Tree Chart"
44
+ msgstr ""
45
+
46
+ #: wbfdm/viewsets/configs/buttons/classifications.py:11
47
+ msgid "Icicle Chart"
48
+ msgstr ""
49
+
50
+ #: wbfdm/viewsets/configs/display/classifications.py:40
51
+ msgid "Child Classifications"
52
+ msgstr ""
53
+
54
+ #: wbfdm/viewsets/configs/display/classifications.py:43
55
+ msgid "Instruments"
56
+ msgstr ""
57
+
58
+ #: wbfdm/viewsets/configs/display/classifications.py:69
59
+ msgid "Classification"
60
+ msgstr ""
61
+
62
+ #: wbfdm/viewsets/configs/display/classifications.py:112
63
+ msgid "Related Instruments"
64
+ msgstr ""
65
+
66
+ #: wbfdm/viewsets/configs/display/esg.py:14
67
+ msgid "Initiated"
68
+ msgstr ""
69
+
70
+ #: wbfdm/viewsets/configs/display/esg.py:15
71
+ msgid "Review"
72
+ msgstr ""
73
+
74
+ #: wbfdm/viewsets/configs/display/esg.py:16
75
+ msgid "Headline"
76
+ msgstr ""
77
+
78
+ #: wbfdm/viewsets/configs/display/esg.py:17
79
+ msgid "Narrative"
80
+ msgstr ""
81
+
82
+ #: wbfdm/viewsets/configs/display/esg.py:18
83
+ msgid "Source"
84
+ msgstr ""
85
+
86
+ #: wbfdm/viewsets/configs/display/esg.py:19
87
+ msgid "Status"
88
+ msgstr ""
89
+
90
+ #: wbfdm/viewsets/configs/display/esg.py:20
91
+ msgid "Type"
92
+ msgstr ""
93
+
94
+ #: wbfdm/viewsets/configs/display/esg.py:21
95
+ msgid "Assessment"
96
+ msgstr ""
97
+
98
+ #: wbfdm/viewsets/configs/display/esg.py:22
99
+ msgid "Response"
100
+ msgstr ""
101
+
102
+ #: wbfdm/viewsets/configs/display/esg.py:70
103
+ msgid "Section"
104
+ msgstr ""
105
+
106
+ #: wbfdm/viewsets/configs/display/esg.py:71
107
+ msgid "Adverse sustainability indicator"
108
+ msgstr ""
109
+
110
+ #: wbfdm/viewsets/configs/display/esg.py:72
111
+ msgid "Metric"
112
+ msgstr ""
113
+
114
+ #: wbfdm/viewsets/configs/display/esg.py:73
115
+ msgid "Factor"
116
+ msgstr ""
117
+
118
+ #: wbfdm/viewsets/configs/display/esg.py:74
119
+ msgid "Value"
120
+ msgstr ""
121
+
122
+ #: wbfdm/viewsets/configs/display/instrument_lists.py:34
123
+ msgid "Exclusion List"
124
+ msgstr ""
125
+
126
+ #: wbfdm/viewsets/configs/display/instrument_lists.py:105
127
+ msgid "Validated"
128
+ msgstr ""
129
+
130
+ #: wbfdm/viewsets/configs/display/instrument_lists.py:109
131
+ msgid "Not Validated"
132
+ msgstr ""
133
+
134
+ #: wbfdm/viewsets/configs/display/instrument_requests.py:95
135
+ msgid "Instrument Data"
136
+ msgstr ""
137
+
138
+ #: wbfdm/viewsets/configs/display/instruments.py:70
139
+ #: wbfdm/viewsets/configs/display/officers.py:11
140
+ msgid "Name"
141
+ msgstr ""
142
+
143
+ #: wbfdm/viewsets/configs/display/instruments.py:73
144
+ msgid "Information"
145
+ msgstr ""
146
+
147
+ #: wbfdm/viewsets/configs/display/instruments.py:76
148
+ msgid "Instrument Type"
149
+ msgstr ""
150
+
151
+ #: wbfdm/viewsets/configs/display/instruments.py:78
152
+ msgid "ISIN"
153
+ msgstr ""
154
+
155
+ #: wbfdm/viewsets/configs/display/instruments.py:79
156
+ msgid "Ticker"
157
+ msgstr ""
158
+
159
+ #: wbfdm/viewsets/configs/display/instruments.py:80
160
+ msgid "RIC"
161
+ msgstr ""
162
+
163
+ #: wbfdm/viewsets/configs/display/instruments.py:81
164
+ msgid "Refinitiv Mnemonic"
165
+ msgstr ""
166
+
167
+ #: wbfdm/viewsets/configs/display/instruments.py:82
168
+ msgid "Description"
169
+ msgstr ""
170
+
171
+ #: wbfdm/viewsets/configs/display/instruments.py:83
172
+ msgid "Currency"
173
+ msgstr ""
174
+
175
+ #: wbfdm/viewsets/configs/display/instruments.py:84
176
+ msgid "Country"
177
+ msgstr ""
178
+
179
+ #: wbfdm/viewsets/configs/display/instruments.py:91
180
+ msgid "Extra"
181
+ msgstr ""
182
+
183
+ #: wbfdm/viewsets/configs/display/instruments.py:94
184
+ msgid "Primary"
185
+ msgstr ""
186
+
187
+ #: wbfdm/viewsets/configs/display/instruments.py:95
188
+ msgid "Investable Universe"
189
+ msgstr ""
190
+
191
+ #: wbfdm/viewsets/configs/display/instruments.py:96
192
+ msgid "Security"
193
+ msgstr ""
194
+
195
+ #: wbfdm/viewsets/configs/display/instruments.py:97
196
+ msgid "Internally Managed"
197
+ msgstr ""
198
+
199
+ #: wbfdm/viewsets/configs/display/instruments.py:100
200
+ msgid "Performance"
201
+ msgstr ""
202
+
203
+ #: wbfdm/viewsets/configs/display/instruments.py:330
204
+ msgid "Hierarchy"
205
+ msgstr ""
206
+
207
+ #: wbfdm/viewsets/configs/display/instruments.py:343
208
+ msgid "News"
209
+ msgstr ""
210
+
211
+ #: wbfdm/viewsets/configs/display/officers.py:10
212
+ msgid "Position"
213
+ msgstr ""
214
+
215
+ #: wbfdm/viewsets/configs/display/officers.py:12
216
+ msgid "Age"
217
+ msgstr ""
218
+
219
+ #: wbfdm/viewsets/configs/display/officers.py:13
220
+ msgid "Sex"
221
+ msgstr ""
222
+
223
+ #: wbfdm/viewsets/configs/display/officers.py:14
224
+ msgid "Start"
225
+ msgstr ""
226
+
227
+ #: wbfdm/viewsets/configs/display/prices.py:12
228
+ msgid "Date"
229
+ msgstr ""
230
+
231
+ #: wbfdm/viewsets/configs/display/prices.py:13
232
+ msgid "Open"
233
+ msgstr ""
234
+
235
+ #: wbfdm/viewsets/configs/display/prices.py:14
236
+ msgid "High"
237
+ msgstr ""
238
+
239
+ #: wbfdm/viewsets/configs/display/prices.py:15
240
+ msgid "Low"
241
+ msgstr ""
242
+
243
+ #: wbfdm/viewsets/configs/display/prices.py:16
244
+ msgid "Close"
245
+ msgstr ""
246
+
247
+ #: wbfdm/viewsets/configs/display/prices.py:17
248
+ msgid "Volume"
249
+ msgstr ""
250
+
251
+ #: wbfdm/viewsets/configs/display/prices.py:18
252
+ msgid "Oustanding Shares"
253
+ msgstr ""
254
+
255
+ #: wbfdm/viewsets/configs/display/prices.py:19
256
+ msgid "Market Cap."
257
+ msgstr ""
@@ -0,0 +1,257 @@
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+ # This file is distributed under the same license as the PACKAGE package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+ #
6
+ #, fuzzy
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: PACKAGE VERSION\n"
10
+ "Report-Msgid-Bugs-To: \n"
11
+ "POT-Creation-Date: 2025-05-20 09:31+0200\n"
12
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
+ "Language-Team: LANGUAGE <LL@li.org>\n"
15
+ "Language: \n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=UTF-8\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Plural-Forms: nplurals=2; plural=(n > 1);\n"
20
+ #: wbfdm/contrib/metric/filters.py:27
21
+ msgid "Basket Content Type"
22
+ msgstr ""
23
+
24
+ #: wbfdm/contrib/metric/viewsets/configs/utils.py:127
25
+ msgid "Fundamentals"
26
+ msgstr ""
27
+
28
+ #: wbfdm/models/exchanges/exchanges.py:184
29
+ #: wbfdm/viewsets/configs/display/instruments.py:77
30
+ msgid "Exchange"
31
+ msgstr ""
32
+
33
+ #: wbfdm/models/exchanges/exchanges.py:185
34
+ msgid "Exchanges"
35
+ msgstr ""
36
+
37
+ #: wbfdm/models/instruments/instrument_requests.py:116
38
+ #: wbfdm/models/instruments/instrument_requests.py:182
39
+ msgid "An instrument already exists with the proposed identifier"
40
+ msgstr ""
41
+
42
+ #: wbfdm/viewsets/configs/buttons/classifications.py:10
43
+ msgid "Tree Chart"
44
+ msgstr ""
45
+
46
+ #: wbfdm/viewsets/configs/buttons/classifications.py:11
47
+ msgid "Icicle Chart"
48
+ msgstr ""
49
+
50
+ #: wbfdm/viewsets/configs/display/classifications.py:40
51
+ msgid "Child Classifications"
52
+ msgstr ""
53
+
54
+ #: wbfdm/viewsets/configs/display/classifications.py:43
55
+ msgid "Instruments"
56
+ msgstr ""
57
+
58
+ #: wbfdm/viewsets/configs/display/classifications.py:69
59
+ msgid "Classification"
60
+ msgstr ""
61
+
62
+ #: wbfdm/viewsets/configs/display/classifications.py:112
63
+ msgid "Related Instruments"
64
+ msgstr ""
65
+
66
+ #: wbfdm/viewsets/configs/display/esg.py:14
67
+ msgid "Initiated"
68
+ msgstr ""
69
+
70
+ #: wbfdm/viewsets/configs/display/esg.py:15
71
+ msgid "Review"
72
+ msgstr ""
73
+
74
+ #: wbfdm/viewsets/configs/display/esg.py:16
75
+ msgid "Headline"
76
+ msgstr ""
77
+
78
+ #: wbfdm/viewsets/configs/display/esg.py:17
79
+ msgid "Narrative"
80
+ msgstr ""
81
+
82
+ #: wbfdm/viewsets/configs/display/esg.py:18
83
+ msgid "Source"
84
+ msgstr ""
85
+
86
+ #: wbfdm/viewsets/configs/display/esg.py:19
87
+ msgid "Status"
88
+ msgstr ""
89
+
90
+ #: wbfdm/viewsets/configs/display/esg.py:20
91
+ msgid "Type"
92
+ msgstr ""
93
+
94
+ #: wbfdm/viewsets/configs/display/esg.py:21
95
+ msgid "Assessment"
96
+ msgstr ""
97
+
98
+ #: wbfdm/viewsets/configs/display/esg.py:22
99
+ msgid "Response"
100
+ msgstr ""
101
+
102
+ #: wbfdm/viewsets/configs/display/esg.py:70
103
+ msgid "Section"
104
+ msgstr ""
105
+
106
+ #: wbfdm/viewsets/configs/display/esg.py:71
107
+ msgid "Adverse sustainability indicator"
108
+ msgstr ""
109
+
110
+ #: wbfdm/viewsets/configs/display/esg.py:72
111
+ msgid "Metric"
112
+ msgstr ""
113
+
114
+ #: wbfdm/viewsets/configs/display/esg.py:73
115
+ msgid "Factor"
116
+ msgstr ""
117
+
118
+ #: wbfdm/viewsets/configs/display/esg.py:74
119
+ msgid "Value"
120
+ msgstr ""
121
+
122
+ #: wbfdm/viewsets/configs/display/instrument_lists.py:34
123
+ msgid "Exclusion List"
124
+ msgstr ""
125
+
126
+ #: wbfdm/viewsets/configs/display/instrument_lists.py:105
127
+ msgid "Validated"
128
+ msgstr ""
129
+
130
+ #: wbfdm/viewsets/configs/display/instrument_lists.py:109
131
+ msgid "Not Validated"
132
+ msgstr ""
133
+
134
+ #: wbfdm/viewsets/configs/display/instrument_requests.py:95
135
+ msgid "Instrument Data"
136
+ msgstr ""
137
+
138
+ #: wbfdm/viewsets/configs/display/instruments.py:70
139
+ #: wbfdm/viewsets/configs/display/officers.py:11
140
+ msgid "Name"
141
+ msgstr ""
142
+
143
+ #: wbfdm/viewsets/configs/display/instruments.py:73
144
+ msgid "Information"
145
+ msgstr ""
146
+
147
+ #: wbfdm/viewsets/configs/display/instruments.py:76
148
+ msgid "Instrument Type"
149
+ msgstr ""
150
+
151
+ #: wbfdm/viewsets/configs/display/instruments.py:78
152
+ msgid "ISIN"
153
+ msgstr ""
154
+
155
+ #: wbfdm/viewsets/configs/display/instruments.py:79
156
+ msgid "Ticker"
157
+ msgstr ""
158
+
159
+ #: wbfdm/viewsets/configs/display/instruments.py:80
160
+ msgid "RIC"
161
+ msgstr ""
162
+
163
+ #: wbfdm/viewsets/configs/display/instruments.py:81
164
+ msgid "Refinitiv Mnemonic"
165
+ msgstr ""
166
+
167
+ #: wbfdm/viewsets/configs/display/instruments.py:82
168
+ msgid "Description"
169
+ msgstr ""
170
+
171
+ #: wbfdm/viewsets/configs/display/instruments.py:83
172
+ msgid "Currency"
173
+ msgstr ""
174
+
175
+ #: wbfdm/viewsets/configs/display/instruments.py:84
176
+ msgid "Country"
177
+ msgstr ""
178
+
179
+ #: wbfdm/viewsets/configs/display/instruments.py:91
180
+ msgid "Extra"
181
+ msgstr ""
182
+
183
+ #: wbfdm/viewsets/configs/display/instruments.py:94
184
+ msgid "Primary"
185
+ msgstr ""
186
+
187
+ #: wbfdm/viewsets/configs/display/instruments.py:95
188
+ msgid "Investable Universe"
189
+ msgstr ""
190
+
191
+ #: wbfdm/viewsets/configs/display/instruments.py:96
192
+ msgid "Security"
193
+ msgstr ""
194
+
195
+ #: wbfdm/viewsets/configs/display/instruments.py:97
196
+ msgid "Internally Managed"
197
+ msgstr ""
198
+
199
+ #: wbfdm/viewsets/configs/display/instruments.py:100
200
+ msgid "Performance"
201
+ msgstr ""
202
+
203
+ #: wbfdm/viewsets/configs/display/instruments.py:330
204
+ msgid "Hierarchy"
205
+ msgstr ""
206
+
207
+ #: wbfdm/viewsets/configs/display/instruments.py:343
208
+ msgid "News"
209
+ msgstr ""
210
+
211
+ #: wbfdm/viewsets/configs/display/officers.py:10
212
+ msgid "Position"
213
+ msgstr ""
214
+
215
+ #: wbfdm/viewsets/configs/display/officers.py:12
216
+ msgid "Age"
217
+ msgstr ""
218
+
219
+ #: wbfdm/viewsets/configs/display/officers.py:13
220
+ msgid "Sex"
221
+ msgstr ""
222
+
223
+ #: wbfdm/viewsets/configs/display/officers.py:14
224
+ msgid "Start"
225
+ msgstr ""
226
+
227
+ #: wbfdm/viewsets/configs/display/prices.py:12
228
+ msgid "Date"
229
+ msgstr ""
230
+
231
+ #: wbfdm/viewsets/configs/display/prices.py:13
232
+ msgid "Open"
233
+ msgstr ""
234
+
235
+ #: wbfdm/viewsets/configs/display/prices.py:14
236
+ msgid "High"
237
+ msgstr ""
238
+
239
+ #: wbfdm/viewsets/configs/display/prices.py:15
240
+ msgid "Low"
241
+ msgstr ""
242
+
243
+ #: wbfdm/viewsets/configs/display/prices.py:16
244
+ msgid "Close"
245
+ msgstr ""
246
+
247
+ #: wbfdm/viewsets/configs/display/prices.py:17
248
+ msgid "Volume"
249
+ msgstr ""
250
+
251
+ #: wbfdm/viewsets/configs/display/prices.py:18
252
+ msgid "Oustanding Shares"
253
+ msgstr ""
254
+
255
+ #: wbfdm/viewsets/configs/display/prices.py:19
256
+ msgid "Market Cap."
257
+ msgstr ""
@@ -74,7 +74,7 @@ class InstrumentDisplayConfig(DisplayViewConfig):
74
74
  open_by_default=False,
75
75
  children=[
76
76
  dp.Field(key="instrument_type", label=_("Instrument Type"), show="open"),
77
- dp.Field(key="exchange", label=_("Exchange"), show="open"),
77
+ dp.Field(key="exchange", label=_("Exchange")),
78
78
  dp.Field(key="isin", label=_("ISIN")),
79
79
  dp.Field(key="ticker", label=_("Ticker")),
80
80
  dp.Field(key="refinitiv_identifier_code", label=_("RIC")),
@@ -63,7 +63,7 @@ class StatementWithEstimatesPandasViewSet(InstrumentMixin, ExportPandasAPIViewSe
63
63
  pf.CharField(key="financial", label="Financial"),
64
64
  pf.CharField(key="_group_key", label="Group Key"),
65
65
  pf.JsonField(key="_overwrites", label="Overwrites"),
66
- pf.SparklineField(key="progress", label="Yearly Trend"),
66
+ pf.SparklineField(key="progress", label="Yearly Trend", dimension="double"),
67
67
  ]
68
68
  )
69
69
 
@@ -76,7 +76,11 @@ class StatementWithEstimatesPandasViewSet(InstrumentMixin, ExportPandasAPIViewSe
76
76
 
77
77
  year_columns = list(filter(lambda col: "Y" in col, df.columns))
78
78
  if year_columns:
79
- df["progress"] = df[year_columns].replace([np.inf, -np.inf, np.nan], None).apply(list, axis=1)
79
+ df["progress"] = (
80
+ df[year_columns]
81
+ .replace([np.inf, -np.inf, np.nan], None)
82
+ .apply(lambda x: list(x.to_dict().items()), axis=1)
83
+ )
80
84
 
81
85
  self.extra_cache_kwargs["_estimate_mapping"] = financial_analysis_result.estimated_mapping
82
86
  self.extra_cache_kwargs["_columns"] = df.columns
@@ -53,7 +53,7 @@ class StatementPandasViewSet(InstrumentMixin, ExportPandasAPIViewSet):
53
53
  pf.PKField(key="external_ordering", label="ID"),
54
54
  pf.CharField(key="external_code", label="Code"),
55
55
  pf.CharField(key="external_description", label="Description"),
56
- pf.SparklineField(key="progress", label="Yearly Trend"),
56
+ pf.SparklineField(key="progress", label="Yearly Trend", dimension="double"),
57
57
  *[pf.FloatField(key=field, label=field, display_mode=DisplayMode.SHORTENED) for field in self.columns],
58
58
  ]
59
59
  )
@@ -83,7 +83,7 @@ class StatementPandasViewSet(InstrumentMixin, ExportPandasAPIViewSet):
83
83
  def manipulate_dataframe(self, df):
84
84
  if not df.empty:
85
85
  if year_cols := [col for col in df.columns if isinstance(col, str) and "Y" in col]:
86
- df["progress"] = df[year_cols].fillna(0).apply(list, axis=1)
86
+ df["progress"] = df[year_cols].fillna(0).apply(lambda x: list(x.to_dict().items()), axis=1)
87
87
  return df
88
88
 
89
89
  @cached_property
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wbfdm
3
- Version: 1.50.15
3
+ Version: 1.51.0
4
4
  Summary: The workbench module ensures rapid access to diverse financial data (market, fundamental, forecasts, ESG), with features for storing instruments, classifying them, and conducting financial analysis.
5
5
  Author-email: Christopher Wittlinger <c.wittlinger@stainly.com>
6
6
  Requires-Dist: roman==4.*
@@ -28,7 +28,7 @@ wbfdm/analysis/financial_analysis/__init__.py,sha256=l0hGfgYIO4VAkSCVrMyzjvJ81fC
28
28
  wbfdm/analysis/financial_analysis/financial_metric_analysis.py,sha256=bZnt2zANYBpBiY_ZlDokzTx0iJESvXiNcbnX7lVRs9g,3491
29
29
  wbfdm/analysis/financial_analysis/financial_ratio_analysis.py,sha256=wx2ETs7XvNqhX-cUeIbhVKDiPDsnO39cQlT5qntv0GY,4623
30
30
  wbfdm/analysis/financial_analysis/financial_statistics_analysis.py,sha256=iABYkmWxVlF1H1zZiohbybxSlQXvpVlMkjU7336Zqww,13186
31
- wbfdm/analysis/financial_analysis/statement_with_estimates.py,sha256=3RX8v5OsU8TbIP0imJ6F3GgbgdPBPuB71RTwM8IgX0w,24026
31
+ wbfdm/analysis/financial_analysis/statement_with_estimates.py,sha256=Kv8phclh8XRVSwEktL3dIydrhqR_pQzz31v7iCK3hpI,24045
32
32
  wbfdm/analysis/financial_analysis/utils.py,sha256=Ve6WilLVTTTclL0KxNpdCcbdZJMbtpB9_5lZCHNXrIQ,13577
33
33
  wbfdm/analysis/technical_analysis/__init__.py,sha256=nQdpDl2okzWID6UT7fyfl36RSLNO1ZZzxRt_mkGVVkY,50
34
34
  wbfdm/analysis/technical_analysis/technical_analysis.py,sha256=3ZQOMUWovP6Fq0jOapHGcvBJmisWjEI4TcU5Qb0x8J0,4962
@@ -184,6 +184,8 @@ wbfdm/import_export/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
184
184
  wbfdm/import_export/resources/classification.py,sha256=Ngvh7luGyYr-gcFJD7rch9LVt-3C4tnueKST3imgBmU,1051
185
185
  wbfdm/import_export/resources/instrument_prices.py,sha256=01Sc-4crwiqAnQI0-ir5RdfsdLS69Uq5hbVtVbEVYso,937
186
186
  wbfdm/import_export/resources/instruments.py,sha256=KK4Vw58-SqbYOpKxH7X0uxsR_H5cUftDnCyrIVKmYIU,4580
187
+ wbfdm/locale/de/LC_MESSAGES/django.po,sha256=GyjMhtxjjQ2ycgTPlh-VJIrQE1iYR1QOtqIA1GkVZoY,5498
188
+ wbfdm/locale/fr/LC_MESSAGES/django.po,sha256=sV3FC-0zs2wshgfaMZIPJBjQvJg-SvisUYzP5nVke98,5497
187
189
  wbfdm/management/__init__.py,sha256=u9-xEgneYh3DvuHceeAMt8mihGXZGp6WIwVxve-6GHA,1265
188
190
  wbfdm/migrations/0001_initial.py,sha256=xbAuv-HTzqa8krqSpjRokVptqY8raGrHjwDvKjep4Cw,2742
189
191
  wbfdm/migrations/0002_rename_statements_instrumentlookup_financials_and_more.py,sha256=XnIajiZeR6bEvzRZ4TczoE-3xoVJMUQj3hOSC3FOtMM,5441
@@ -296,7 +298,7 @@ wbfdm/viewsets/configs/display/financial_summary.py,sha256=K8CPV9uy0wsK-yLQIDTqM
296
298
  wbfdm/viewsets/configs/display/instrument_lists.py,sha256=UF_M41sBDDxGLDlKxLdAHqo8S1iHJfvIwZbLuoeaGuA,5239
297
299
  wbfdm/viewsets/configs/display/instrument_prices.py,sha256=CdZg-Fwd__DP0Ym8TBsupbVZzhoMbNfOJQKCmgKvwCc,4908
298
300
  wbfdm/viewsets/configs/display/instrument_requests.py,sha256=CarX1MGe64roHZETm2N4HsEMssHVI5mWw2xTUBjgi-k,5129
299
- wbfdm/viewsets/configs/display/instruments.py,sha256=PTSl-d8iLvm_rbUF-3hf4s85R2lhttJX9FNi9JHTr2M,17413
301
+ wbfdm/viewsets/configs/display/instruments.py,sha256=4bKN0F8vOpGXgyGIyDxy21uzGsBMu_Kb-fr_oo4OOCo,17400
300
302
  wbfdm/viewsets/configs/display/instruments_relationships.py,sha256=BLAl2ZciWR5Waf3qPd1QQwdiupgIf_wGK6rmYe9byuY,2480
301
303
  wbfdm/viewsets/configs/display/monthly_performances.py,sha256=ESsGTLhPmmXz3YjEWNjwaOjA1RNzVDKtJt3JILL2MMc,2973
302
304
  wbfdm/viewsets/configs/display/officers.py,sha256=qUwN9HPSSlT85aUSFNY-30550P35j3RZCYqRPj_rFAs,654
@@ -337,7 +339,7 @@ wbfdm/viewsets/financial_analysis/__init__.py,sha256=cTTcvGnhz2Ep9RpkyUyTOpjTXJz
337
339
  wbfdm/viewsets/financial_analysis/financial_metric_analysis.py,sha256=IDSmnCiQzcqcpNezsga9j9wcujoWe5Lk74Irt7oDOwA,3316
338
340
  wbfdm/viewsets/financial_analysis/financial_ratio_analysis.py,sha256=K1qcUX8pv_AZyZLbkdv_5ETyaSTp2EoqOY2sJGCAurY,3108
339
341
  wbfdm/viewsets/financial_analysis/financial_summary.py,sha256=G45qXpGtXe2vi9zdlb9UAkO5BTsKjf2sF4JqcW61EBM,9221
340
- wbfdm/viewsets/financial_analysis/statement_with_estimates.py,sha256=CMz0_c9Y9TRxP0_1rBXTJKrOsHyIwIcfHvAgabAHCh0,6099
342
+ wbfdm/viewsets/financial_analysis/statement_with_estimates.py,sha256=wnBxS3b0Hsl2IfNU7WCOcRndNW8JckWDmGrgHrBmhWE,6216
341
343
  wbfdm/viewsets/instruments/__init__.py,sha256=uydDdU6oZ6W2lgFkr3-cU7WZU7TeokXAA1J0xEgiLD0,2826
342
344
  wbfdm/viewsets/instruments/classifications.py,sha256=CMRTeI6hUClXzZUr7PeRWBXhT9fMiPiu-FvNP_jUQkM,11947
343
345
  wbfdm/viewsets/instruments/financials_analysis.py,sha256=xcVKR2H0P07NIyxFwPPPmVi3hWA0ZrfxOWMO8KjG6Ms,29202
@@ -348,9 +350,9 @@ wbfdm/viewsets/instruments/instruments.py,sha256=-UG8fceQumx06xmZ6tRnjFvFu_Jrjz5
348
350
  wbfdm/viewsets/instruments/instruments_relationships.py,sha256=D2Ym84zXBFegQC9nMThKSWqSAcWa0WvcS_GXxM2po68,11076
349
351
  wbfdm/viewsets/instruments/utils.py,sha256=kr5HwkSaWp-6GHVEQIb3CnIspDGSxfqghyOqg0oHO-A,1166
350
352
  wbfdm/viewsets/statements/__init__.py,sha256=odxtFYUDICPmz8WCE3nx93EvKZLSPBEI4d7pozcQz2A,47
351
- wbfdm/viewsets/statements/statements.py,sha256=kmtM0uZ3f7eJJe5gVmd-iVra9dHwTB9x12p7f5qTEx8,4084
353
+ wbfdm/viewsets/statements/statements.py,sha256=bmS89l60gnSb2NcoadkUt3GyrAR2JdQINH38-_Eg5Xs,4135
352
354
  wbfdm/viewsets/technical_analysis/__init__.py,sha256=qtCIBg0uSiZeJq_1tEQFilnorMBkMe6uCMfqar6-cLE,77
353
355
  wbfdm/viewsets/technical_analysis/monthly_performances.py,sha256=O1j8CGfOranL74LqVvcf7jERaDIboEJZiBf_AbbVDQ8,3974
354
- wbfdm-1.50.15.dist-info/METADATA,sha256=gzswKryWaADhvyXF35Juey3Vuec5_4G_uVJi_H24hFw,738
355
- wbfdm-1.50.15.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
356
- wbfdm-1.50.15.dist-info/RECORD,,
356
+ wbfdm-1.51.0.dist-info/METADATA,sha256=XsTWwOsFsEIfCY9BfH90vSW2g6_gMw603PE145u0gA0,737
357
+ wbfdm-1.51.0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
358
+ wbfdm-1.51.0.dist-info/RECORD,,