Pious: The Pio Utility Suite
Pious provide a Python wrapper for a PioSOLVER instance and provides convenience functions and abstractions to make working with PioSOLVER easier.
Warning: This library is still under construction. All interfaces, classes, files, etc. will be changed. I'm open sourcing this for feedback/collaboration.
Install
Install with pip install pious. Requires Python 3.11 or later.
Solver Interface
Pious provides pious.pio.solver.Solver to wrap a PioSOLVER instance. This can
be constructed directly, but we recommend using pious.pio.util.make_solver():
# examples/load_tree.py
from pious.pio.util import make_solver
from pious.pio.resources import get_test_tree
solver = make_solver()
solver.load_tree(get_test_tree()) # Replace with your tree
solver.load_all_nodes() # Required for partial saves in Pio3
tree_info = solver.show_tree_info()
print(f"Board: {tree_info['Board']}")
print(f"Pot: {tree_info['Pot']}")
print(f"EffectiveStacks: {tree_info['EffectiveStacks']}")
lines = solver.show_all_lines()
print("Last 10 lines:", lines[-10:])
Configuration
By default make_solver will try to invoke C:\PioSOLVER\PioSOLVER3-edge.exe.
You can configure default behavior by placing a pious.toml in your home
directory. Here is a sample pious.toml:
[pio]
install_directory="C:\\PioSOLVER"
pio_version_no="2"
pio_version_type="pro"
Lines
PioSOLVER deals in lines (e.g., show_all_lines), such as
r:0:c:c:b300:b850:c. Pious provides a high-level wrapper, Line, around
low-level Pio lines that gives many quality-of-life improvements. See
examples\line_example.py for details:
from pious.pio.line import Line
# ...
line = Line("r:0:c:b12:c:c:b77:b221:c:c")
print("Line:", line)
print(" IP? ", line.is_ip())
print(" Current Street? ", line.current_street())
print(" Actions: ", line.actions)
print(" Streets as Actions: ", line.streets_as_actions)
print(" Streets as Lines: ", line.streets_as_lines)
print(" Facing Bet? ", line.is_facing_bet())
Aggregation Reports
To use the AggregationReport, start a python session from the python
directory, and import the aggregation report module. Then create a new
AggregationReport by passing in the path to the folder containing the
AggregationReport (and optionally including the path to the solve database
that you used to generate the aggregation report).
See examples\aggregation_example.py for more info:
# Excerpt from examples\aggregation_example.py
from pious.pio.aggregation import AggregationReport
import pious.pio.resources as resources
report = AggregationReport(get_aggregation_root(), get_database_root())
print(report)
print(report.describe())
report.ioff() # turn off matplotlib's interactive mode
report.plot() # exit report to continue
report.filter("r1 == 14") # filter for ace high boards
report.plot()
report.reset()
report.filter("r1 < 14 and flushdraw") # non ace high AND flushdraw boards
report.plot()
You can run r.plot() to get a nice visualization, r.filter() to focus only
on boards you're interested in, and r.reset() to start over again.
Metadata
Release files for pious 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pious-0.0.1.tar.gz | 7.6 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pious-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.6 MB
Release files / pious-0.0.1.tar.gz
| Download URL | pious-0.0.1.tar.gz |
|---|---|
| Size | 7.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
839bd47ba29034e18939a4b2403ebc9f0beef25ebbf6f7ab6250947b7d73f1c2
|
|
BLAKE2b-256 checksum How to use checksums |
7f89ea8371a7e8967d4a2812315b784d664517c413938c1ba530fea800eb09bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.11.9
|
Release files / pious-0.0.1-py3-none-any.whl
| Download URL | pious-0.0.1-py3-none-any.whl |
|---|---|
| Size | 8.0 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
457eb8eebaad1035114975d31f5fb9cb066759548cd4d638e345e7525783f5c0
|
|
BLAKE2b-256 checksum How to use checksums |
97cbff7393751b7b6a90f0d9b57afcbf5fbfec2285c9f0c15f25af29b58093d9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.11.9
|