Skip to main content

No project description provided

Project description

Testing Deploy Documentation

cython-extensions-sc2

API Documentation - for a full list of included functions.

cython-extensions-sc2 is a library designed for the python-sc2 API. Its purpose is to offer optimized Cython alternatives for commonly used functions, along with additional useful custom functions.

Note: This library is included for ares-sc2 users by default, no further setup is required.

This library also supports python-sc2 and sharpy-sc2 bots, see Getting Started below.

Example speedups, results may vary depending on machine and exact scenario. This is by no means a list of all functionality offered.

python-sc2 function cython speedup
units.closest_to 6.85 - 13x speedup depending on scenario
distance_to 3 to 7x speedup depending on scenario
position.center 2x speedup
already_pending for units 6.62x speedup
already_pending for structures 4x speedup
units.in_attack_range 2.05x speedup
units.sorted_by_distance_to 8.62x speedup
unit.is_facing 9.1x speedup
Point2.towards 14.29x speedup
has_creep 4 - 5x speedup
in_pathing_grid 4 - 5x speedup
closer_than 12x speedup
further_than 12x speedup

Tip: use cy_distance_to_squared where possible for extra 1.3x speedup.

Getting started

To quickly get up and running locally (for python versions 3.11, 3.12), install cython-extensions-sc2 with:

pip install cython-extensions-sc2

Type Safety

cython-extensions-sc2 includes type safety checking to prevent your bot failing with silent errors. This is disabled by default for pure performance reasons, to enable it call enable_safe_mode(True).

from cython_extensions import enable_safe_mode
# immediately after importing any cython functions
enable_safe_mode(True)

Even with safe mode disabled, there will still be some function overhead, but it should be negligible. However, if you want to squeeze every last bit of performance out of your bot, you can import cython functions directly from the cython files to avoid using the type checker functionality all together.

Example using cy_closest_to turning off safe mode for some performance:

from cython_extensions import cy_closest_to, enable_safe_mode
enable_safe_mode(False)

You could instead import cy_closest_to directly:

from cython_extensions.units_utils import cy_closest_to

Shipping to ladder

When shipping to ladder, grab ubuntu-latest_python3.12.zip from releases in this repo and extract cython_extensions directory within the zip to the root of your bot's directory, like so:

MyBot
└───cython_extensions
│   └───cython-extensions library files
└───your bot files and directories

Alternative local setup

If you already have a python-sc2, or sharpy-sc2 development environment setup, then cython-extensions should work out the box with your bot without the need to install extra requirements. Simply check out the releases on this repo and download the correct zip for your system.

release

For example a Windows user should download windows-latest_python3.12.zip.

Inside this zip you will find a cython_extensions directory, this should be placed in your bot's root directory like so:

MyBot
└───cython_extensions
│   └───cython-extensions library files
└───your bot files and directories

Start using cython-extensions-sc2

For ease of use all cython functions are importable via the main module, for example:

from cython_extensions import cy_distance_to, cy_attack_ready, cy_closest_to

note: in this project all library functions have a cy_ prefix to prevent confusion with python alternatives.

Contributor / Cloning the project

Install poetry if you do not already have it installed.

Then to setup a full development environment run: poetry install --with dev,test,docs,semver

This will set up a new environment, install all required dependencies and compile the cython code for your system.

If you modify the cython code, run poetry build to compile it.

Jupyter Notebooks

Run poetry run jupyter notebook to open jupyter notebook in the environment. See the notebooks directory for examples. Use template_notebook.ipynb as a starting point for your own notebooks.

Updating ids

ability_mapping.pyx ids are generated via a script, these should be updated after a new SC2 version is released. Run poetry run python scripts/update_ability_mapping to update the ids.

Run Test Bot

Edit the map in bot_test.py and run with: poetry run python tests/bot_test.py

Contributing

Contributors are very welcome! There are many missing alternative python-sc2 functions, and if you're into optimization, the existing functions could likely be improved.

Adding new functions

If you want to add a new function, please add it to the relevant '.pyx' and '.pyi' files. See existing functions for examples. Please also add tests for your function in the tests directory.

Additionally, the new function should be added to the type checking system in cython_extensions/type_checking First add a validation function inside cython_extensions/type_checking/validators.py using the existing examples as guidance.

