The easy way to send notifications

Overview

Full logo

Build StatusCodecov image PyPi version Supported Python versions License Status Docker build RTD Paypal Downloads Twitter Follow Code style: black Dependabot Status pre-commit

See changelog for recent changes

Got an app or service and you want to enable your users to use notifications with their provider of choice? Working on a script and you want to receive notification based on its output? You don't need to implement a solution yourself, or use individual provider libs. A one stop shop for all notification providers with a unified and simple interface.

Supported providers

Pushover, SimplePush, Slack, Gmail, Email (SMTP), Telegram, Gitter, Pushbullet, Join, Hipchat, Zulip, Twilio, Pagerduty, Mailgun, PopcornNotify, StatusPage.io

Advantages

  • Spend your precious time on your own code base, instead of chasing down 3rd party provider APIs. That's what we're here for!
  • With a minimal set of well known and stable dependencies (requests, jsonschema and click) you're better off than installing 3rd party SDKs.
  • A unified interface means that you already support any new providers that will be added, no more work needed!
  • Thorough testing means protection against any breaking API changes. We make sure your code your notifications will always get delivered!

Installation

Via pip:

$ pip install notifiers

Via homebrew:

$ brew install notifiers

Or Dockerhub:

$ docker pull liiight/notifiers

Basic Usage

>>> from notifiers import get_notifier
>>> p = get_notifier('pushover')
>>> p.required
{'required': ['user', 'message', 'token']}
>>> p.notify(user='foo', token='bar', message='test')
<NotificationResponse,provider=Pushover,status=Success>

Or:

>>> from notifiers import notify
>>> notify('pushover', user='foo', token='bar', message='test')
<NotificationResponse,provider=Pushover,status=Success>

From CLI

$ notifiers pushover notify --user foo --token baz "This is so easy!"

As a logger

Directly add to your existing stdlib logging:

>>> import logging
>>> from notifiers.logging import NotificationHandler

>>> log = logging.getLogger(__name__)

>>> defaults = {
        'token': 'foo',
        'user': 'bar'
    }
>>> hdlr = NotificationHandler('pushover', defaults=defaults)
>>> hdlr.setLevel(logging.ERROR)

>>> log.addHandler(hdlr)
>>> log.error('And just like that, you get notified about all your errors!')

Mentions

Road map

  • Many more providers!
  • Low level providers (Amazon SNS, Google FCM, OS Toast messages) via extra dependencies

See Docs for more information

Donations

If you like this and want to buy me a cup of coffee, please click the donation button above or click this link

Code of Conduct

Everyone interacting in the Notifiers project's codebases, issue trackers and chat rooms is expected to follow the PyPA Code of Conduct.

