Metadata-Version: 2.1
Name: safely
Version: 0.2.1
Summary: Capture side effects, safely.
Home-page: https://github.com/lukemiloszewski/safely
License: MIT
Author: Luke Miloszewski
Author-email: lukemiloszewski@gmail.com
Requires-Python: >=3.8.0,<3.11.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Project-URL: Changelog, https://github.com/lukemiloszewski/safely/releases
Project-URL: Repository, https://github.com/lukemiloszewski/safely
Description-Content-Type: text/markdown

<h1 align="center">Safely</h1>
<p align="center">Capture side effects, safely ⚔️</p>
<p align="center">
<a href="https://github.com/lukemiloszewski/safely/actions/workflows/ci.yml/badge.svg" target="_blank">
    <img src="https://github.com/lukemiloszewski/safely/actions/workflows/ci.yml/badge.svg" alt="Continuous Integration">
</a>
<a href="https://pypi.org/project/safely" target="_blank">
    <img src="https://img.shields.io/pypi/v/safely?color=%2334D058&label=pypi%20package" alt="Package Version">
</a>
<a href="https://pypi.org/project/safely" target="_blank">
    <img src="https://img.shields.io/pypi/pyversions/safely.svg?color=%2334D058" alt="Supported Python Versions">
</a>
</p>

## Installation

```shell
pip install safely
```

## Usage

As a function (without second-order arguments):

```python
def f(...): ...

result = safely(f)(...)
```

As a function (with second-order arguments):

```python
def f(...): ...

result = safely(f, logger=logger.error, message="{exc_type}: {exc_value}")(...)
```

As a decorator (without second-order arguments):

```python
@safely
def f(...): ...

result = f(...)
```

As a decorator (with second-order arguments):

```python
@safely(logger=logger.error, message="{exc_type}: {exc_value}")
def f(...): ...

result = f(...)
```

