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
Hashes for Stricture-1.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 319810aa461cd3a3334d5327f6edec1db27b431e3fdaf0837e84bbba2bb601ff |
|
MD5 | d3afd3187d7201206061afbe857e337a |
|
BLAKE2b-256 | dff53d1e06a3ca49b3485fe43a84fc6315cd8f2b7da8c1a261947245b0318d83 |