Skip to main content

Python implementation for Source servers, RCON, A2S, VDF, the Steam Web API and various other Valve products and services.

Project description

PyPI PyPIPythonVersions Travis Coveralls

Python-valve

Python-valve is a Python library which intends to provide an all-in-one interface to various Valve products and services, including:

  • Source servers
    • A2S server queries
    • RCON
  • Source master server
  • Steam web API
  • Local Steam Clients
  • Valve Data Format/KeyValues (.vdf)

To get started, install Python-valve with pip: pip install python-valve.

RCON Example

In this example we connect to a Source servers remote console and issue a simple echo command to it.

from valve.source.rcon import RCON

SERVER_ADDRESS = ("...", 27015)
PASSWORD = "top_secret"

with RCON(SERVER_ADDRESS, PASSWORD) as rcon:
    print(rcon("echo Hello, world!"))

Server Query Example

In this example we demonstrate the Source master server and A2S query implementations by listing all Team Fortress 2 servers in Europe and Asia running the map ctf_2fort, along with the players on each server sorted by their score.

import valve.source
import valve.source.a2s
import valve.source.master_server

with valve.source.master_server.MasterServerQuerier() as msq:
    try:
        for address in msq.find(region=[u"eu", u"as"],
                                gamedir=u"tf",
                                map=u"ctf_2fort"):
            with valve.source.a2s.ServerQuerier(address) as server:
                info = server.info()
                players = server.players()
            print("{player_count}/{max_players} {server_name}".format(**info))
            for player in sorted(players["players"],
                                 key=lambda p: p["score"], reverse=True):
                print("{score} {name}".format(**player))
    except valve.source.NoResponseError:
        print "Master server request timed out!"

Versioning

Python-valve uses Semantic Versioning. At this time, Python-valve is yet to reach its 1.0 release. Hence, every minor version should be considered to potentially contain breaking changes. Hence, when specifying Python-valve as a requirement, either in setup.py or requirements.txt, it’s advised to to pin the specific minor version. E.g. python-valve==0.2.0.

Testing

Python-valve uses Pytest for running its test suite. Unit test coverage is always improving. There are also functional tests included which run against real Source servers.

If working on Python-valve use the following to install the test dependencies and run the tests:

pip install -e .[test]
py.test tests/ --cov valve/

Documentation

Documentation is written using Sphinx and is hosted on Read the Docs.

If working on Python-valve use the following to install the documentation dependencies, build the docs and then open them in a browser.

pip install -e .[docs]
(cd docs/ && make html)
xdg-open docs/_build/html/index.html

Python 2

Python-valve supports Python 2.7! However, it’s important to bare in mind that Python 2.7 will not be maintained past 2020. Python-valve may drop support for Python 2.7 in a future major release before 2020 in order to make use of new, non-backwards compatible Python 3 features.

It’s strongly encouraged that new Python-valve projects use Python 3.

Trademarks

Valve, the Valve logo, Half-Life, the Half-Life logo, the Lambda logo, Steam, the Steam logo, Team Fortress, the Team Fortress logo, Opposing Force, Day of Defeat, the Day of Defeat logo, Counter-Strike, the Counter-Strike logo, Source, the Source logo, Counter-Strike: Condition Zero, Portal, the Portal logo, Dota, the Dota 2 logo, and Defense of the Ancients are trademarks and/or registered trademarks of Valve Corporation.

Any reference to these are purely for the purpose of identification. Valve Corporation is not affiliated with Python-valve or any Python-valve contributors in any way.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for python-valve, version 0.2.1
Filename, size & hash File type Python version Upload date
python-valve-0.2.1.tar.gz (43.7 kB) View hashes Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page