<emclass="property"><spanclass="pre">class</span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">inkycal.main.</span></span><spanclass="sig-name descname"><spanclass="pre">Inkycal</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">settings_path</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">str</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">render</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">bool</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">True</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">use_pi_sugar</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">bool</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">False</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">shutdown_after_run</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">bool</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.main.Inkycal"title="Link to this definition"></a></dt>
<spanclass="sig-name descname"><spanclass="pre">calibrate</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">cycles</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">3</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.main.Inkycal.calibrate"title="Link to this definition"></a></dt>
<spanclass="sig-name descname"><spanclass="pre">countdown</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">interval_mins</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">int</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">int</span></span></span><aclass="headerlink"href="#inkycal.main.Inkycal.countdown"title="Link to this definition"></a></dt>
<spanclass="sig-name descname"><spanclass="pre">dry_run</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.main.Inkycal.dry_run"title="Link to this definition"></a></dt>
<spanclass="sig-name descname"><spanclass="pre">process_module</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">number</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">bool</span></span></span><aclass="headerlink"href="#inkycal.main.Inkycal.process_module"title="Link to this definition"></a></dt>
<dd><p>Process individual module to generate images and handle exceptions.</p>
<emclass="property"><spanclass="pre">async</span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">run</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">run_once</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">False</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.main.Inkycal.run"title="Link to this definition"></a></dt>
<dd><p>Runs main program in nonstop mode or a single iteration based on the run_once flag.</p>
<dlclass="simple">
<dt>Args:</dt><dd><dlclass="simple">
<dt>run_once (bool): If True, runs the updating process once and stops. If False,</dt><dd><p>runs indefinitely.</p>
</dd>
</dl>
</dd>
</dl>
<p>Uses an infinity loop to run Inkycal nonstop or a single time based on run_once.
Inkycal generates the image from all modules, assembles them in one image,
refreshes the E-Paper and then sleeps until the next scheduled update or exits.</p>
<spanid="custom-functions"></span><h1>Custom functions<aclass="headerlink"href="#module-inkycal.custom.functions"title="Link to this heading"></a></h1>
<spanclass="sig-prename descclassname"><spanclass="pre">inkycal.custom.functions.</span></span><spanclass="sig-name descname"><spanclass="pre">auto_fontsize</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">font</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">max_height</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.custom.functions.auto_fontsize"title="Link to this definition"></a></dt>
<dd><p>Scales a given font to 80% of max_height.</p>
<p>Gets the height of a font and scales it until 80% of the max_height
is filled.</p>
<dlclass="simple">
<dt>Args:</dt><dd><ulclass="simple">
<li><p>font: A PIL Font object.</p></li>
<li><p>max_height: An integer representing the height to adjust the font to
which the given font should be scaled to.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>A PIL font object with modified height.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">inkycal.custom.functions.</span></span><spanclass="sig-name descname"><spanclass="pre">draw_border</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="pre">image:</span><spanclass="pre"><module</span><spanclass="pre">'PIL.Image'</span><spanclass="pre">from</span><spanclass="pre">'/home/runner/work/Inkycal/Inkycal/venv/lib/python3.11/site-packages/PIL/Image.py'>,</span><spanclass="pre">xy:</span><spanclass="pre">~typing.Tuple[int,</span><spanclass="pre">int],</span><spanclass="pre">size:</span><spanclass="pre">~typing.Tuple[int,</span><spanclass="pre">int],</span><spanclass="pre">radius:</span><spanclass="pre">int</span><spanclass="pre">=</span><spanclass="pre">5,</span><spanclass="pre">thickness:</span><spanclass="pre">int</span><spanclass="pre">=</span><spanclass="pre">1,</span><spanclass="pre">shrinkage:</span><spanclass="pre">~typing.Tuple[int,</span><spanclass="pre">int]</span><spanclass="pre">=</span><spanclass="pre">(0.1,</span><spanclass="pre">0.1)</span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">None</span></span></span><aclass="headerlink"href="#inkycal.custom.functions.draw_border"title="Link to this definition"></a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">inkycal.custom.functions.</span></span><spanclass="sig-name descname"><spanclass="pre">get_fonts</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.custom.functions.get_fonts"title="Link to this definition"></a></dt>
<dd><p>Print all available fonts by name.</p>
<p>Searches the /font folder in Inkycal and displays all fonts found in
there.</p>
<dl>
<dt>Returns:</dt><dd><p>printed output of all available fonts. To access a fontfile, use the
<spanclass="sig-prename descclassname"><spanclass="pre">inkycal.custom.functions.</span></span><spanclass="sig-name descname"><spanclass="pre">get_system_tz</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">str</span></span></span><aclass="headerlink"href="#inkycal.custom.functions.get_system_tz"title="Link to this definition"></a></dt>
<spanclass="gp">>>></span><spanclass="nb">print</span><spanclass="p">(</span><spanclass="n">arrow</span><spanclass="o">.</span><spanclass="n">now</span><spanclass="p">(</span><spanclass="n">tz</span><spanclass="o">=</span><spanclass="n">get_system_tz</span><spanclass="p">()))</span><spanclass="c1"># prints timezone aware time.</span>
<spanclass="sig-prename descclassname"><spanclass="pre">inkycal.custom.functions.</span></span><spanclass="sig-name descname"><spanclass="pre">internet_available</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">bool</span></span></span><aclass="headerlink"href="#inkycal.custom.functions.internet_available"title="Link to this definition"></a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">inkycal.custom.functions.</span></span><spanclass="sig-name descname"><spanclass="pre">text_wrap</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">text</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">str</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">font</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">max_width</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.custom.functions.text_wrap"title="Link to this definition"></a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">inkycal.custom.functions.</span></span><spanclass="sig-name descname"><spanclass="pre">write</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="pre">image:</span><spanclass="pre"><module</span><spanclass="pre">'PIL.Image'</span><spanclass="pre">from</span><spanclass="pre">'/home/runner/work/Inkycal/Inkycal/venv/lib/python3.11/site-packages/PIL/Image.py'>,</span><spanclass="pre">xy:</span><spanclass="pre">~typing.Tuple[int,</span><spanclass="pre">int],</span><spanclass="pre">box_size:</span><spanclass="pre">~typing.Tuple[int,</span><spanclass="pre">int],</span><spanclass="pre">text:</span><spanclass="pre">str,</span><spanclass="pre">font=None,</span><spanclass="pre">**kwargs</span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.custom.functions.write"title="Link to this definition"></a></dt>
<spanid="helper-classes"></span><h1>Helper classes<aclass="headerlink"href="#module-inkycal.modules.ical_parser"title="Link to this heading"></a></h1>
<emclass="property"><spanclass="pre">class</span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">inkycal.modules.ical_parser.</span></span><spanclass="sig-name descname"><spanclass="pre">iCalendar</span></span><aclass="headerlink"href="#inkycal.modules.ical_parser.iCalendar"title="Link to this definition"></a></dt>
<dd><p>iCalendar parsing moudule for inkycal.
Parses events from given iCalendar URLs / paths</p>
<emclass="property"><spanclass="pre">static</span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">all_day</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">event</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.modules.ical_parser.iCalendar.all_day"title="Link to this definition"></a></dt>
<spanclass="sig-name descname"><spanclass="pre">clear_events</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.modules.ical_parser.iCalendar.clear_events"title="Link to this definition"></a></dt>
<spanclass="sig-name descname"><spanclass="pre">get_events</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">timeline_start</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">timeline_end</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">timezone</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.modules.ical_parser.iCalendar.get_events"title="Link to this definition"></a></dt>
<dd><p>Input an arrow (time) object for:
* the beginning of timeline (events have to end after this time)
* the end of the timeline (events have to begin before this time)
* timezone if events should be formatted to local time
<emclass="property"><spanclass="pre">static</span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">get_system_tz</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.modules.ical_parser.iCalendar.get_system_tz"title="Link to this definition"></a></dt>
<spanclass="sig-name descname"><spanclass="pre">load_from_file</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">filepath</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.modules.ical_parser.iCalendar.load_from_file"title="Link to this definition"></a></dt>
<dd><p>Input a string or list of strings containing valid iCalendar filepaths
example: ‘path1’ (single file) OR [‘path1’, ‘path2’] (multiple files)
<spanclass="sig-name descname"><spanclass="pre">load_url</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">url</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">username</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">password</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.modules.ical_parser.iCalendar.load_url"title="Link to this definition"></a></dt>
<dd><p>Input a string or list of strings containing valid iCalendar URLs
example: ‘URL1’ (single url) OR [‘URL1’, ‘URL2’] (multiple URLs)
add username and password to access protected files</p>
<spanclass="sig-name descname"><spanclass="pre">show_events</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">fmt</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">'DD</span><spanclass="pre">MMM</span><spanclass="pre">YY</span><spanclass="pre">HH:mm'</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.modules.ical_parser.iCalendar.show_events"title="Link to this definition"></a></dt>
<dd><p>print all parsed events in a more readable way
use the format (fmt) parameter to specify the date format
see <aclass="reference external"href="https://arrow.readthedocs.io/en/latest/#supported-tokens">https://arrow.readthedocs.io/en/latest/#supported-tokens</a>
<spanclass="sig-name descname"><spanclass="pre">sort</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.modules.ical_parser.iCalendar.sort"title="Link to this definition"></a></dt>
<dd><p>Sort all parsed events in order of beginning time</p>
</dd></dl>
</dd></dl>
<pid="module-inkycal.modules.inky_image">Custom image class for Inkycal Project
Takes care of handling images. Made to be used by other modules to handle
<emclass="property"><spanclass="pre">class</span><spanclass="w"></span></em><spanclass="sig-prename descclassname"><spanclass="pre">inkycal.modules.inky_image.</span></span><spanclass="sig-name descname"><spanclass="pre">Inkyimage</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">image</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.modules.inky_image.Inkyimage"title="Link to this definition"></a></dt>
<dd><p>Custom Imgae class written for commonly used image operations.</p>
<spanclass="sig-name descname"><spanclass="pre">autoflip</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">layout</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">str</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">None</span></span></span><aclass="headerlink"href="#inkycal.modules.inky_image.Inkyimage.autoflip"title="Link to this definition"></a></dt>
<dd><p>flips the image automatically to the given layout.</p>
<dlclass="simple">
<dt>Args:</dt><dd><ulclass="simple">
<li><p>layout:-> str. Choose <cite>horizontal</cite> or <cite>vertical</cite>.</p></li>
</ul>
</dd>
</dl>
<p>Checks the image’s width and height.</p>
<p>In horizontal mode, the image is flipped if the image height is greater
than the image width.</p>
<p>In vertical mode, the image is flipped if the image width is greater
<spanclass="sig-name descname"><spanclass="pre">clear</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.modules.inky_image.Inkyimage.clear"title="Link to this definition"></a></dt>
<dd><p>Removes currently saved image if present.</p>
<spanclass="sig-name descname"><spanclass="pre">flip</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">angle</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.modules.inky_image.Inkyimage.flip"title="Link to this definition"></a></dt>
<dd><p>Flips the image by the given angle.</p>
<dlclass="simple">
<dt>Args:</dt><dd><ulclass="simple">
<li><p>angle:->int. A multiple of 90, e.g. 90, 180, 270, 360.</p></li>
<spanclass="sig-name descname"><spanclass="pre">load</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">path</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">str</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><spanclass="pre">None</span></span></span><aclass="headerlink"href="#inkycal.modules.inky_image.Inkyimage.load"title="Link to this definition"></a></dt>
<emclass="property"><spanclass="pre">static</span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">merge</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">image1</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">image2</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.modules.inky_image.Inkyimage.merge"title="Link to this definition"></a></dt>
<dd><p>Merges two images into one.</p>
<p>Replaces white pixels of the first image with transparent ones. Then pastes
the first image on the second one.</p>
<dlclass="simple">
<dt>Args:</dt><dd><ulclass="simple">
<li><p>image1: A PIL Image object in ‘RGBA’ mode.</p></li>
<li><p>image2: A PIL Image object in ‘RGBA’ mode.</p></li>
<emclass="property"><spanclass="pre">static</span><spanclass="w"></span></em><spanclass="sig-name descname"><spanclass="pre">preview</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">image</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.modules.inky_image.Inkyimage.preview"title="Link to this definition"></a></dt>
<dd><p>Previews an image on gpicview (only works on Rapsbian with Desktop).</p>
<spanclass="sig-name descname"><spanclass="pre">remove_alpha</span></span><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.modules.inky_image.Inkyimage.remove_alpha"title="Link to this definition"></a></dt>
<dd><p>Removes transparency if image has transparency.</p>
<p>Checks if an image has an alpha band and replaces the transparency with
<spanclass="sig-name descname"><spanclass="pre">resize</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">width</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">height</span></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.modules.inky_image.Inkyimage.resize"title="Link to this definition"></a></dt>
<dd><p>Resize an image to desired width or height</p>
<spanclass="sig-prename descclassname"><spanclass="pre">inkycal.modules.inky_image.</span></span><spanclass="sig-name descname"><spanclass="pre">image_to_palette</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="pre">image:</span><spanclass="pre"><module</span><spanclass="pre">'PIL.Image'</span><spanclass="pre">from</span><spanclass="pre">'/home/runner/work/Inkycal/Inkycal/venv/lib/python3.11/site-packages/PIL/Image.py'>,</span><spanclass="pre">palette:</span><spanclass="pre">~typing.Literal</span><spanclass="pre">=</span><spanclass="pre">['bwr',</span><spanclass="pre">'bwy',</span><spanclass="pre">'bw',</span><spanclass="pre">'16gray'],</span><spanclass="pre">dither:</span><spanclass="pre">bool</span><spanclass="pre">=</span><spanclass="pre">True)</span><spanclass="pre">-></span><spanclass="pre">(<module</span><spanclass="pre">'PIL.Image'</span><spanclass="pre">from</span><spanclass="pre">'/home/runner/work/Inkycal/Inkycal/venv/lib/python3.11/site-packages/PIL/Image.py'>,</span><spanclass="pre"><module</span><spanclass="pre">'PIL.Image'</span><spanclass="pre">from</span><spanclass="pre">'/home/runner/work/Inkycal/Inkycal/venv/lib/python3.11/site-packages/PIL/Image.py'></span></em><spanclass="sig-paren">)</span><aclass="headerlink"href="#inkycal.modules.inky_image.image_to_palette"title="Link to this definition"></a></dt>