Skip to main content

phyles

Background

Phyles is a set of somewhat eclectic functions that makes the implementation of utilities (little programs that can be controlled by config files) easier. It started as a mass of boilerplate that I would copy into almost every utility I wrote. I finally decided to consolidate this code into a package and add some schema-based validation of config files and to document it fully.

Features

Phyles provides support for YAML-based config files as well as a means for validating the config files. Phyles also provides several facilities for making utilities more user friendly, including automatically generated banners, automatically documented configuration templates, and graceful recovery from configuration errors.

Home Page & Repository

The phyles home page is http://phyles.bravais.net, and the source code is maintained at github: https://github.com/jcstroud/phyles.

Example

About 90% of the convenience that phyles offers can be summarized by a few lines of code. From the example utility in the tutorial (http://pythonhosted.org/phyles):

1|  spec = phyles.package_spec(phyles.Undefined, "barbecue",
 |                             "schema", "barbecue-time.yml")
2|  converters = {'celsius to farenheit':
 |                barbecue.celsius_to_farenheit}
3|  setup = phyles.set_up(__program__, __version__,
 |                                    spec, converters)
4|  phyles.run_main(main, setup['config'],
 |                   catchall=barbecue.BarbecueError)

These few lines find a schema specification from the package contents (line 1), parses command line arguments (line 3), validates a config file (lines 2 & 3), overrides configuration settings therein (line 3), and runs the main function of the utility in a try-except block that ensures graceful exit in the event that an anticipated exception is raised (line 4).

Schema are specified in YAML, terse, and hopefully intuitive. Following is the example from the tutorial:

!!omap
- dish :
   - - vegetable kabobs
     - smoked salmon
     - brisket
   - smoked salmon
   - Dish to cook
- doneness :
   - rare : 200
     medium : 350
     well-done : 500
   - medium
   - How much to cook the dish
- temperature :
   - celsius to farenheit
   - 105
   - Cooking temperature in °C
   - 105
- width :
   - int
   - 70
   - width of report
   - 70

Phyles will automatically generate a documented sample config files for users if they run the utility with the --template (or -t) command line option. In the tutorial, calling the example script (barbecue-time) with:

barbecue_time -t

produces the following output, which is valid for the above schema:

%YAML 1.2
---

# Dish to cook
# One of: vegetable kabobs, smoked salmon, brisket
dish : smoked salmon

# How much to cook the dish
# One of: well-done, medium, rare
doneness : medium

# Cooking temperature in °C
temperature : 105

# width of report
width : 70

As one final example, another valid config file for this schema is:

dish : smoked salmon
doneness : medium
temperature : 107
width : 70

Metadata

Release files for phyles 0.2.16

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

Source distribution (sdist)

Source distribution for phyles 0.2.16
File Size Uploaded Provenance Actions
phyles-0.2.16.tar.gz 158.2 kB Without provenance Details for phyles-0.2.16.tar.gz

Release files / phyles-0.2.16.tar.gz

Download URL phyles-0.2.16.tar.gz
Size 158.2 kB
Tags Source
SHA-256 checksum
How to use checksums
af6b9beaf8581e19f0154ac8370cbd69445fb795aeea5125b5249259fb0ccf18
BLAKE2b-256 checksum
How to use checksums
4179b8c0a7a13cb84281bfbc59445b0f15b4c8b342e5094b4375ab237fb69fb0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for phyles 0.2.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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