# packages

pkgId: d809136bd9a579b090778966e56f6a837f455b0047edf692baa53966ebc7baca
name: python3-pympress
arch: noarch
version: 1.7.0
epoch: 0
release: 5
summary: A simple and powerful dual-screen PDF reader designed for presentations
url: https://github.com/Cimbali/pympress/
rpm_license: GPL-2.0-or-later
rpm_vendor: Cimbali, Thomas Jost, Christof Rath, Epithumia <me@cimba.li>
rpm_group: Unspecified
rpm_buildhost: fedora
rpm_sourcerpm: python3-pympress-1.7.0-5.src.rpm
location_href: 02989234-python3-pympress/python3-pympress-1.7.0-5.noarch.rpm
checksum_type: sha256
description:
  Pympress is a PDF presentation tool designed for dual-screen setups such as presentations and public talks.
  Highly configurable, fully-featured, and portable

  It comes with many great features ([more below](#functionalities)):
  - supports embedded gifs (out of the box), videos, and audios (with VLC or Gstreamer integration)
  - text annotations displayed in the presenter window
  - natively supports beamer's *notes on second screen*, as well as Libreoffice notes pages!

  Pympress is a free software, distributed under the terms of the GPL license (version 2 or, at your option, any later version).

  Pympress was originally created and maintained by [Schnouki](https://github.com/Schnouki), on [his repo](https://github.com/Schnouki/pympress).

  Here is what the 2 screen setup looks like, with a big notes slide next to 2 small slides (current and next) on the presenter side:
  ![A screenshot with Pympress’ 2 screens](https://cimbali.github.io/pympress/resources/pympress-screenshot.png)




  Simply start Pympress and it will ask you what file you want to open.
  You can also start pympress from the command line with a file to open like so:
  `pympress slides.pdf`
  or
  `python3 -m pympress slides.pdf`



  All functionalities are available from the menus of the window with slide previews. Don't be afraid to experiment with them!

  Keyboard shortcuts are also listed in these menus. Some more usual shortcuts are often available, for example `Ctrl`+`L`, and `F11` also toggle fullscreen, though the main shortcut is just `F`.

  A few of the fancier functionalities are listed here:
  - **Two-screen display**: See on your laptop or tablet display the current slide, the next slide, the talk time and wall-clock time, and annotations (either PDF annotations, beamer notes on second slide, or Libreoffice notes pages).
    The position of the beamer or Libreoffice notes in the slide is detected automatically and can be overridden via a menu option.
  - **Media support**: supports playing video, audio, and gif files embedded in (or linked from) the PDF file.
  - **Highlight mode**: Allows one to draw freehand on the slide currently on screen.
  - **Go To Slide**: To jump to a selected slide without flashing through the whole presentation on the projector, press `G` or click the "current  slide" box.
    Using `J` or clicking the slide label will allow you to navigate slide labels instead of page numbers, useful e.g. for multi-page slides from beamer `\pause`.

    A spin box will appear, and you will be able to navigate through your slides in the presenter window only by scrolling your mouse, with the `Home`/`Up`/`Down`/`End` keys,
    with the + and - buttons of the spin box, or simply by typing in the number of the slide. Press `Enter` to validate going to the new slide or `Esc` to cancel.

  - **Software pointer**: Clicking on the slide (in either window) while holding `ctrl` down will display a software laser pointer on the slide. Or press `L` to permanently switch on the laser pointer.
  - **Talk time breakdown**: The `Presentation > Timing Breakdown` menu item displays a breakdown of how much time was spent on each slide, with a hierarchical breakdown per chapters/sections/etc. if available in the PDF.
  - **Automatic file reloading**: If the file is modified, pympress will reload it (and preserve the current slide, current time, etc.)
  - **Big button mode**: Add big buttons (duh) for touch displays.
  - **Swap screens**: If Pympress mixed up which screen is the projector and which is not, press `S`
  - **Estimated talk time**: Click the `Time estimation` box and set your planned talk duration. The color will allow you to see at a glance how much time you have left.
  - **Adjust screen centering**: If your slides' form factor doesn't fit the projectors' and you don't want the slide centered in the window, use the "Screen Center" option in the "Presentation" menu.
  - **Resize Current/Next slide**: You can drag the bar between both slides on the Presenter window to adjust their relative sizes to your liking.
  - **Preferences**: Some of your choices are saved in a configuration file, and more options are accessible there. See the [configuration file documentation](docs/options.md) for more details.
  - **Caching**: For efficiency, Pympress caches rendered pages (up to 200 by default). If this is too memory consuming for you, you can change this number in the configuration file.
  - **Configurability**: Layout of presenter window dynamically configurable, with 1 to 16 next slides preview
  - **Editable PDF annotations**: Annotations can be added, removed, or changed, and the modified PDF files can be saved
  - **Automatic next slide and looping**



  -  `-h, --help`: Shows a list of all command line arguments.
  - `-t mm[:ss], --talk-time=mm[:ss]`: The estimated (intended) talk time in minutes and optionally seconds.
  - `-n position, --notes=position`: Set the position of notes on the pdf page (none, left, right, top, or bottom). Overrides the detection from the file.
  - `--log=level`: Set level of verbosity in log file (DEBUG, INFO, WARNING, ERROR).



  To enable media playback, you need to have either:
  - Gstreamer installed (enabled by default), with plugins gstreamer-good/-bad/-ugly based on which codecs you need, or
  - VLC installed (and the python-vlc module), with `enabled = on` under the `[vlc]` section of your config file.

  To produce PDFs with media inclusion, the ideal method is to use beamer’s multimedia package, always with `\movie`:

  ```latex
  \documentclass{beamer}
  \usepackage{multimedia}

  \begin{frame}{Just a mp4 here}
      \centering
      \movie[width=0.3\textwidth]{\includegraphics[width=0.9\textwidth]{frame1.png}}{movie.mp4}

      \movie[width=0.3\textwidth]{}{animation.gif}

      \movie[width=0.3\textwidth]{}{ding.ogg}
  \end{frame}
  ```

  If you desire autoplay, ensure you have pympress ≥ 1.7.0 and poppler ≥ 21.04, and use the `movie15` package as follows:

  ```latex
  \documentclass{beamer}
  \usepackage{movie15}
  \begin{document}

  \begin{frame}
    \begin{center}
      \includemovie[attach=false,autoplay,text={%
          \includegraphics{files/mailto.png}%
        }]{0.4\linewidth}{0.3\linewidth}{files/random.mpg}
    \end{center}
  \end{frame}

  \end{document}
  ```



  Pympress relies on:
  * Python (version ≥ 3.4, python 2.7 is supported only until pympress 1.5.1, and 3.x < 3.4 until v1.6.4).
  * [Poppler](http://poppler.freedesktop.org/), the PDF rendering library.
  * [Gtk+ 3](http://www.gtk.org/), a toolkit for creating graphical user interfaces, and [its dependencies](https://www.gtk.org/overview.php), specifically:
    * [Cairo](https://www.cairographics.org/) (and python bindings for cairo), the graphics library which is used to pre-render and draw over PDF pages.
    * Gdk, a lower-level graphics library to handle icons.
  * [PyGi, the python bindings for Gtk+3](https://wiki.gnome.org/Projects/PyGObject). PyGi is also known as *pygobject3*, just *pygobject* or *python3-gi*.
    * Introspection bindings for poppler may be shipped separately, ensure you have those as well (`typelib-1_0-Poppler-0_18` on OpenSUSE, `gir1.2-poppler-0.18` on Ubuntu)
  * optionally [VLC](https://www.videolan.org/vlc/), to play videos (with the same bitness as Python)
    and the [python-vlc](https://pypi.org/project/python-vlc/) bindings.
  * optionally Gstreamer to play videos (which is a Gtk library)


  The dependencies are often installed by default, or easily available through your package or software manager.
  For example, on ubuntu, you can run the following as root to make sure you have all the prerequisites *assuming you use python3*:

  ```sh
  apt-get install python3 python3-pip libgtk-3-0 libpoppler-glib8 libcairo2 python3-gi python3-cairo python3-gi-cairo gobject-introspection libgirepository-1.0-1 libgirepository1.0-dev gir1.2-gtk-3.0 gir1.2-poppler-0.18
  ```

  Different distributions might have different package naming conventions, for example the equivalent on OpenSUSE would be:

  ```sh
  zypper install python3 python3-pip libgtk-3-0 libpoppler-glib8 libcairo2 python3-gobject python3-gobject-Gdk python3-cairo python3-gobject-cairo typelib-1_0-GdkPixbuf-2_0 typelib-1_0-Gtk-3_0 typelib-1_0-Poppler-0_18
  ```

  On CentOS/RHEL/Fedora the dependencies would be:

  ```sh
  yum install python36 python3-pip gtk3 poppler-glib cairo gdk-pixbuf2 python3-gobject python3-cairo
  ```

  And on Arch Linux:

  ```sh
  pacman -S --needed python python-pip gtk3 poppler cairo gobject-introspection poppler-glib python-gobject
  ```




  Dependencies can be installed using [Homebrew](https://brew.sh/):

  ```sh
  brew install --only-dependencies pympress
  ```


  The [binary installer for windows](#installing) comes with pympress and all its dependencies packaged.

  Alternately, in order to install from pypi or from source on windows, there are two ways to get the dependencies:

  1. using MSYS2 (replace x86_64 with i686 if you're using a 32 bit machine).

     **Warning:** this can take a substantial amount of disk size as it requires a full software distribution and building platform.

      ```sh
      pacman -S --needed mingw-w64-x86_64-gtk3 mingw-w64-x86_64-cairo mingw-w64-x86_64-poppler mingw-w64-x86_64-python3 mingw-w64-x86_64-vlc python3-pip mingw-w64-x86_64-python3-pip mingw-w64-x86_64-python3-gobject mingw-w64-x86_64-python3-cairo
      ```

      This is also the strategy used to automate [builds on appveyor](https://github.com/Cimbali/pympress/tree/master/scripts/build_msi_mingw.sh).

  2. Using PyGobjectWin32. *Be sure to check the supported Python versions (up to 3.4 at the time of writing)*, they appear in the FEATURES list in the linked page.
    - Install native [python for windows](https://www.python.org/downloads/windows/)
    - Get GTK+3, Poppler and their python bindings by executing [the PyGi installer](https://sourceforge.net/projects/pygobjectwin32/).  Be sure to tick all the necessary dependencies in the installer (Poppler, Cairo, Gdk-Pixbuf).

  Alternately, you can build your Gtk+3 stack from source using MSVC, see [the Gnome wiki](https://wiki.gnome.org/Projects/GTK+/Win32/MSVCCompilationOfGTKStack) and [this python script that compiles the whole Gtk+3 stack](https://github.com/wingtk/gvsbuild/).
  This strategy has not been used successfully yet, due to problems building Poppler with its introspection bidings (i.e. typelib) − see [#109](https://github.com/Cimbali/pympress/issues/109).



  Feel free to clone this repo and use it, modify it, redistribute it, etc, under the GPLv2+.
  A [number of contributors](https://github.com/Cimbali/pympress/graphs/contributors) have taken part in the development of pympress and submitted pull requests to improve it.

  **Be respectful of everyone and keep this community friendly, welcoming, and harrasment-free.
  Abusive behaviour will not be tolerated, and can be reported by email at me@cimba.li − wrongdoers may be permanently banned.**

  Pympress has inline sphinx documentation ([Google style](http://www.sphinx-doc.org/en/latest/ext/example_google.html), contains rst syntax), and the [docs generated from it are hosted on the github pages of this repo](https://cimbali.github.io/pympress/).



  ![Czech](https://img.shields.io/poeditor/progress/301055/cs?token=7a666b44c0985d16a7b59748f488275c&label=%F0%9F%87%A8%F0%9F%87%BF%20Czech)
  ![French](https://img.shields.io/poeditor/progress/301055/fr?token=7a666b44c0985d16a7b59748f488275c&label=%F0%9F%87%AB%F0%9F%87%B7%20French)
  ![German](https://img.shields.io/poeditor/progress/301055/de?token=7a666b44c0985d16a7b59748f488275c&label=%F0%9F%87%A9%F0%9F%87%AA%20German)
  ![Polish](https://img.shields.io/poeditor/progress/301055/pl?token=7a666b44c0985d16a7b59748f488275c&label=%F0%9F%87%B5%F0%9F%87%B1%20Polish)
  ![Spanish](https://img.shields.io/poeditor/progress/301055/es?token=7a666b44c0985d16a7b59748f488275c&label=%F0%9F%87%AA%F0%9F%87%B8%20Spanish)
  ![Italian](https://img.shields.io/poeditor/progress/301055/it?token=7a666b44c0985d16a7b59748f488275c&label=%F0%9F%87%AE%F0%9F%87%B9%20Italian)
  <!--
  ![Portuguese (Brazil)](https://img.shields.io/poeditor/progress/301055/pt-br?token=7a666b44c0985d16a7b59748f488275c&label=%20%F0%9F%87%A7%F0%9F%87%B7%20Portuguese%20%28Brazil%29)
  ![Japanese](https://img.shields.io/poeditor/progress/301055/ja?token=7a666b44c0985d16a7b59748f488275c&label=%F0%9F%87%AF%F0%9F%87%B5%20Japanese)
  -->

  If you want to add or contribute to a translation, check [pympress’ page on POEditor](https://poeditor.com/join/project/nKfRxeN8pS) and add your efforts to make pympress available in your own language to those of
  [@Vulpeculus](https://github.com/Vulpeculus),
  [@polaksta](https://github.com/polaksta),
  [@susobaco](https://github.com/susobaco),
  Agnieszka,
  Ferdinand Fichtner,
  [FriedrichFröbel](https://github.com/FriedrichFroebel),
  [Jaroslav Svoboda](https://github.com/multiflexi),
  Jeertmans,
  Kristýna,
  Lorenzo. pacchiardi,
  Luis Sibaja,
  Nico,
  Saulpierotti,
  and <!-- last translator --> Cimbali.



  Official releases are made to [PyPI](https://pypi.org/) and with [github releases](https://github.com/Cimbali/pympress/releases).
  The community maintains a number of other packages or recipes to install pympress (see [Install section](#installing-)). Any additions welcome.


pkgId: 551a5e25361fc83468fb6bc0d1b7a9d61b144db8016acd7f3abb23e3d2417a9c
name: python3-watchdog
arch: noarch
version: 2.1.6
epoch: 0
release: 2
summary: Filesystem events monitoring
url: https://github.com/gorakhargosh/watchdog
rpm_license: Apache License 2.0
rpm_vendor: Yesudeep Mangalapilly <yesudeep@gmail.com>
rpm_group: Unspecified
rpm_buildhost: fedora
rpm_sourcerpm: python3-watchdog-2.1.6-2.src.rpm
location_href: 02987202-python3-watchdog/python3-watchdog-2.1.6-2.noarch.rpm
checksum_type: sha256
description:
  Watchdog
  ========

  |Build Status|
  |CirrusCI Status|

  Python API and shell utilities to monitor file system events.

  Works on 3.6+.

  If you want to use Python 2.6, you should stick with watchdog < 0.10.0.

  If you want to use Python 2.7, 3.4 or 3.5, you should stick with watchdog < 1.0.0.

  Example API Usage
  -----------------

  A simple program that uses watchdog to monitor directories specified
  as command-line arguments and logs events generated:

  .. code-block:: python

      import sys
      import time
      import logging
      from watchdog.observers import Observer
      from watchdog.events import LoggingEventHandler

      if __name__ == "__main__":
          logging.basicConfig(level=logging.INFO,
                              format='%(asctime)s - %(message)s',
                              datefmt='%Y-%m-%d %H:%M:%S')
          path = sys.argv[1] if len(sys.argv) > 1 else '.'
          event_handler = LoggingEventHandler()
          observer = Observer()
          observer.schedule(event_handler, path, recursive=True)
          observer.start()
          try:
              while True:
                  time.sleep(1)
          finally:
              observer.stop()
              observer.join()


  Shell Utilities
  ---------------

  Watchdog comes with an *optional* utility script called ``watchmedo``.
  Please type ``watchmedo --help`` at the shell prompt to
  know more about this tool.

  Here is how you can log the current directory recursively
  for events related only to ``*.py`` and ``*.txt`` files while
  ignoring all directory events:

  .. code-block:: bash

      watchmedo log \
          --patterns="*.py;*.txt" \
          --ignore-directories \
          --recursive \
          .

  You can use the ``shell-command`` subcommand to execute shell commands in
  response to events:

  .. code-block:: bash

      watchmedo shell-command \
          --patterns="*.py;*.txt" \
          --recursive \
          --command='echo "${watch_src_path}"' \
          .

  Please see the help information for these commands by typing:

  .. code-block:: bash

      watchmedo [command] --help


  About ``watchmedo`` Tricks
  ~~~~~~~~~~~~~~~~~~~~~~~~~~

  ``watchmedo`` can read ``tricks.yaml`` files and execute tricks within them in
  response to file system events. Tricks are actually event handlers that
  subclass ``watchdog.tricks.Trick`` and are written by plugin authors. Trick
  classes are augmented with a few additional features that regular event handlers
  don't need.

  An example ``tricks.yaml`` file:

  .. code-block:: yaml

      tricks:
      - watchdog.tricks.LoggerTrick:
          patterns: ["*.py", "*.js"]
      - watchmedo_webtricks.GoogleClosureTrick:
          patterns: ['*.js']
          hash_names: true
          mappings_format: json                  # json|yaml|python
          mappings_module: app/javascript_mappings
          suffix: .min.js
          compilation_level: advanced            # simple|advanced
          source_directory: app/static/js/
          destination_directory: app/public/js/
          files:
            index-page:
            - app/static/js/vendor/jquery*.js
            - app/static/js/base.js
            - app/static/js/index-page.js
            about-page:
            - app/static/js/vendor/jquery*.js
            - app/static/js/base.js
            - app/static/js/about-page/**/*.js

  The directory containing the ``tricks.yaml`` file will be monitored. Each trick
  class is initialized with its corresponding keys in the ``tricks.yaml`` file as
  arguments and events are fed to an instance of this class as they arrive.

  Installation
  ------------
  Install from PyPI using ``pip``:

  .. code-block:: bash

      $ python -m pip install -U watchdog

      
      $ python -m pip install -U "watchdog[watchmedo]"

  Install from source:

  .. code-block:: bash

      $ python -m pip install -e .

      
      $ python -m pip install -e ".[watchmedo]"


  Installation Caveats
  ~~~~~~~~~~~~~~~~~~~~

  The ``watchmedo`` script depends on PyYAML_ which links with LibYAML_,
  which brings a performance boost to the PyYAML parser. However, installing
  LibYAML_ is optional but recommended. On macOS, you can use homebrew_
  to install LibYAML:

  .. code-block:: bash

      $ brew install libyaml

  On Linux, use your favorite package manager to install LibYAML. Here's how you
  do it on Ubuntu:

  .. code-block:: bash

      $ sudo apt install libyaml-dev

  On Windows, please install PyYAML_ using the binaries they provide.

  Documentation
  -------------

  You can browse the latest release documentation_ online.

  Contribute
  ----------

  Fork the `repository`_ on GitHub and send a pull request, or file an issue
  ticket at the `issue tracker`_. For general help and questions use the official
  `mailing list`_ or ask on `stackoverflow`_ with tag `python-watchdog`.

  Create and activate your virtual environment, then::

      python -m pip install pytest pytest-cov
      python -m pip install -e ".[watchmedo]"
      python -m pytest tests

  If you are making a substantial change, add an entry to the "Unreleased" section
  of the `changelog`_.

  Supported Platforms
  -------------------

  * Linux 2.6 (inotify)
  * macOS (FSEvents, kqueue)
  * FreeBSD/BSD (kqueue)
  * Windows (ReadDirectoryChangesW with I/O completion ports;
    ReadDirectoryChangesW worker threads)
  * OS-independent (polling the disk for directory snapshots and comparing them
    periodically; slow and not recommended)

  Note that when using watchdog with kqueue, you need the
  number of file descriptors allowed to be opened by programs
  running on your system to be increased to more than the
  number of files that you will be monitoring. The easiest way
  to do that is to edit your ``~/.profile`` file and add
  a line similar to::

      ulimit -n 1024

  This is an inherent problem with kqueue because it uses
  file descriptors to monitor files. That plus the enormous
  amount of bookkeeping that watchdog needs to do in order
  to monitor file descriptors just makes this a painful way
  to monitor files and directories. In essence, kqueue is
  not a very scalable way to monitor a deeply nested
  directory of files and directories with a large number of
  files.

  About using watchdog with editors like Vim
  ------------------------------------------

  Vim does not modify files unless directed to do so.
  It creates backup files and then swaps them in to replace
  the files you are editing on the disk. This means that
  if you use Vim to edit your files, the on-modified events
  for those files will not be triggered by watchdog.
  You may need to configure Vim appropriately to disable
  this feature.


  About using watchdog with CIFS
  ------------------------------

  When you want to watch changes in CIFS, you need to explicitly tell watchdog to
  use ``PollingObserver``, that is, instead of letting watchdog decide an
  appropriate observer like in the example above, do::

      from watchdog.observers.polling import PollingObserver as Observer


  Dependencies
  ------------

  1. Python 3.6 or above.
  2. XCode_ (only on macOS when installing from sources)
  3. PyYAML_ (only for ``watchmedo``)

  Licensing
  ---------

  Watchdog is licensed under the terms of the `Apache License, version 2.0`_.

  Copyright 2011 `Yesudeep Mangalapilly`_.

  Copyright 2012 Google, Inc & contributors.

  Project `source code`_ is available at Github. Please report bugs and file
  enhancement requests at the `issue tracker`_.

  Why Watchdog?
  -------------

  Too many people tried to do the same thing and none did what I needed Python
  to do:

  * pnotify_
  * `unison fsmonitor`_
  * fsmonitor_
  * guard_
  * pyinotify_
  * `inotify-tools`_
  * jnotify_
  * treewalker_
  * `file.monitor`_
  * pyfilesystem_

  .. links:
  .. _Yesudeep Mangalapilly: yesudeep@gmail.com
  .. _source code: https://github.com/gorakhargosh/watchdog
  .. _issue tracker: https://github.com/gorakhargosh/watchdog/issues
  .. _Apache License, version 2.0: https://www.apache.org/licenses/LICENSE-2.0
  .. _documentation: https://python-watchdog.readthedocs.io/
  .. _stackoverflow: https://stackoverflow.com/questions/tagged/python-watchdog
  .. _mailing list: https://groups.google.com/group/watchdog-python
  .. _repository: https://github.com/gorakhargosh/watchdog
  .. _issue tracker: https://github.com/gorakhargosh/watchdog/issues
  .. _changelog: https://github.com/gorakhargosh/watchdog/blob/master/changelog.rst

  .. _homebrew: https://brew.sh/
  .. _PyYAML: https://www.pyyaml.org/
  .. _XCode: https://developer.apple.com/technologies/tools/xcode.html
  .. _LibYAML: https://pyyaml.org/wiki/LibYAML

  .. _pnotify: http://mark.heily.com/pnotify
  .. _unison fsmonitor: https://webdav.seas.upenn.edu/viewvc/unison/trunk/src/fsmonitor.py?view=markup&pathrev=471
  .. _fsmonitor: https://github.com/shaurz/fsmonitor
  .. _guard: https://github.com/guard/guard
  .. _pyinotify: https://github.com/seb-m/pyinotify
  .. _inotify-tools: https://github.com/rvoicilas/inotify-tools
  .. _jnotify: http://jnotify.sourceforge.net/
  .. _treewalker: https://github.com/jbd/treewatcher
  .. _file.monitor: https://github.com/pke/file.monitor
  .. _pyfilesystem: https://github.com/PyFilesystem/pyfilesystem

  .. |Build Status| image:: https://github.com/gorakhargosh/watchdog/workflows/Tests/badge.svg
     :target: https://github.com/gorakhargosh/watchdog/actions?query=workflow%3ATests
  .. |CirrusCI Status| image:: https://api.cirrus-ci.com/github/gorakhargosh/watchdog.svg
     :target: https://cirrus-ci.com/github/gorakhargosh/watchdog/


  .. :changelog:

  Changelog
  ---------

  2.1.6
  ~~~~~

  2021-10-01 • `full history <https://github.com/gorakhargosh/watchdog/compare/v2.1.5...v2.1.6>`__

  - [bsd] Fixed returned paths in ``kqueue.py`` and restored the overall results of the test suite. (`#842 <https://github.com/gorakhargosh/watchdog/pull/842>`_)
  - [bsd] Updated FreeBSD CI support .(`#841 <https://github.com/gorakhargosh/watchdog/pull/841>`_)
  - [watchmedo] Removed the ``argh`` dependency in favor of the builtin ``argparse`` module. (`#836 <https://github.com/gorakhargosh/watchdog/pull/836>`_)
  - [watchmedo] Removed unexistant ``WindowsApiAsyncObserver`` references and ``--debug-force-winapi-async`` arguments.
  - [watchmedo] Improved the help output.
  - Thanks to our beloved contributors: @knobix, @AndreaRe9, @BoboTiG

  2.1.5
  ~~~~~

  2021-08-23 • `full history <https://github.com/gorakhargosh/watchdog/compare/v2.1.4...v2.1.5>`__

  - Fix regression introduced in 2.1.4 (reverted "Allow overriding or adding custom event handlers to event dispatch map. (`#814 <https://github.com/gorakhargosh/watchdog/pull/814>`_)"). (`#830 <https://github.com/gorakhargosh/watchdog/pull/830>`_)
  - Convert regexes of type ``str`` to ``list``. (`831 <https://github.com/gorakhargosh/watchdog/pull/831>`_)
  - Thanks to our beloved contributors: @unique1o1, @BoboTiG

  2.1.4
  ~~~~~

  2021-08-19 • `full history <https://github.com/gorakhargosh/watchdog/compare/v2.1.3...v2.1.4>`__

  - [watchmedo] Fix usage of ``os.setsid()`` and ``os.killpg()`` Unix-only functions. (`#809 <https://github.com/gorakhargosh/watchdog/pull/809>`_)
  - [mac] Fix missing ``FileModifiedEvent`` on permission or ownership changes of a file. (`#815 <https://github.com/gorakhargosh/watchdog/pull/815>`_)
  - [mac] Convert absolute watch path in ``FSEeventsEmitter`` with ``os.path.realpath()``. (`#822 <https://github.com/gorakhargosh/watchdog/pull/822>`_)
  - Fix a possible ``AttributeError`` in ``SkipRepeatsQueue._put()``. (`#818 <https://github.com/gorakhargosh/watchdog/pull/818>`_)
  - Allow overriding or adding custom event handlers to event dispatch map. (`#814 <https://github.com/gorakhargosh/watchdog/pull/814>`_)
  - Fix tests on big endian platforms. (`#828 <https://github.com/gorakhargosh/watchdog/pull/828>`_)
  - Thanks to our beloved contributors: @replabrobin, @BoboTiG, @SamSchott, @AndreiB97, @NiklasRosenstein, @ikokollari, @mgorny

  2.1.3
  ~~~~~

  2021-06-26 • `full history <https://github.com/gorakhargosh/watchdog/compare/v2.1.2...v2.1.3>`__

  - Publish macOS ``arm64`` and ``universal2`` wheels. (`#740 <https://github.com/gorakhargosh/watchdog/pull/740>`_)
  - Thanks to our beloved contributors: @kainjow, @BoboTiG

  2.1.2
  ~~~~~

  2021-05-19 • `full history <https://github.com/gorakhargosh/watchdog/compare/v2.1.1...v2.1.2>`__

  - [mac] Fix relative path handling for non-recursive watch. (`#797 <https://github.com/gorakhargosh/watchdog/pull/797>`_)
  - [windows] On PyPy, events happening right after ``start()`` were missed. Add a workaround for that. (`#796 <https://github.com/gorakhargosh/watchdog/pull/796>`_)
  - Thanks to our beloved contributors: @oprypin, @CCP-Aporia, @BoboTiG

  2.1.1
  ~~~~~

  2021-05-10 • `full history <https://github.com/gorakhargosh/watchdog/compare/v2.1.0...v2.1.1>`__

  - [mac] Fix callback exceptions when the watcher is deleted but still receiving events (`#786 <https://github.com/gorakhargosh/watchdog/pull/786>`_)
  - Thanks to our beloved contributors: @rom1win, @BoboTiG, @CCP-Aporia


  2.1.0
  ~~~~~

  2021-05-04 • `full history <https://github.com/gorakhargosh/watchdog/compare/v2.0.3...v2.1.0>`__

  - [inotify] Simplify ``libc`` loading (`#776 <https://github.com/gorakhargosh/watchdog/pull/776>`_)
  - [mac] Add support for non-recursive watches in ``FSEventsEmitter`` (`#779 <https://github.com/gorakhargosh/watchdog/pull/779>`_)
  - [watchmedo] Add support for ``--debug-force-*`` arguments to ``tricks`` (`#781 <https://github.com/gorakhargosh/watchdog/pull/781>`_)
  - Thanks to our beloved contributors: @CCP-Aporia, @aodj, @UnitedMarsupials, @BoboTiG


  2.0.3
  ~~~~~

  2021-04-22 • `full history <https://github.com/gorakhargosh/watchdog/compare/v2.0.2...v2.0.3>`__

  - [mac] Use ``logger.debug()`` instead of ``logger.info()`` (`#774 <https://github.com/gorakhargosh/watchdog/pull/774>`_)
  - Updated documentation links (`#777 <https://github.com/gorakhargosh/watchdog/pull/777>`_)
  - Thanks to our beloved contributors: @globau, @imba-tjd, @BoboTiG


  2.0.2
  ~~~~~

  2021-02-22 • `full history <https://github.com/gorakhargosh/watchdog/compare/v2.0.1...v2.0.2>`__

  - [mac] Add missing exception objects (`#766 <https://github.com/gorakhargosh/watchdog/pull/766>`_)
  - Thanks to our beloved contributors: @CCP-Aporia, @BoboTiG


  2.0.1
  ~~~~~

  2021-02-17 • `full history <https://github.com/gorakhargosh/watchdog/compare/v2.0.0...v2.0.1>`__

  - [mac] Fix a segmentation fault when dealing with unicode paths (`#763 <https://github.com/gorakhargosh/watchdog/pull/763>`_)
  - Moved the CI from Travis-CI to GitHub Actions (`#764 <https://github.com/gorakhargosh/watchdog/pull/764>`_)
  - Thanks to our beloved contributors: @SamSchott, @BoboTiG


  2.0.0
  ~~~~~

  2021-02-11 • `full history <https://github.com/gorakhargosh/watchdog/compare/v1.0.2...v2.0.0>`__

  - Avoid deprecated ``PyEval_InitThreads`` on Python 3.7+ (`#746 <https://github.com/gorakhargosh/watchdog/pull/746>`_)
  - [inotify] Add support for ``IN_CLOSE_WRITE`` events. A ``FileCloseEvent`` event will be fired. Note that ``IN_CLOSE_NOWRITE`` events are not handled to prevent much noise. (`#184 <https://github.com/gorakhargosh/watchdog/pull/184>`_, `#245 <https://github.com/gorakhargosh/watchdog/pull/245>`_, `#280 <https://github.com/gorakhargosh/watchdog/pull/280>`_, `#313 <https://github.com/gorakhargosh/watchdog/pull/313>`_, `#690 <https://github.com/gorakhargosh/watchdog/pull/690>`_)
  - [inotify] Allow to stop the emitter multiple times (`#760 <https://github.com/gorakhargosh/watchdog/pull/760>`_)
  - [mac] Support coalesced filesystem events (`#734 <https://github.com/gorakhargosh/watchdog/pull/734>`_)
  - [mac] Drop support for macOS 10.12 and earlier (`#750 <https://github.com/gorakhargosh/watchdog/pull/750>`_)
  - [mac] Fix an issue when renaming an item changes only the casing (`#750 <https://github.com/gorakhargosh/watchdog/pull/750>`_)
  - Thanks to our beloved contributors: @bstaletic, @lukassup, @ysard, @SamSchott, @CCP-Aporia, @BoboTiG


  1.0.2
  ~~~~~

  2020-12-18 • `full history <https://github.com/gorakhargosh/watchdog/compare/v1.0.1...v1.0.2>`__

  - Wheels are published for GNU/Linux, macOS and Windows (`#739 <https://github.com/gorakhargosh/watchdog/pull/739>`_)
  - [mac] Fix missing ``event_id`` attribute in ``fsevents`` (`#721 <https://github.com/gorakhargosh/watchdog/pull/721>`_)
  - [mac] Return byte paths if a byte path was given in ``fsevents`` (`#726` <https://github.com/gorakhargosh/watchdog/pull/726>`_)
  - [mac] Add compatibility with old macOS versions (`#733` <https://github.com/gorakhargosh/watchdog/pull/733>`_)
  - Uniformize event for deletion of watched dir (`#727 <https://github.com/gorakhargosh/watchdog/pull/727>`_)
  - Thanks to our beloved contributors: @SamSchott, @CCP-Aporia, @di, @BoboTiG


  1.0.1
  ~~~~~

  2020-12-10 • Fix version with good metadatas.


  1.0.0
  ~~~~~

  2020-12-10 • `full history <https://github.com/gorakhargosh/watchdog/compare/v0.10.4...v1.0.0>`__

  - Versioning is now following the `semver <https://semver.org/>`_
  - Drop support for Python 2.7, 3.4 and 3.5
  - [mac] Regression fixes for native ``fsevents`` (`#717 <https://github.com/gorakhargosh/watchdog/pull/717>`_)
  - [windows] ``winapi.BUFFER_SIZE`` now defaults to ``64000`` (instead of ``2048``) (`#700 <https://github.com/gorakhargosh/watchdog/pull/700>`_)
  - [windows] Introduced ``winapi.PATH_BUFFER_SIZE`` (defaults to ``2048``) to keep the old behavior with path-realted functions (`#700 <https://github.com/gorakhargosh/watchdog/pull/700>`_)
  - Use ``pathlib`` from the standard library, instead of pathtools (`#556 <https://github.com/gorakhargosh/watchdog/pull/556>`_)
  - Allow file paths on Unix that don't follow the file system encoding (`#703 <https://github.com/gorakhargosh/watchdog/pull/703>`_)
  - Removed the long-time deprecated ``events.LoggingFileSystemEventHandler`` class, use ``LoggingEventHandler`` instead
  - Thanks to our beloved contributors: @SamSchott, @bstaletic, @BoboTiG, @CCP-Aporia


  0.10.4
  ~~~~~~

  2020-11-21 • `full history <https://github.com/gorakhargosh/watchdog/compare/v0.10.3...v0.10.4>`__

  - Add ``logger`` parameter for the ``LoggingEventHandler`` (`#676 <https://github.com/gorakhargosh/watchdog/pull/676>`_)
  - Replace mutable default arguments with ``if None`` implementation (`#677 <https://github.com/gorakhargosh/watchdog/pull/677>`_)
  - Expand tests to Python 2.7 and 3.5-3.10 for GNU/Linux, macOS and Windows
  - [mac] Performance improvements for the ``fsevents`` module (`#680 <https://github.com/gorakhargosh/watchdog/pull/680>`_)
  - [mac] Prevent compilation of ``watchdog_fsevents.c`` on non-macOS machines (`#687 <https://github.com/gorakhargosh/watchdog/pull/687>`_)
  - [watchmedo] Handle shutdown events from ``SIGTERM`` and ``SIGINT`` more reliably (`#693 <https://github.com/gorakhargosh/watchdog/pull/693>`_)
  - Thanks to our beloved contributors: @Sraw, @CCP-Aporia, @BoboTiG, @maybe-sybr


  0.10.3
  ~~~~~~

  2020-06-25 • `full history <https://github.com/gorakhargosh/watchdog/compare/v0.10.2...v0.10.3>`__

  - Ensure ``ObservedWatch.path`` is a string (`#651 <https://github.com/gorakhargosh/watchdog/pull/651>`_)
  - [inotify] Allow to monitor single file (`#655 <https://github.com/gorakhargosh/watchdog/pull/655>`__)
  - [inotify] Prevent raising an exception when a file in a monitored folder has no permissions (`#669 <https://github.com/gorakhargosh/watchdog/pull/669>`__, `#670 <https://github.com/gorakhargosh/watchdog/pull/670>`__)
  - Thanks to our beloved contributors: @brant-ruan, @rec, @andfoy, @BoboTiG


  0.10.2
  ~~~~~~

  2020-02-08 • `full history <https://github.com/gorakhargosh/watchdog/compare/v0.10.1...v0.10.2>`__

  - Fixed the ``build_ext`` command on macOS Catalina (`#628 <https://github.com/gorakhargosh/watchdog/pull/628>`__)
  - Fixed the installation of macOS requirements on non-macOS OSes (`#635 <https://github.com/gorakhargosh/watchdog/pull/635>`__)
  - Refactored ``dispatch()`` method of ``FileSystemEventHandler``,
    ``PatternMatchingEventHandler`` and ``RegexMatchingEventHandler``
  - [bsd] Improved tests support on non Windows/Linux platforms (`#633 <https://github.com/gorakhargosh/watchdog/pull/633>`__, `#639 <https://github.com/gorakhargosh/watchdog/pull/639>`__)
  - [bsd] Added FreeBSD CI support (`#532 <https://github.com/gorakhargosh/watchdog/pull/532>`__)
  - [bsd] Restored full support (`#638 <https://github.com/gorakhargosh/watchdog/pull/638>`__, `#641 <https://github.com/gorakhargosh/watchdog/pull/641>`__)
  - Thanks to our beloved contributors: @BoboTiG, @evilham, @danilobellini


  0.10.1
  ~~~~~~

  2020-01-30 • `full history <https://github.com/gorakhargosh/watchdog/compare/v0.10.0...v0.10.1>`__

  - Fixed Python 2.7 to 3.6 installation when the OS locale is set to POSIX (`#615 <https://github.com/gorakhargosh/watchdog/pull/615>`__)
  - Fixed the ``build_ext`` command on macOS  (`#618 <https://github.com/gorakhargosh/watchdog/pull/618>`__, `#620 <https://github.com/gorakhargosh/watchdog/pull/620>`_)
  - Moved requirements to ``setup.cfg``  (`#617 <https://github.com/gorakhargosh/watchdog/pull/617>`__)
  - [mac] Removed old C code for Python 2.5 in the `fsevents` C implementation
  - [snapshot] Added ``EmptyDirectorySnapshot`` (`#613 <https://github.com/gorakhargosh/watchdog/pull/613>`__)
  - Thanks to our beloved contributors: @Ajordat, @tehkirill, @BoboTiG


  0.10.0
  ~~~~~~

  2020-01-26 • `full history <https://github.com/gorakhargosh/watchdog/compare/v0.9.0...v0.10.0>`__

  **Breaking Changes**

  - Dropped support for Python 2.6, 3.2 and 3.3
  - Emitters that failed to start are now removed
  - [snapshot] Removed the deprecated ``walker_callback`` argument,
    use ``stat`` instead
  - [watchmedo] The utility is no more installed by default but via the extra
    ``watchdog[watchmedo]``

  **Other Changes**

  - Fixed several Python 3 warnings
  - Identify synthesized events with ``is_synthetic`` attribute (`#369 <https://github.com/gorakhargosh/watchdog/pull/369>`__)
  - Use ``os.scandir()`` to improve memory usage (`#503 <https://github.com/gorakhargosh/watchdog/pull/503>`__)
  - [bsd] Fixed flavors of FreeBSD detection (`#529 <https://github.com/gorakhargosh/watchdog/pull/529>`__)
  - [bsd] Skip unprocessable socket files (`#509 <https://github.com/gorakhargosh/watchdog/issue/509>`__)
  - [inotify] Fixed events containing non-ASCII characters (`#516 <https://github.com/gorakhargosh/watchdog/issues/516>`__)
  - [inotify] Fixed the way ``OSError`` are re-raised (`#377 <https://github.com/gorakhargosh/watchdog/issues/377>`__)
  - [inotify] Fixed wrong source path after renaming a top level folder (`#515 <https://github.com/gorakhargosh/watchdog/pull/515>`__)
  - [inotify] Removed  delay from non-move events (`#477 <https://github.com/gorakhargosh/watchdog/pull/477>`__)
  - [mac] Fixed a bug when calling ``FSEventsEmitter.stop()`` twice (`#466 <https://github.com/gorakhargosh/watchdog/pull/466>`__)
  - [mac] Support for unscheduling deleted watch (`#541 <https://github.com/gorakhargosh/watchdog/issue/541>`__)
  - [mac] Fixed missing field initializers and unused parameters in
    ``watchdog_fsevents.c``
  - [snapshot] Don't walk directories without read permissions (`#408 <https://github.com/gorakhargosh/watchdog/pull/408>`__)
  - [snapshot] Fixed a race condition crash when a directory is swapped for a file (`#513 <https://github.com/gorakhargosh/watchdog/pull/513>`__)
  - [snasphot] Fixed an ``AttributeError`` about forgotten ``path_for_inode`` attr (`#436 <https://github.com/gorakhargosh/watchdog/issues/436>`__)
  - [snasphot] Added the ``ignore_device=False`` parameter to the ctor (`597 <https://github.com/gorakhargosh/watchdog/pull/597>`__)
  - [watchmedo] Fixed the path separator used (`#478 <https://github.com/gorakhargosh/watchdog/pull/478>`__)
  - [watchmedo] Fixed the use of ``yaml.load()`` for ``yaml.safe_load()`` (`#453 <https://github.com/gorakhargosh/watchdog/issues/453>`__)
  - [watchmedo] Handle all available signals (`#549 <https://github.com/gorakhargosh/watchdog/issue/549>`__)
  - [watchmedo] Added the ``--debug-force-polling`` argument (`#404 <https://github.com/gorakhargosh/watchdog/pull/404>`__)
  - [windows] Fixed issues when the observed directory is deleted (`#570 <https://github.com/gorakhargosh/watchdog/issues/570>`__ and `#601 <https://github.com/gorakhargosh/watchdog/pull/601>`__)
  - [windows] ``WindowsApiEmitter`` made easier to subclass (`#344 <https://github.com/gorakhargosh/watchdog/pull/344>`__)
  - [windows] Use separate ctypes DLL instances
  - [windows] Generate sub created events only if ``recursive=True`` (`#454 <https://github.com/gorakhargosh/watchdog/pull/454>`__)
  - Thanks to our beloved contributors: @BoboTiG, @LKleinNux, @rrzaripov,
    @wildmichael, @TauPan, @segevfiner, @petrblahos, @QuantumEnergyE,
    @jeffwidman, @kapsh, @nickoala, @petrblahos, @julianolf, @tonybaloney,
    @mbakiev, @pR0Ps, javaguirre, @skurfer, @exarkun, @joshuaskelly,
    @danilobellini, @Ajordat


  0.9.0
  ~~~~~

  2018-08-28 • `full history <https://github.com/gorakhargosh/watchdog/compare/v0.8.3...v0.9.0>`__

  - Deleting the observed directory now emits a ``DirDeletedEvent`` event
  - [bsd] Improved the platform detection (`#378 <https://github.com/gorakhargosh/watchdog/pull/378>`__)
  - [inotify] Fixed a crash when the root directory being watched by was deleted (`#374 <https://github.com/gorakhargosh/watchdog/pull/374>`__)
  - [inotify] Handle systems providing uClibc
  - [linux] Fixed a possible ``DirDeletedEvent`` duplication when
    deleting a directory
  - [mac] Fixed unicode path handling ``fsevents2.py`` (`#298 <https://github.com/gorakhargosh/watchdog/pull/298>`__)
  - [watchmedo] Added the ``--debug-force-polling`` argument (`#336 <https://github.com/gorakhargosh/watchdog/pull/336>`__)
  - [windows] Fixed the ``FILE_LIST_DIRECTORY`` constant (`#376 <https://github.com/gorakhargosh/watchdog/pull/376>`__)
  - Thanks to our beloved contributors: @vulpeszerda, @hpk42, @tamland, @senden9,
    @gorakhargosh, @nolsto, @mafrosis, @DonyorM, @anthrotype, @danilobellini,
    @pierregr, @ShinNoNoir, @adrpar, @gforcada, @pR0Ps, @yegorich, @dhke


  0.8.3
  ~~~~~

  2015-02-11 • `full history <https://github.com/gorakhargosh/watchdog/compare/v0.8.2...v0.8.3>`__

  - Fixed the use of the root logger (`#274 <https://github.com/gorakhargosh/watchdog/issues/274>`__)
  - [inotify] Refactored libc loading and improved error handling in
    ``inotify_c.py``
  - [inotify] Fixed a possible unbound local error in ``inotify_c.py``
  - Thanks to our beloved contributors: @mmorearty, @tamland, @tony,
    @gorakhargosh


  0.8.2
  ~~~~~

  2014-10-29 • `full history <https://github.com/gorakhargosh/watchdog/compare/v0.8.1...v0.8.2>`__

  - Event emitters are no longer started on schedule if ``Observer`` is not
    already running
  - [mac] Fixed usued arguments to pass clang compilation (`#265 <https://github.com/gorakhargosh/watchdog/pull/265>`__)
  - [snapshot] Fixed a possible race condition crash on directory deletion (`#281 <https://github.com/gorakhargosh/watchdog/pull/281>`__)
  - [windows] Fixed an error when watching the same folder again (`#270 <https://github.com/gorakhargosh/watchdog/pull/270>`__)
  - Thanks to our beloved contributors: @tamland, @apetrone, @Falldog,
    @theospears


  0.8.1
  ~~~~~

  2014-07-28 • `full history <https://github.com/gorakhargosh/watchdog/compare/v0.8.0...v0.8.1>`__

  - Fixed ``anon_inode`` descriptors leakage  (`#249 <https://github.com/gorakhargosh/watchdog/pull/249>`__)
  - [inotify] Fixed thread stop dead lock (`#250 <https://github.com/gorakhargosh/watchdog/issues/250>`__)
  - Thanks to our beloved contributors: @Witos, @adiroiban, @tamland


  0.8.0
  ~~~~~

  2014-07-02 • `full history <https://github.com/gorakhargosh/watchdog/compare/v0.7.1...v0.8.0>`__

  - Fixed ``argh`` deprecation warnings (`#242 <https://github.com/gorakhargosh/watchdog/pull/242>`__)
  - [snapshot] Methods returning internal stats info were replaced by
    ``mtime()``, ``inode()`` and ``path()`` methods
  - [snapshot] Deprecated the ``walker_callback`` argument
  - [watchmedo] Fixed ``auto-restart`` to terminate all children processes (`#225 <https://github.com/gorakhargosh/watchdog/pull/225>`__)
  - [watchmedo] Added the ``--no-parallel`` argument (`#227 <https://github.com/gorakhargosh/watchdog/issues/227>`__)
  - [windows] Fixed the value of ``INVALID_HANDLE_VALUE`` (`#123 <https://github.com/gorakhargosh/watchdog/issues/123>`__)
  - [windows] Fixed octal usages to work with Python 3 as well (`#223 <https://github.com/gorakhargosh/watchdog/issues/223>`__)
  - Thanks to our beloved contributors: @tamland, @Ormod, @berdario, @cro,
    @BernieSumption, @pypingou, @gotcha, @tommorris, @frewsxcv