Comments
  • SendGrid integration

    SendGrid integration

    Adds a 'sendgrid' provider and accompanying tests. The SG API is very complex, even when it comes to setting the 'from' and 'to' on a message, so I set it up for those to allow plain strings instead of the JSON objects they usually require. Tested the schema pretty in depth as well. The CLI also is working for me.

    I noticed an issue in how json schema errors are rendered during this. It only renders the top-level error in the exception, not the full path to the variable in question. Other APIs seem to be pretty simple, so maybe this isn't a big deal for them, but SG is very intricate and tracking down errors without the schema path to the problem variable is a pain. I'll log a separate ticket to fix this (it doesn't look like it'll be that hard).

    opened by mostfunkyduck 12
  • add Dockerfile

    add Dockerfile

    changes

    I've added a fairly basic Dockerfile that is based on python:alpine3.6

    usage

    1. docker build .
    2. docker run <image> <notifiers command args>

    Ideally the image would be uploaded to docker hub via a automated build, but travis ci would also work.

    I don't see the workflow to publish notifiers to pypi, so if it makes more sense to build from source I'm happy to update the PR with:

    FROM python:alpine3.6
    
    ADD . /notifiers
    WORKDIR /notifiers
    
    RUN pip install --upgrade pip setuptools
    RUN pip install -e .
    RUN pip install -r requirements.txt
    
    ENTRYPOINT ["notifiers"]
    

    Thanks! Jordan

    opened by JordanSussman 11
  • Add homebrew installation method instruction

    Add homebrew installation method instruction

    Closes #78

    I just used the GitHub's release tarball first instead of the PyPI's tarball to make this PR to the homebrew-core repo: https://github.com/Homebrew/homebrew-core/pull/44926

    But for the next version, please see my comment in #308 so that we can use the PyPI's tarball instead the one in GitHub.

    PS: Please wait for the PR to the homebrew-core to be merged.

    opened by exequiel09 9
  • pip install notifiers fails with FileNotFoundError

    pip install notifiers fails with FileNotFoundError

    Describe the bug Attempting to install notifiers via pip results in a file not found error - raised whilst attempting to access README.MD from setup.py:

    command: /usr/local/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-pv6vufd1/notifiers/setup.py'"'"'; __file__='"'"'/tmp/pip-install-pv6vufd1/notifiers/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base pip-egg-info
             cwd: /tmp/pip-install-pv6vufd1/notifiers/
        Complete output (11 lines):
        Traceback (most recent call last):
          File "<string>", line 1, in <module>
          File "/tmp/pip-install-pv6vufd1/notifiers/setup.py", line 5, in <module>
            long_description = Path("README.MD").read_text()
          File "/usr/local/lib/python3.7/pathlib.py", line 1206, in read_text
            with self.open(mode='r', encoding=encoding, errors=errors) as f:
          File "/usr/local/lib/python3.7/pathlib.py", line 1193, in open
            opener=self._opener)
          File "/usr/local/lib/python3.7/pathlib.py", line 1046, in _opener
            return self._accessor.open(self, flags, mode)
        FileNotFoundError: [Errno 2] No such file or directory: 'README.MD'
    

    To Reproduce

    Attempt to install notitifiers using pip

    Expected behavior That notifiers should successfully install

    Additional context Python version: 3.7 OS: Alpine (during build of docker container)

    Note

    I checked inside the archive for notifiers on pypi, and there is no README.MD in the same directory as setup.py.

    bug 
    opened by classic-paul 9
  • EMAIL provider - stalling connect

    EMAIL provider - stalling connect

    Describe the bug Various SMTP(EMAIL) providers, even local happen to stall in SMTP server connection phase when interacted by with notifiers. Could be down to/linked to or caused underlying SMTP library issue reported earlier (https://bugs.python.org/issue37572).

    It was made sure not underlying, ostensible networking culprit is in way. The transport flow path is reported open by e.g. nmap.

    To Reproduce On pristine runtime with freshly installed notifiers via cli, with dbg traces activated in notifiers:

    
    # notifiers email notify
            --from [email protected]
            --to   [email protected]
            --subject "TEST"
            --host smtp.mail.de
            --port 465
            --username <YOUR_USR>@mail.de
            --password <YOUR_PW> 
            "SOME"
    

    Does end in stalling at: [...] connect: ('smtp.mail.de', 465) connect: to ('smtp.mail.de', 465) None

    Expected behavior Swift delivery of msg, without hanging/stalling.

    Additional context Python version: 3.6-3.7 OS: latest fedora/ubuntu

    bug help wanted 
    opened by cherusk 9
  • 'from' can't be used as a keyword argument in the email notifier.

    'from' can't be used as a keyword argument in the email notifier.

    Trying to use the optional 'from' argument as a keyword argument to the notify method for the email notifier is a syntax error when used from code (it works just fine from the CLI interface).

    Maybe 'from' should be renamed to avoid the problem. A work-around is calling notify with dictionary unpacking. But that should probably be documented.

    >>> from notifiers import get_notfier >>> p = get_notifier('email') <Provider:[Email]> >>> p.notify(to='[email protected]', message='Will not work', from='[email protected]')

    File "<stdin>", line 1 p.notify(to='[email protected]', message='Will not work', from='[email protected]') ...............................................................^ SyntaxError: invalid syntax

    >>> p.notify(**{'to':'[email protected]', 'message':'Will work', 'from':'[email protected]'}) <Response,provider=Email,status=Success>

    bug 
    opened by astoddard 8
  • Bump pytest from 4.6.3 to 5.0.1

    Bump pytest from 4.6.3 to 5.0.1

    Bumps pytest from 4.6.3 to 5.0.1.

    Changelog

    Sourced from pytest's changelog.

    pytest 5.0.1 (2019-07-04)

    Bug Fixes

    • #5479: Improve quoting in raises match failure message.
    • #5523: Fixed using multiple short options together in the command-line (for example -vs) in Python 3.8+.
    • #5547: --step-wise now handles xfail(strict=True) markers properly.

    Improved Documentation

    • #5517: Improve "Declaring new hooks" section in chapter "Writing Plugins"

    pytest 5.0.0 (2019-06-28)

    Important

    This release is a Python3.5+ only release.

    For more details, see our Python 2.7 and 3.4 support plan.

    Removals

    • #1149: Pytest no longer accepts prefixes of command-line arguments, for example typing pytest --doctest-mod inplace of --doctest-modules. This was previously allowed where the ArgumentParser thought it was unambiguous, but this could be incorrect due to delayed parsing of options for plugins. See for example issues #1149, #3413, and #4009.

    • #5402: PytestDeprecationWarning are now errors by default.

      Following our plan to remove deprecated features with as little disruption as possible, all warnings of type PytestDeprecationWarning now generate errors instead of warning messages.

      The affected features will be effectively removed in pytest 5.1, so please consult the Deprecations and Removals section in the docs for directions on how to update existing code.

      In the pytest 5.0.X series, it is possible to change the errors back into warnings as a stop gap measure by adding this to your pytest.ini file:

      [pytest]
      filterwarnings =
          ignore::pytest.PytestDeprecationWarning
      

      But this will stop working when pytest 5.1 is released.

      If you have concerns about the removal of a specific feature, please add a comment to #5402.

    • #5412: ExceptionInfo objects (returned by pytest.raises) now have the same str representation as repr, which avoids some confusion when users use print(e) to inspect the object.

    Deprecations

    ... (truncated)
    Commits
    • bb29f31 Preparing release version 5.0.1
    • b1928f8 Handle xfail(strict=True) properly in --step-wise mode (#5555)
    • 8651d88 Handle xfail(strict=True) properly in --step-wise mode
    • 95824c5 Improve quoting in raises match failure message (#5553)
    • caa08eb Improve quoting in raises match failure message
    • b08ae44 Add docs about Tidelift and OpenCollective (#5527)
    • 776a632 Merge pull request #5540 from bazcrown/yml2yaml
    • d74a975 remove documentation about setuptools integration Refs #5534 Fi… (#5546)
    • 2b9522e remove documentation about setuptools integration Refs #5534
    • 528ee3e Add upcoming trainings (#5544)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it). To ignore the version in this PR you can just close it
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)

    Finally, you can contact us by mentioning @dependabot.

    dependencies 
    opened by dependabot-preview[bot] 7
  • [Security] Bump urllib3 from 1.23 to 1.24.2

    [Security] Bump urllib3 from 1.23 to 1.24.2

    Bumps urllib3 from 1.23 to 1.24.2. This update includes security fixes.

    Vulnerabilities fixed

    Sourced from The GitHub Security Advisory Database.

    High severity vulnerability that affects urllib3 The urllib3 library before 1.24.2 for Python mishandles certain cases where the desired set of CA certificates is different from the OS store of CA certificates, which results in SSL connections succeeding in situations where a verification failure is the correct outcome. This is related to use of the ssl_context, ca_certs, or ca_certs_dir argument.

    Affected versions: < 1.24.2

    Changelog

    Sourced from urllib3's changelog.

    1.24.2 (2019-04-17)

    • Don't load system certificates by default when any other ca_certs, ca_certs_dir or ssl_context parameters are specified.
    • Remove Authorization header regardless of case when redirecting to cross-site. (Issue #1510)
    • Add support for IPv6 addresses in subjectAltName section of certificates. (Issue #1269)

    1.24.1 (2018-11-02)

    • Remove quadratic behavior within GzipDecoder.decompress() (Issue #1467)
    • Restored functionality of ciphers parameter for create_urllib3_context(). (Issue #1462)

    1.24 (2018-10-16)

    • Allow key_server_hostname to be specified when initializing a PoolManager to allow custom SNI to be overridden. (Pull #1449)
    • Test against Python 3.7 on AppVeyor. (Pull #1453)
    • Early-out ipv6 checks when running on App Engine. (Pull #1450)
    • Change ambiguous description of backoff_factor (Pull #1436)
    • Add ability to handle multiple Content-Encodings (Issue #1441 and Pull #1442)
    • Skip DNS names that can't be idna-decoded when using pyOpenSSL (Issue #1405).
    • Add a server_hostname parameter to HTTPSConnection which allows for overriding the SNI hostname sent in the handshake. (Pull #1397)
    • Drop support for EOL Python 2.6 (Pull #1429 and Pull #1430)
    • Fixed bug where responses with header Content-Type: message/* erroneously raised HeaderParsingError, resulting in a warning being logged. (Pull #1439)
    • Move urllib3 to src/urllib3 (Pull #1409)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)

    Finally, you can contact us by mentioning @dependabot.

    dependencies security 
    opened by dependabot-preview[bot] 7
  • Email Attachments

    Email Attachments

    Additions:

    • Updated Response to include the errors as well as status and provider.
    • Added attachments functionality
      • Schema
      • _add_attachments(email, data) function
      • added attachment test
    • Address #91
    opened by grabear 7
  • notifiers 1.3.2 doesn't run

    notifiers 1.3.2 doesn't run

    Describe the bug notifiers entry point does not run

    To Reproduce

    $ pip install notifiers==1.3.2
    $ notifiers 
    Traceback (most recent call last):
      File "/usr/local/bin/notifiers", line 5, in <module>
        from notifiers_cli.core import entry_point
    ModuleNotFoundError: No module named 'notifiers_cli'
    

    Expected behavior Not to error

    Additional context Python version: 3.10 OS: any

    bug 
    opened by dtrodrigues 6
  • Cannot install notifiers in a conda activated Python environment (Windows & Ubuntu)

    Cannot install notifiers in a conda activated Python environment (Windows & Ubuntu)

    Describe the bug Notifiers fails to install in a conda environment due to an issue with this error raised:

    Installing collected packages: idna, urllib3, rfc3987, certifi, click, notifiers
      Found existing installation: idna 2.8
        Uninstalling idna-2.8:
          Successfully uninstalled idna-2.8
      Found existing installation: urllib3 1.24.1
        Uninstalling urllib3-1.24.1:
          Successfully uninstalled urllib3-1.24.1
      Found existing installation: certifi 2019.3.9
    Cannot uninstall 'certifi'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
    
    

    To Reproduce run pip install notifiers in a conda activated Python environment.

    Expected behaviour Expected notifiers to install without any issue

    Additional context Python version: 3.7.3 & 3.6.7 OS: Windows 10 & Ubuntu 18.04

    help wanted Hacktoberfest 
    opened by PyDataBlog 6
  • Bump certifi from 2021.10.8 to 2022.12.7

    Bump certifi from 2021.10.8 to 2022.12.7

    Bumps certifi from 2021.10.8 to 2022.12.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies 
    opened by dependabot[bot] 0
  • Bump jsonschema from 4.4.0 to 4.8.0

    Bump jsonschema from 4.4.0 to 4.8.0

    Bumps jsonschema from 4.4.0 to 4.8.0.

    Release notes

    Sourced from jsonschema's releases.

    v4.8.0

    Full Changelog: https://github.com/python-jsonschema/jsonschema/compare/v4.7.2...v4.8.0

    v4.7.2

    Full Changelog: https://github.com/python-jsonschema/jsonschema/compare/v4.7.1...v4.7.2

    v4.7.1

    Full Changelog: https://github.com/python-jsonschema/jsonschema/compare/v4.7.0...v4.7.1

    v4.7.0

    What's Changed

    Full Changelog: https://github.com/python-jsonschema/jsonschema/compare/v4.6.2...v4.7.0

    v4.6.2

    What's Changed

    New Contributors

    Full Changelog: https://github.com/python-jsonschema/jsonschema/compare/v4.6.1...v4.6.2

    v4.6.1

    What's Changed

    Full Changelog: https://github.com/python-jsonschema/jsonschema/compare/v4.6.0...v4.6.1

    v4.6.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/python-jsonschema/jsonschema/compare/v4.5.1...v4.6.0

    v4.5.1

    Full Changelog: https://github.com/python-jsonschema/jsonschema/compare/v4.5.0...v4.5.1

    ... (truncated)

    Changelog

    Sourced from jsonschema's changelog.

    v4.8.0

    • best_match no longer traverses into anyOf and oneOf when all of the errors within them seem equally applicable. This should lead to clearer error messages in some cases where no branches were matched.

    v4.7.2

    • Also have best_match handle cases where the type validator is an array.

    v4.7.1

    • Minor tweak of the PyPI hyperlink names

    v4.7.0

    • Enhance best_match to prefer errors from branches of the schema which match the instance's type (#728)

    v4.6.2

    • Fix a number of minor typos in docstrings, mostly private ones (#969)

    v4.6.1

    • Gut the (incomplete) implementation of recursiveRef on draft 2019. It needs completing, but for now can lead to recursion errors (e.g. #847).

    v4.6.0

    • Fix unevaluatedProperties and unevaluatedItems for types they should ignore (#949)
    • jsonschema now uses hatch <https://hatch.pypa.io/>_ for its build process. This should be completely transparent to end-users (and only matters to contributors).

    v4.5.1

    • Revert changes to $dynamicRef which caused a performance regression in v4.5.0

    ... (truncated)

    Commits
    • 5891be0 v4.8.0 -> CHANGELOG
    • bd5ea73 Don't let best_match traverse into applicators with equally bad sub-errors.
    • 8e090fb Micro-optimize an oft-called lambda to a methodcaller call.
    • e9e9019 Just allow passing extra args directly to perf from tox.
    • e0ebb6d Minor tweaks to differentiate between perf tox envs.
    • 3ca05dc Merge commit '999ff68a38729aaebe8b5b772b789b97dc145820'
    • 999ff68 Squashed 'json/' changes from 69acf529..fd9bcfbd
    • 72c3200 Fix best_match's type matching when it's an array.
    • 8819f46 Minor case correction for PyPI links.
    • c09578b Squashed 'json/' changes from b7d13f4b..69acf529
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump sphinx from 5.0.2 to 5.1.0

    Bump sphinx from 5.0.2 to 5.1.0

    Bumps sphinx from 5.0.2 to 5.1.0.

    Release notes

    Sourced from sphinx's releases.

    v5.1.0

    Changelog: https://www.sphinx-doc.org/en/master/changes.html

    Changelog

    Sourced from sphinx's changelog.

    Release 5.1.0 (released Jul 24, 2022)

    Dependencies

    • #10656: Support Docutils 0.19_. Patch by Adam Turner.

    .. _Docutils 0.19: https://docutils.sourceforge.io/RELEASE-NOTES.html#release-0-19-2022-07-05

    Deprecated

    • #10467: Deprecated sphinx.util.stemmer in favour of snowballstemmer. Patch by Adam Turner.
    • #9856: Deprecated sphinx.ext.napoleon.iterators.

    Features added

    • #10444: html theme: Allow specifying multiple CSS files through the stylesheet setting in theme.conf or by setting html_style to an iterable of strings.
    • #10366: std domain: Add support for emphasising placeholders in :rst:dir:option directives through a new :confval:option_emphasise_placeholders configuration option.
    • #10439: std domain: Use the repr of some variables when displaying warnings, making whitespace issues easier to identify.
    • #10571: quickstart: Reduce content in the generated conf.py file. Patch by Pradyun Gedam.
    • #10648: LaTeX: CSS-named-alike additional :ref:'sphinxsetup' <latexsphinxsetup> keys allow to configure four separate border-widths, four paddings, four corner radii, a shadow (possibly inset), colours for border, background, shadow for each of the code-block, topic, attention, caution, danger, error and warning directives.
    • #10655: LaTeX: Explain non-standard encoding in LatinRules.xdy
    • #10599: HTML Theme: Wrap consecutive footnotes in an <aside> element when using Docutils 0.18 or later, to allow for easier styling. This matches the behaviour introduced in Docutils 0.19. Patch by Adam Turner.
    • #10518: config: Add include_patterns as the opposite of exclude_patterns. Patch by Adam Turner.

    Bugs fixed

    • #10594: HTML Theme: field term colons are doubled if using Docutils 0.18+
    • #10596: Build failure if Docutils version is 0.18 (not 0.18.1) due to missing Node.findall()
    • #10506: LaTeX: build error if highlighting inline code role in figure caption (refs: #10251)
    • #10634: Make -P (pdb) option work better with exceptions triggered from events

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • Bump requests from 2.27.1 to 2.28.1

    Bump requests from 2.27.1 to 2.28.1

    Bumps requests from 2.27.1 to 2.28.1.

    Release notes

    Sourced from requests's releases.

    v2.28.1

    2.28.1 (2022-06-29)

    Improvements

    • Speed optimization in iter_content with transition to yield from. (#6170)

    Dependencies

    • Added support for chardet 5.0.0 (#6179)
    • Added support for charset-normalizer 2.1.0 (#6169)

    New Contributors

    Full Changelog: https://github.com/psf/requests/blob/main/HISTORY.md#2281-2022-06-29

    v2.28.0

    2.28.0 (2022-06-09)

    Deprecations

    • ⚠️ Requests has officially dropped support for Python 2.7. ⚠️ (#6091)
    • Requests has officially dropped support for Python 3.6 (including pypy3). (#6091)

    Improvements

    • Wrap JSON parsing issues in Request's JSONDecodeError for payloads without an encoding to make json() API consistent. (#6097)
    • Parse header components consistently, raising an InvalidHeader error in all invalid cases. (#6154)
    • Added provisional 3.11 support with current beta build. (#6155)
    • Requests got a makeover and we decided to paint it black. (#6095)

    Bugfixes

    • Fixed bug where setting CURL_CA_BUNDLE to an empty string would disable cert verification. All Requests 2.x versions before 2.28.0 are affected. (#6074)
    • Fixed urllib3 exception leak, wrapping urllib3.exceptions.SSLError with requests.exceptions.SSLError for content and iter_content. (#6057)
    • Fixed issue where invalid Windows registry entires caused proxy resolution to raise an exception rather than ignoring the entry. (#6149)
    • Fixed issue where entire payload could be included in the error message for JSONDecodeError. (#6079)

    New Contributors

    ... (truncated)

    Changelog

    Sourced from requests's changelog.

    2.28.1 (2022-06-29)

    Improvements

    • Speed optimization in iter_content with transition to yield from. (#6170)

    Dependencies

    • Added support for chardet 5.0.0 (#6179)
    • Added support for charset-normalizer 2.1.0 (#6169)

    2.28.0 (2022-06-09)

    Deprecations

    • ⚠️ Requests has officially dropped support for Python 2.7. ⚠️ (#6091)
    • Requests has officially dropped support for Python 3.6 (including pypy3.6). (#6091)

    Improvements

    • Wrap JSON parsing issues in Request's JSONDecodeError for payloads without an encoding to make json() API consistent. (#6097)
    • Parse header components consistently, raising an InvalidHeader error in all invalid cases. (#6154)
    • Added provisional 3.11 support with current beta build. (#6155)
    • Requests got a makeover and we decided to paint it black. (#6095)

    Bugfixes

    • Fixed bug where setting CURL_CA_BUNDLE to an empty string would disable cert verification. All Requests 2.x versions before 2.28.0 are affected. (#6074)
    • Fixed urllib3 exception leak, wrapping urllib3.exceptions.SSLError with requests.exceptions.SSLError for content and iter_content. (#6057)
    • Fixed issue where invalid Windows registry entires caused proxy resolution to raise an exception rather than ignoring the entry. (#6149)
    • Fixed issue where entire payload could be included in the error message for JSONDecodeError. (#6036)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(1.3.0)
  • 1.3.0(Aug 23, 2021)

  • 1.2.0(Jul 25, 2019)

    • Added ability to cancel login to SMTP/GMAIL if credentials are used (#210, #266)
    • Loosened dependencies (#209, #271)
    • Added mimetype guessing for email (#239, #272)
    Source code(tar.gz)
    Source code(zip)
  • v0.6.4(Jan 18, 2018)

    • Major refactor, reintroduced provider resources:
    >>> from notifiers import get_notifier
    >>> telegram = get_notifier('telegram')
    >>> telegram.resources
    ['updates']
    >>> telegram.updates
    <ProviderResource,provider=telegram,resource=updates>
    >>> telegram.updates()
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
      File "/Users/orcarmi/PycharmProjects/notifiers/notifiers/core.py", line 278, in __call__
        data = self._process_data(**kwargs)
      File "/Users/orcarmi/PycharmProjects/notifiers/notifiers/core.py", line 204, in _process_data
        self._validate_data(data, validator)
      File "/Users/orcarmi/PycharmProjects/notifiers/notifiers/core.py", line 175, in _validate_data
        raise BadArguments(validation_error=msg, provider=self.name, data=data)
    notifiers.exceptions.BadArguments: Error with sent data: 'token' is a required property
    >>> telegram.updates(token='foo')
    
    • Major CLI refactor, validates command options via type (as opposed to keyword=value as it was, which was always string. Yuck)
    $ notifiers --help
    Usage: notifiers [OPTIONS] COMMAND [ARGS]...
    
      Notifiers CLI operation
    
    Options:
      --version          Show the version and exit.
      --env-prefix TEXT  Set a custom prefix for env vars usage
      --help             Show this message and exit.
    
    Commands:
      email       Options for 'email'
      gitter      Options for 'gitter'
      gmail       Options for 'gmail'
      hipchat     Options for 'hipchat'
      join        Options for 'join'
      providers   Shows all available providers
      pushbullet  Options for 'pushbullet'
      pushover    Options for 'pushover'
      simplepush  Options for 'simplepush'
      slack       Options for 'slack'
      telegram    Options for 'telegram'
      zulip       Options for 'zulip'
    
    $ notifiers telegram notify --help
    Usage: notifiers telegram notify [OPTIONS] [MESSAGE]
    
      Send Telegram notifications
    
    Options:
      --token TEXT                    Bot token
      --chat-id TEXT
      --parse-mode [markdown|html]    Send markdown or html, if you want telegram
                                      apps to show bold, italic, fixed-width text
                                      or inline urls in your bot's message.
      --disable-web-page-preview / --no-disable-web-page-preview
                                      Disables link previews for links in this
                                      message
      --disable-notification / --no-disable-notification
                                      Sends the message silently. users will
                                      receive a notification with no sound.
      --reply-to-message-id INTEGER   If the message is a reply, id of the
                                      original message
      --help                          Show this message and exit.
    

    See docs for details.

    Source code(tar.gz)
    Source code(zip)
  • v0.6.2(Dec 31, 2017)

  • v0.6.1(Dec 28, 2017)

    New providers

    • Zulip (https://github.com/liiight/notifiers/issues/61)

    Improvements

    • Friendlier schema error message on complex schema errors (https://github.com/liiight/notifiers/issues/62)
    • Added title and events to simplepush notifier (#60)
    • Some refactoring
    Source code(tar.gz)
    Source code(zip)
Owner
Or Carmi
Building and breaking stuff
Or Carmi
🐑 Syslog Simulator hazır veya kullanıcıların eklediği logları belirtilen adreslere ve port'a seçilen döngüde syslog ile gönderilmesini sağlayan araçtır. | 🇹🇷

syslogsimulator hazır ürün loglarını SIEM veya log toplayıcısına istediğiniz portta belirli sürelerde göndermeyi sağlayan küçük bir araçtır.

Enes Aydın 3 Sep 28, 2021
Debugging-friendly exceptions for Python

Better tracebacks This is a more helpful version of Python's built-in exception message: It shows more code context and the current values of nearby v

Clemens Korndörfer 1.2k Dec 28, 2022
A Python package which supports global logfmt formatted logging.

Python Logfmter A Python package which supports global logfmt formatted logging. Install $ pip install logfmter Usage Before integrating this library,

Joshua Taylor Eppinette 15 Dec 29, 2022
Multi-processing capable print-like logger for Python

MPLogger Multi-processing capable print-like logger for Python Requirements and Installation Python 3.8+ is required Pip pip install mplogger Manual P

Eötvös Loránd University Department of Digital Humanities 1 Jan 28, 2022
Rich is a Python library for rich text and beautiful formatting in the terminal.

Rich 中文 readme • lengua española readme • Läs på svenska Rich is a Python library for rich text and beautiful formatting in the terminal. The Rich API

Will McGugan 41.5k Jan 07, 2023
A Prometheus exporter for monitoring & analyzing Grafana Labs' technical documentation

grafana-docs-exporter A Prometheus exporter for monitoring & analyzing Grafana Labs' technical documentation Here is the public endpoint.

Matt Abrams 5 May 02, 2022
Docker container log aggregation with Elasticsearch, Kibana & Filebeat

Epilog Dead simple container log aggregation with ELK stack Preface Epilog aims to demonstrate a language-agnostic, non-invasive, and straightfo

Redowan Delowar 23 Oct 26, 2022
Token Logger with python

Oxy Token Stealer Features Grabs discord tokens Grabs chrome passwords Grabs edge passwords Nothing else, I don't feel like releasing full on malware

oxy 1 Feb 12, 2022
Robust and effective logging for Python 2 and 3.

Robust and effective logging for Python 2 and 3.

Chris Hager 1k Jan 04, 2023
Json Formatter for the standard python logger

This library is provided to allow standard python logging to output log data as json objects. With JSON we can make our logs more readable by machines and we can stop writing custom parsers for syslo

Zakaria Zajac 1.4k Jan 04, 2023
Log processor for nginx or apache that extracts user and user sessions and calculates other types of useful data for bot detection or traffic analysis

Log processor for nginx or apache that extracts user and user sessions and calculates other types of useful data for bot detection or traffic analysis

David Puerta Martín 1 Nov 11, 2021
Python bindings for g3log

g3logPython Python bindings for g3log This library provides python3 bindings for g3log + g3sinks (currently logrotate, syslog, and a color-terminal ou

4 May 21, 2021
Monitoring plugin to check disk io with Icinga, Nagios and other compatible monitoring solutions

check_disk_io - Monitor disk io This is a monitoring plugin for Icinga, Nagios and other compatible monitoring solutions to check the disk io. It uses

DinoTools 3 Nov 15, 2022
A Fast, Extensible Progress Bar for Python and CLI

tqdm tqdm derives from the Arabic word taqaddum (تقدّم) which can mean "progress," and is an abbreviation for "I love you so much" in Spanish (te quie

tqdm developers 23.7k Jan 01, 2023
Pretty and useful exceptions in Python, automatically.

better-exceptions Pretty and more helpful exceptions in Python, automatically. Usage Install better_exceptions via pip: $ pip install better_exception

Qix 4.3k Dec 29, 2022
Outlog it's a library to make logging a simple task

outlog Outlog it's a library to make logging a simple task!. I'm a lazy python user, the times that i do logging on my apps it's hard to do, a lot of

ZSendokame 2 Mar 05, 2022
Vibrating-perimeter - Simple helper mod that logs how fast you are mining together with a simple buttplug.io script to control a vibrator

Vibrating Perimeter This project consists of a small minecraft helper mod that writes too a log file and a script that reads said log. Currently it on

Heart[BOT] 0 Nov 20, 2022
ScreenshotLogger works just like a keylogger but instead of capturing keystroke,it captures the screen, stores it or sends via email

ScreenshotLogger works just like a keylogger but instead of capturing keystroke,it captures the screen, stores it or sends via email. Scrapeasy is super easy to use and handles everything for you. Ju

Ifechukwudeni Oweh 17 Jul 17, 2022
A colored formatter for the python logging module

Log formatting with colors! colorlog.ColoredFormatter is a formatter for use with Python's logging module that outputs records using terminal colors.

Sam Clements 778 Dec 26, 2022
Soda SQL Data testing, monitoring and profiling for SQL accessible data.

Soda SQL Data testing, monitoring and profiling for SQL accessible data. What does Soda SQL do? Soda SQL allows you to Stop your pipeline when bad dat

Soda Data Monitoring 51 Jan 01, 2023