Skip to content
This repository was archived by the owner on May 29, 2025. It is now read-only.
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 14 additions & 12 deletions trades.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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"

Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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"]
Expand Down Expand Up @@ -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])
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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)
Copy link
Collaborator

@Adamantios Adamantios Feb 19, 2024

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_statistics correct?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed type dict to Dict globally.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not what I meant 😅
dict was fine.
So you are just copying I assume. Why are you copying?

Copy link
Collaborator

@Adamantios Adamantios Feb 19, 2024

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_statistics from the main scope.

Copy link
Collaborator Author

@jmoreira-valory jmoreira-valory Feb 20, 2024

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.

user_json = _query_conditional_tokens_gc_subgraph(creator)

statistics_table = {
Expand Down Expand Up @@ -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
Copy link
Collaborator

Choose a reason for hiding this comment

The 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?

Copy link
Collaborator Author

@jmoreira-valory jmoreira-valory Feb 20, 2024

Choose a reason for hiding this comment

The 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"
Expand Down