Python implementation for Source servers, RCON, A2S, VDF, the Steam Web API and various other Valve products and services.
Project description
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.
Source Distribution
File details
Details for the file python-valve-0.2.1.tar.gz
.
File metadata
- Download URL: python-valve-0.2.1.tar.gz
- Upload date:
- Size: 43.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 589283d2235bd14992c2c81f98112b20b7aeac5cb72da0597fd57eea72a19c95 |
|
MD5 | 0358ec88babb2c1ef47b249b18d18355 |
|
BLAKE2b-256 | 504e4887a216bc7f562b55fbc95259d46eccdd19d682755b8d09c6d82e8f77b6 |