Then add a safe_wrapper function inside cython_extensions/type_checking/safe_wrappers.py using the existing examples as an example. Ensure your new function is exported at the bottom of this file. Preferably check the new function works in a real bot before submitting a PR. You can use tests/bot_test.py to test your function.`

Commit messages

Please use conventional commits if you choose to contribute, it helps the automatic releases detect a new version and generates an accurate changelog.

Example git messages:

feat: add new cython function

fix: fixed buggy function

test: add new test

ci: update github workflow

docs: add new docs

chore: add dependency

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

cython_extensions_sc2-0.13.3-cp313-cp313-musllinux_1_2_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

cython_extensions_sc2-0.13.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cython_extensions_sc2-0.13.3-cp312-cp312-win_amd64.whl (493.4 kB view details)

Uploaded CPython 3.12Windows x86-64

cython_extensions_sc2-0.13.3-cp312-cp312-musllinux_1_2_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

cython_extensions_sc2-0.13.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cython_extensions_sc2-0.13.3-cp312-cp312-macosx_11_0_arm64.whl (638.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cython_extensions_sc2-0.13.3-cp311-cp311-musllinux_1_2_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

cython_extensions_sc2-0.13.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cython_extensions_sc2-0.13.3-cp311-cp311-macosx_11_0_arm64.whl (644.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file cython_extensions_sc2-0.13.3-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cython_extensions_sc2-0.13.3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 061c85e78262d42af733b319db27ecebebc4ade7925b6da531f5c3007abef97c
MD5 c5bf9a313fa82fdba064ce662260dd1e
BLAKE2b-256 f616250ed708903f0c0fc0cc9ea8a7a1acf9c0bedc81fd3ce0a0b23bf7951c69

See more details on using hashes here.

File details

Details for the file cython_extensions_sc2-0.13.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cython_extensions_sc2-0.13.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fd54cb58aa9d709f4a64fb4740178ec7f0eec8cdd2797b89d027653a31791632
MD5 cff1e5784b80e20ab1aa17f8d996162f
BLAKE2b-256 08d245c20e8750a3445f071d689194de939cb2d8c706885d0d9cf7df7954bbd1

See more details on using hashes here.

File details

Details for the file cython_extensions_sc2-0.13.3-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for cython_extensions_sc2-0.13.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 baefca8937d87ef24ac8fe1b535029bce198076b8dc4dc1cf78f9dfab20b8de3
MD5 fcac348f31d16ffce8cd405fe2f6fcbb
BLAKE2b-256 308ef17914dafb141271530046bc104900746ec57a5dcb37e48db5ccd0960e0b

See more details on using hashes here.

File details

Details for the file cython_extensions_sc2-0.13.3-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cython_extensions_sc2-0.13.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0716b2ebd84ad82a3c66a846682ec43d4dc31c954173a72968da91f9dfd927d5
MD5 7894663d9c8e8dc1fcf577226c2b255f
BLAKE2b-256 eb9e9424a2bf5216cfd196d4ebaa2486e813c6e653221623318be355a93cc487

See more details on using hashes here.

File details

Details for the file cython_extensions_sc2-0.13.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cython_extensions_sc2-0.13.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e08cf7c62f8b31cc96ca35b3843d729d7c5fa89ee8f8202c45ae02b40567ecd8
MD5 4272ceb4cd0f7093b8c5e98d8d3882a1
BLAKE2b-256 af7fec7547fc47cab32d8f199b053730242e82dfffdeee20ce8f0c94706c2bef

See more details on using hashes here.

File details

Details for the file cython_extensions_sc2-0.13.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cython_extensions_sc2-0.13.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0ceb078b9785e2cb4b2749f0321d46f9d5f631d9adb36388236f5d0cfb008fd9
MD5 a8c19ff462f00a07a7c702ef15a88ecc
BLAKE2b-256 cef4b8c5f7f4bd0c2dae8d73569c1a6dd1662195cde71ad9a46f49efc1796f74

See more details on using hashes here.

File details

Details for the file cython_extensions_sc2-0.13.3-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cython_extensions_sc2-0.13.3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cc96a17def1d1a49f2ea9299f3af8ff55016f93b0f39ed0340b91b9606fbcf17
MD5 be2e27561f05582bb94ad25551f39d76
BLAKE2b-256 262c7c6182bc8b2359c13dd7bec4074c41fb14bf140a231d8429b7df4841d0d1

See more details on using hashes here.

File details

Details for the file cython_extensions_sc2-0.13.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cython_extensions_sc2-0.13.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bc0317d26d63cd6089c8439fc78175a03f8b568ca74649895f21ccee8d723b7b
MD5 f2ac62b999345fb407aaf300ba75af1b
BLAKE2b-256 0aa108a624503a93aa2af17d20c8c6fd06c6374e866e007f2b36506251fa475a

See more details on using hashes here.

File details

Details for the file cython_extensions_sc2-0.13.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cython_extensions_sc2-0.13.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 15528039d66a3b0bfca17b80d81d629922c36e22fb12ccca2445cf0e852db1e0
MD5 d6ee146bbc0dc0959ed4afb97d444207
BLAKE2b-256 46025c7fa38aff55a60766b8776247ef1638da03e463609cb09d69c9c7f8c1db

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page