Create schedule images of your weekly classes
Project description
week_schedule
A python little package for creating a schedule of my weekly classes from a JSON file using matplotlib.
Install it from the python package index:
pip install week_schedule
How it works
Save your classes in a .json
file with the structure:
{
"class name":{
"[class days initials]":"[start time]-[end time]"
}
}
[class days initials]
can be any letter of an user-defined week abbreviations characters. For instance, you can treat your week like a piano, and put A
,B
,C
,D
,E
,F
,G
as abbreviations for monday,tuesday,...,sunday. One sensible choice (and the default choice) are the labels MTWRFSD
, Monday, Tuesday, Wednesday, ThuRsday, Friday, Saturday, SunDay. Sunday is usually ommited, as it is not likely that you have some fixed thing to do that day. Days labels count from monday for that reason.
[start time]
and [end time]
can be hour strings such as "11:00"
. By default, a 24-hour clock is assumed. You can specify am or pm: "11:00pm"
. Minutes are optional "11"
, "3pm"
, and seconds are allowed just for fun: "11:59:59am"
. Pretty much the only restriction is no spaces allowed, and a separating '-'
.
You can include multiple days on the same hour. These are equivalent:
{
"my favorite class":{
"MW":"1pm-2pm"
}
}
{
"my favorite class":{
"M":"1pm-2pm",
"W":"1pm-2pm"
}
}
This syntax allows a class with different days and hours, and you still could write the repeated days together. For examaple, let's say you have a class with two magistral sessions and one lab session.
{
"Fungi lectures":{
"TR":"8-9:30", // Tuesday and Thursday cool fungi slideshows
"S":"2pm-5:15pm" // let's grow fungi on saturday
}
}
Like everything in JSON you separate your things with commas. Here is an example of a full schedule
{
"Fungi lectures":{
"TR":"8-9:30",
"S":"2pm-5:15pm"
},
"Acquire a taste for free form jazz":{
"MWF":"6pm-7:15pm"
},
"Shitpost masterclass with reddit entrepreneur":{
"MW":"11-12:30"
},
"frog and toad shenaniganry II":{
"TR":"10-11:45"
},
"childhood traumas with 4chan experts":{
"TWRF":"13-15"
}
}
You can found it in ./tests/test.json
. Then you go to python
>>> from week_schedule import schedule_figure
>>> schedule_figure("./tests/test.json").savefig("./tests/test.png")
which results in
schedule_figure
parameters
You can pass parameters to control various visual styles:
schedule_path
: path of the.json
fileday_names
: ordered names of the weekdays. Defaults are"MTWRFS"
font_dict
: additional font tweaks; the same keyword arguments accepted by matplotlib.pyplot.text. Defaults used by this function are:- fontweight: bold
- horizontalalignment: center
- verticalalignment: center
- fontsize: 7
- color: white
text_stroke
outward black stroke for better reading of the text on all background colors. Default isTrue
major_minor_intervals
: interval of major and minor ticks, in hours. Defaults are 1 hour for major ticks and 15 minutes (1/4 hour) for minor ticks. Major tickss interval must be an integer number of hours, else aValueError
is raised.cmap_name
: color palette to use on the subject backgrounds. Default is"plasma"
. Options are in the matplotlib docs for colormap reference.cmap_range
: min and max output range of the colormap. In other words, portion of the colors to use. Default is(0,0.9)
, almost the full range of colors ((0,1)
).
TODOs
- extend JSON format to allow optional hex colors and fontsizes for each subject. Currently the only two options if one of the classes names is too long are:
- Use abbreviations
- Change the global fontsize on
font_dict
- add checks for conflicting class hours
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 week_schedule-2.2.tar.gz
.
File metadata
- Download URL: week_schedule-2.2.tar.gz
- Upload date:
- Size: 6.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.1 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b41e3e65ac559b9412bcb0a57233c20e2d5980f9b3e382cf3920fbea128eaa6b |
|
MD5 | 66b795a545eb2ad38029f5dea7dedb6c |
|
BLAKE2b-256 | 08f12015a0ca4334e7282ec299b6ec7a4ad764ee5aaae1ac81be3b86665417cb |
File details
Details for the file week_schedule-2.2-py3-none-any.whl
.
File metadata
- Download URL: week_schedule-2.2-py3-none-any.whl
- Upload date:
- Size: 7.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.1 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c197975d224475303ffee7c85399b698f973b7f016ef4b15216eb636621b1f4 |
|
MD5 | 4eb5f135471ecd372e083901593d02ac |
|
BLAKE2b-256 | ce1dd7bdda17b3a0177bed6546b4a747ef576a33ecd3eb1073d5bc60d6942125 |