-
Notifications
You must be signed in to change notification settings - Fork 34
Fix duplicate mech calls #233
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -304,7 +304,7 @@ def _parse_args() -> Any: | |
| return args | ||
|
|
||
|
|
||
| def _to_content(q: str) -> dict[str, Any]: | ||
| def _to_content(q: str) -> Dict[str, Any]: | ||
| """Convert the given query string to payload content, i.e., add it under a `queries` key and convert it to bytes.""" | ||
| finalized_query = { | ||
| "query": q, | ||
|
|
@@ -320,7 +320,7 @@ def _query_omen_xdai_subgraph( # pylint: disable=too-many-locals | |
| to_timestamp: float = DEFAULT_TO_TIMESTAMP, | ||
| fpmm_from_timestamp: float = DEFAULT_FROM_TIMESTAMP, | ||
| fpmm_to_timestamp: float = DEFAULT_TO_TIMESTAMP, | ||
| ) -> dict[str, Any]: | ||
| ) -> Dict[str, Any]: | ||
| """Query the subgraph.""" | ||
| url = "https://api.thegraph.com/subgraphs/name/protofire/omen-xdai" | ||
|
|
||
|
|
@@ -365,11 +365,11 @@ def _query_omen_xdai_subgraph( # pylint: disable=too-many-locals | |
| return all_results | ||
|
|
||
|
|
||
| def _query_conditional_tokens_gc_subgraph(creator: str) -> dict[str, Any]: | ||
| def _query_conditional_tokens_gc_subgraph(creator: str) -> Dict[str, Any]: | ||
| """Query the subgraph.""" | ||
| url = "https://api.thegraph.com/subgraphs/name/gnosis/conditional-tokens-gc" | ||
|
|
||
| all_results: dict[str, Any] = {"data": {"user": {"userPositions": []}}} | ||
| all_results: Dict[str, Any] = {"data": {"user": {"userPositions": []}}} | ||
| userPositions_id_gt = "" | ||
| while True: | ||
| query = conditional_tokens_gc_user_query.substitute( | ||
|
|
@@ -419,7 +419,7 @@ def wei_to_olas(wei: int) -> str: | |
| return "{:.2f} OLAS".format(wei_to_unit(wei)) | ||
|
|
||
|
|
||
| def _is_redeemed(user_json: dict[str, Any], fpmmTrade: dict[str, Any]) -> bool: | ||
| def _is_redeemed(user_json: Dict[str, Any], fpmmTrade: Dict[str, Any]) -> bool: | ||
| user_positions = user_json["data"]["user"]["userPositions"] | ||
| outcomes_tokens_traded = int(fpmmTrade["outcomeTokensTraded"]) | ||
| condition_id = fpmmTrade["fpmm"]["condition"]["id"] | ||
|
|
@@ -451,7 +451,7 @@ def _compute_roi(initial_value: int, final_value: int) -> float: | |
|
|
||
|
|
||
| def _compute_totals( | ||
| table: dict[Any, dict[Any, Any]], mech_statistics: dict[str, Any] | ||
| table: Dict[Any, Dict[Any, Any]], mech_statistics: Dict[str, Any] | ||
| ) -> None: | ||
| for row in table.keys(): | ||
| total = sum(table[row][c] for c in table[row]) | ||
|
|
@@ -489,7 +489,7 @@ def _compute_totals( | |
| ) | ||
|
|
||
|
|
||
| def _format_table(table: dict[Any, dict[Any, Any]]) -> str: | ||
| def _format_table(table: Dict[Any, Dict[Any, Any]]) -> str: | ||
| column_width = 14 | ||
|
|
||
| table_str = " " * column_width | ||
|
|
@@ -617,11 +617,12 @@ def _format_table(table: dict[Any, dict[Any, Any]]) -> str: | |
| def parse_user( # pylint: disable=too-many-locals,too-many-statements | ||
| rpc: str, | ||
| creator: str, | ||
| creator_trades_json: dict[str, Any], | ||
| mech_statistics: dict[str, Any], | ||
| ) -> tuple[str, dict[Any, Any]]: | ||
| creator_trades_json: Dict[str, Any], | ||
| mech_statistics: Dict[str, Any], | ||
| ) -> tuple[str, Dict[Any, Any]]: | ||
| """Parse the trades from the response.""" | ||
|
|
||
| _mech_statistics = dict(mech_statistics) | ||
| user_json = _query_conditional_tokens_gc_subgraph(creator) | ||
|
|
||
| statistics_table = { | ||
|
|
@@ -670,10 +671,11 @@ def parse_user( # pylint: disable=too-many-locals,too-many-statements | |
| market_status | ||
| ] += collateral_amount | ||
| statistics_table[MarketAttribute.FEES][market_status] += fee_amount | ||
| mech_data = _mech_statistics.pop(fpmmTrade["title"], {}) | ||
| statistics_table[MarketAttribute.MECH_CALLS][ | ||
| market_status | ||
| ] += mech_statistics.get(fpmmTrade["title"], {}).get("count", 0) | ||
| mech_fees = mech_statistics.get(fpmmTrade["title"], {}).get("fees", 0) | ||
| ] += mech_data.get("count", 0) | ||
| mech_fees = mech_data.get("fees", 0) | ||
|
Comment on lines
+674
to
+678
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What happens if we do not pop here? The loop is for different trades afaict so what changes?
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If we do not pop, it will pick again the same values if there is another trade for the same question. This is an issue, because there is no relation between mech calls and trades (we don't know what mech calls are related to each trade). Hence this was the solution adopted. In summary, this will add up the mech calls for a given question the first time it is visited. Therefore it won't distinguish which calls are related to what trade, which is not an issue, because we only want the total. |
||
| statistics_table[MarketAttribute.MECH_FEES][market_status] += mech_fees | ||
|
|
||
| output += f" Market status: {market_status}\n" | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you just copying here? If not, is the function's type hint for
mech_statisticscorrect?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed type
dicttoDictglobally.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not what I meant 😅
dictwas fine.So you are just copying I assume. Why are you copying?
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I suspect that you can avoid explicitly copying by not shadowing
mech_statisticsfrom themainscope.Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The method needs both the original read-only parameter (which the method doesn't care if it shadows the main one) and I also need a copy of it which I can modify. Both are required in this method: the original and the modifiable one.