Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

PyWars

A public topic consumer for Chat Wars ... with steroids

🚀 Motivations

  • 🤖 Build a bot?
  • 👥 Help comunity?
  • 🚀 Personal training?

☄ Quick start

from PyWars import *

app = Client()

@app.agent(Deal)
async def deals(stream:Stream[Deal]):
    async for deal in stream:
        print(deal)

app.run()

📚 Overview

Dummy client creation

from PyWars import Client
app = Client()

This will create a client with an autogenerated id for chat wars v2 api


Specifiying client version

from PyWars import Client
app = Client(version=Client.Version.CW3)

This will create a client for chat wars v3 api


Adding agents

from PyWars import *
app = Client()

@app.agent(Deal)
async def deals(stream:Stream[Deal]):
    async for deal in stream:
        print(deal)

app.run()

The Client.agent method recieves an allowed record. The allowed records are:

  • Deal for cw*-deals topic
  • Duel for cw*-duels topic
  • Offer for cw*-offers topic
  • SexDigest for cw*-sex_digest topic
  • YellowPage for cw*-yellow_pages topic
  • AuctionDigest for cw*-au_digest topic

Adding timers

from PyWars import *
app = Client()
procesed_deals = 0

@app.agent(Deal)
async def deals(stream:Stream[Deal]):
    async for deal in stream:
        procesed_deals += 1

@app.timer(60)
async def print_procesed():
    print(procesed_deals)
    procesed_deals = 0

app.run()

A timer is a courutine that is triggered every n seconds in the previous examples we used 60 seconds.


Using executions loops

from PyWars import *
import asyncio

app = Client(loop=asyncio.get_event_loop())

@app.agent(Deal)
async def deals(stream:Stream[Deal]):
    async for deal in stream:
        print(deal)
try:
    app.start()
finally:
    app.stop()

The magical start and stop methods were thought to run and stop client with his execution loop smootly


Bulking

from PyWars import *

app = Client()

@app.agent(Deal)
async def deals(stream:Stream[Deal]):
    async for bulk in stream.take(100, 10):
        print(bulk)

app.run()

A bulk is just the use of Stream.take method from faust. It will try to take bulks of 100 objetcs, in case that it can´t return the 100 objects its going to wait for 10 seconds and return any amount gathered in that time.


For extended documentation see for the docs page.

Metadata

Release files for pywars 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for pywars 0.1.1
File Interpreter ABI Platform
PyWars-0.1.1-py3-none-any.whl Python 3 none any Details

Release files / PyWars-0.1.1-py3-none-any.whl

Download URL PyWars-0.1.1-py3-none-any.whl
Size 8.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8e5d22fab3fbd9e5c5aeac76969d75dee1e0d3d05a0dc4b9390f02de3354453d
BLAKE2b-256 checksum
How to use checksums
5d1172fc41e687e1a724375c478fb08cfde37a815dfe1350ed8f468e70df1d81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6

Release history Release notifications | RSS feed

This release

0.1.1 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page