Skip to content

Commit

Permalink
Cut out tooling from the PMA repository (#3)
Browse files Browse the repository at this point in the history
* Cut out tooling from the PMA repository

* Black

* Remove forgoten line

* Remove apis from args

* black

* Add missing verify_address
  • Loading branch information
kongzii authored Feb 9, 2024
1 parent 64c0c95 commit f0b069b
Show file tree
Hide file tree
Showing 25 changed files with 4,038 additions and 6 deletions.
23 changes: 23 additions & 0 deletions examples/cloud_deployment/gcp/agent.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from flask.wrappers import Request
import functions_framework
import random

from prediction_market_agent_tooling.markets.data_models import AgentMarket
from prediction_market_agent_tooling.deploy.agent import DeployableAgent
from prediction_market_agent_tooling.markets.markets import MarketType


class DeployableCoinFlipAgent(DeployableAgent):
def pick_markets(self, markets: list[AgentMarket]) -> list[AgentMarket]:
if len(markets) > 1:
return random.sample(markets, 1)
return markets

def answer_binary_market(self, market: AgentMarket) -> bool:
return random.choice([True, False])


@functions_framework.http
def main(request: Request) -> str:
DeployableCoinFlipAgent().run(market_type=MarketType.MANIFOLD)
return "Success"
37 changes: 37 additions & 0 deletions examples/cloud_deployment/gcp/deploy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import os

from prediction_market_agent_tooling.deploy.gcp.deploy import (
deploy_to_gcp,
remove_deployed_gcp_function,
run_deployed_gcp_function,
schedule_deployed_gcp_function,
)
from prediction_market_agent_tooling.deploy.gcp.utils import gcp_function_is_active
from prediction_market_agent_tooling.markets.markets import MarketType
from prediction_market_agent_tooling.config import APIKeys

if __name__ == "__main__":
current_dir = os.path.dirname(os.path.realpath(__file__))
fname = deploy_to_gcp(
requirements_file=f"{current_dir}/../../pyproject.toml",
extra_deps=[
"git+https://github.com/gnosis/prediction-market-agent.git@evan/deploy-agent"
],
function_file=f"{current_dir}/agent.py",
market_type=MarketType.MANIFOLD,
api_keys={"MANIFOLD_API_KEY": APIKeys().manifold_api_key},
memory=512,
)

# Check that the function is deployed
assert gcp_function_is_active(fname)

# Run the function
response = run_deployed_gcp_function(fname)
assert response.ok

# Schedule the function
schedule_deployed_gcp_function(fname, cron_schedule="* * * * *")

# Delete the function
remove_deployed_gcp_function(fname)
2 changes: 1 addition & 1 deletion mypy.ini
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[mypy]
python_version = 3.9
files = prediction_market_agent_tooling/
files = prediction_market_agent_tooling/, tests/, examples/
plugins = pydantic.mypy
warn_redundant_casts = True
warn_unused_ignores = True
Expand Down
1,536 changes: 1,532 additions & 4 deletions poetry.lock

Large diffs are not rendered by default.

Loading

0 comments on commit f0b069b

Please sign in to comment.