Stricture is a python package that provides classes and a CLI tool for easy scheduling, automating, and managing of specific operations.
Project description
Stricture is a python package that provides classes and a CLI tool for easy scheduling, automating, and managing of specific operations.
Currently, Stricture provides 5 classes:
Schedule
- Used to determine if the current date and time falls within a user defined schedule. Provides a variety of functionality that promotes human readable schedules, ranging from broad week-to-week bases, to granular date and time ranges.Stricture
- A class used to abstract the idea of starting and stopping a specified operation or process based on aSchedule
or other condition. User supplied functions are orchestrated by a templated function to launch, pause, resume, and check conditions for an operation.ProcessStricture
- A differentiatedStricture
used to start and stop local system processes given aSchedule
or other condition.Command
- A basic utility for easily running terminal commands and collecting their output.CommandStricture
- A differentiatedStricture
used to start and stop terminal commands (using theCommand
Class) given aSchedule
or other condition.
Please review the Stricture Documentation for more information.
Making a schedule in YAML
Schedules
have many different ways to be instantiated and initialized. On of the easiest ways to create a schedule is to import it from a yaml file with from_yaml_file
. Below is an explaination of how to format a schedule with yaml.
# Days are classified into 1 of 3 modes: restricted, unrestricted, and prohibited
# restricted - Days are considered in schedule, but only for the
# time range defined by start_time and stop_time
# unrestricted - All 24 hours of the day are considered in the schedule
# prohibited - All 24 hours of the day are coonsidered out of schedule
# assume:
# The mode to use for days of the week that are not listed in the schedule
# Can either be unrestricted, restricted, or prohibited
# Defaults to restricted when not set
assume: "restricted"
# timezone:
# The timezone to use when checking the schedule
# Uses pytz timezones (Olson Timezone IDs)
# Defaults to the system time when not set
timezone: "US/Central"
# start_time:
# Defines what time the schedule range starts every day
# 24-Hour Format
# Defaults to 00:00 when not set
start_time: "09:30"
# stop_time:
# Defines what time the schedule range stops every day
# 24-Hour Format
# Defaults to 00:00 when not set
stop_time: "17:00"
# restricted_days:
# A list of days of the week that should
# have the start_time and stop_time applied to
restricted_days:
- "Monday"
- "Tuesday"
- "Wednesday"
- "Thursday"
- "Friday"
# unrestricted_days:
# A list of days of the week that should
# have all 24 hours considered as in the schedule
unrestricted_days:
- "Saturday"
# prohibited_days:
# A list of days of the week that should
# have all 24 hours considered as out of the schedule
prohibited_days:
- "Sunday"
# specific_dates:
# A list of specific date ranges that overides the main
# start_time, stop_time, and mode
# Useful for special occasions or for more granular
# control
# mode - The mode to use for the range
# start_date - The start of the date range
# stop_date - The end of the date range (inclusively)
# start_time - The start_time to use when the mode for the range is restricted
# stop_time - The stop_time to use when the mode for the range is restricted
specific_dates:
- mode: "unrestricted"
start_date: "2024-12-12"
stop_date: "2024-12-23"
- mode: "prohibited"
start_date: "2024-12-24"
stop_date: "2024-12-26"
- mode: "restricted"
start_date: "2024-12-27"
stop_date: "2024-12-31"
start_time: "18:00"
stop_time: "08:30"
Stricture CLI Tool
The Stricture Python Package ships with a CLI tool for quickly applying a Schedule
and Stricture
to a command or running process.
usage: stricture [-h] -s SCHEDULE [-q] [-o] [-e] (-p PID | -c COMMAND)
Apply a stricture to a command or process to execute based on a given schedule.
options:
-h, --help show this help message and exit
-s SCHEDULE, --schedule SCHEDULE
Schedule file in JSON or YAML format.
-q, --quiet Quiet mode. No stricture logging output.
-o, --stdout Print STDOUT of command (--command only).
-e, --stderr Print STDERR of command (--command only).
-p PID, --pid PID Process ID. Required if no command is provided.
-c COMMAND, --command COMMAND
Command to execute. Required if no PID is provided.
Examples:
stricture -s my_schedule.yml -c "ping -c 1000 192.168.1.1"
stricture -s my_schedule.yml -qoe -c "./my_script.sh"
stricture -s my_schedule.json -p 13019
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file Stricture-1.0.2.tar.gz
.
File metadata
- Download URL: Stricture-1.0.2.tar.gz
- Upload date:
- Size: 13.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3cd92f54921d585182035b7dc00b6f93c3b3eb54d0f39a8b8175051df9b7fc22 |
|
MD5 | 07c1a98c5ba1c91646f326bb24e90d68 |
|
BLAKE2b-256 | ccd7b1e71cbc780e64ed7945378899e860a8d36dc57f0c2eecc3c9585f9335a4 |
File details
Details for the file Stricture-1.0.2-py3-none-any.whl
.
File metadata
- Download URL: Stricture-1.0.2-py3-none-any.whl
- Upload date:
- Size: 15.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 319810aa461cd3a3334d5327f6edec1db27b431e3fdaf0837e84bbba2bb601ff |
|
MD5 | d3afd3187d7201206061afbe857e337a |
|
BLAKE2b-256 | dff53d1e06a3ca49b3485fe43a84fc6315cd8f2b7da8c1a261947245b0318d83 |