# -*- coding: utf-8 -*-
from setuptools import setup

packages = \
['novu', 'novu.api', 'novu.dto', 'novu.enums']

package_data = \
{'': ['*']}

install_requires = \
['requests>=2.28.2,<3.0.0']

setup_kwargs = {
    'name': 'novu',
    'version': '1.7.0',
    'description': 'This project aims to provide a wrapper for the Novu API.',
    'long_description': '# Python Novu SDK\n\n[![PyPI](https://img.shields.io/pypi/v/novu?color=blue)](https://pypi.org/project/novu/)\n![Tests Status](https://github.com/novuhq/novu-python/actions/workflows/.github/workflows/tests.yml/badge.svg)\n[![codecov](https://codecov.io/gh/novuhq/novu-python/branch/main/graph/badge.svg?token=RON7F8QTZX)](https://codecov.io/gh/novuhq/novu-python)\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/novu)\n![PyPI - License](https://img.shields.io/pypi/l/novu)\n[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)\n\n---\n\nThe [Python Novu](https://novu.co) SDK and package provides a fluent and expressive interface for interacting with [Novu\'s API](https://api.novu.co/api) and managing notifications.\n\n## Install\n\nTo install this package\n\n```shell\n# Via pip\npip install novu\n\n# Via poetry\npoetry add novu\n```\n\n## Contents\n\n- [Install](#install)\n- [Quick start](#quick-start)\n- [Code Snippet Examples](#code-snippet-examples)\n  - [Events](#events)\n  - [Subscribers](#subscribers)\n  - [Topics](#topics)\n  - [Feeds](#feeds)\n  - [Environments](#environments)\n- [Go further](#go-further)\n- [Development](#development)\n\n## Quick start\n\nThis package is a wrapper of all the resources offered by Novu, we will just start by triggering an event on Novu.\n\nTo do this, you will need to:\n\n1. Create your first notification workflow and keep in mind the identifier to trigger the workflow: https://docs.novu.co/overview/quickstart/general-quickstart#create-a-workflow\n2. Retrieve your API key from the Novu dashboard directly in the settings section: https://web.novu.co/settings\n3. Write code to trigger your first event:\n\n```python\nfrom novu.api import EventApi\n\nevent_api = EventApi("https://api.novu.co", "<NOVU_API_KEY>")\nevent_api.trigger(\n    name="<YOUR_WORKFLOW_ID>",  # The workflow ID is the slug of the workflow name. It can be found on the workflow page.\n    recipients="<YOUR_SUBSCRIBER_ID>",\n    payload={},  # Your Novu payload goes here\n)\n```\n\nThis will trigger a notification to the subscribers.\n\n## Code Snippet Examples\n\n### Events\n\nFirstly, make imports and declare the needed variables this way:\n\n```python\nfrom novu.api import EventApi\n\nurl = "https://api.novu.co"\napi_key = "<NOVU_API_KEY>"\n\n# You can sign up on https://web.novu.co to get your API key from https://web.novu.co/settings\n```\n\n**Trigger an event** - Send notification to subscribers:\n\n```python\nfrom novu.api import EventApi\n\nnovu = EventApi(url, api_key).trigger(\n    name="digest-workflow-example",  # This is the Workflow ID. It can be found on the workflow page.\n    recipients="<SUBSCRIBER_IDENTIFIER>", # The subscriber ID can be gotten from the dashboard.\n    payload={},  # Your custom Novu payload goes here\n)\n```\n\n**Bulk Trigger events** - Trigger multiple events at once:\n\n```python\nfrom novu.dto.event import InputEventDto\nfrom novu.api import EventApi\n\nurl = "https://api.novu.co"\napi_key = "<NOVU_API_KEY>"\n\nevent_1 = InputEventDto(\n    name="digest-workflow-example",  # The workflow ID is the slug of the workflow name. It can be found on the workflow page.\n    recipients="<SUBSCRIBER_IDENTIFIER>",\n    payload={},  # Your custom Novu payload goes here\n)\nevent_2 = InputEventDto(\n    name="digest-workflow-example",\n    recipients="<SUBSCRIBER_IDENTIFIER>",\n    payload={},\n)\n\nnovu = EventApi("https://api.novu.co", api_key).trigger_bulk(events=[event1, event2])\n```\n\n**Broadcast to all current subscribers:**\n\n```python\nnovu = EventApi(url, api_key).broadcast(\n    name="digest-workflow-example",\n    payload={"customVariable": "value"},  # Optional\n)\n```\n\n### Subscribers\n\n```python\nfrom novu.dto.subscriber import SubscriberDto\nfrom novu.api.subscriber import SubscriberApi\n\nurl = "https://api.novu.co"\napi_key = "<NOVU_API_KEY>"\n\n# Define a subscriber instance\nsubscriber = SubscriberDto(\n    email="novu_user@mail.com",\n    subscriber_id="82a48af6ac82b3cc2157b57f", #This is what the subscriber_id looks like\n    first_name="",  # Optional\n    last_name="",  # Optional\n    phone="",  # Optional\n    avatar="",  # Optional\n)\n\n# Create a subscriber\nnovu = SubscriberApi(url, api_key).create(subscriber)\n\n# Get a subscriber\nnovu = SubscriberApi(url, api_key).get(subscriber_id)\n\n# Get list of subscribers\nnovu = SubscriberApi(url, api_key).list()\n```\n\n### Topics\n\n```python\nfrom novu.api import TopicApi\n\nurl = "<NOVU_URL>"\napi_key = "<NOVU_API_KEY>"\n\n# Create a topic\nnovu = TopicApi(url, api_key).create(\n    key="new-customers", name="New business customers"\n)\n\n# Get a topic\nnovu = TopicApi(url, api_key).get(key="new-customers")\n\n# List topics\nnovu = TopicApi(url, api_key).list()\n\n# Rename a topic\nnovu = TopicApi(url, api_key).rename(key="new-customers", name="New business customers")\n\n# Subscribe a list of subscribers to a topic\nnovu = TopicApi(url, api_key).subscribe(key="old-customers", subscribers="<LIST_OF_SUBSCRIBER_IDs>")\n\n# Unsubscribe a list of subscribers from a topic\nnovu = TopicApi(url, api_key).unsubscribe(key="old-customers", subscribers="<LIST_OF_SUBSCRIBER_IDs>")\n\n```\n\n### Feeds\n\n```python\nfrom novu.api.feed import FeedApi\n\nurl = "<NOVU_URL>"\napi_key = "<NOVU_API_KEY>"\n\n# Create a Feed\nnovu = FeedApi(url, api_key).create(name="<SUPPLY_NAME_FOR_FEED>")\n\n# Delete a Feed\nFeedApi(url, api_key).delete(feed_id="<FEED_NOVU_INTERNAL_ID>")\n\n# List feeds\nnovu = FeedApi(url, api_key).list()\n```\n\n### Environments\n\n```python\nfrom novu.api.environment import EnvironmentApi\n\nurl = "<NOVU_URL>"\napi_key = "<NOVU_API_KEY>"\n\n# Create an Environment\nnovu = EnvironmentApi(url, api_key).create(\n    name="<INSERT_NAME>",\n    parent_id="<INSERT_PARENT_ID>" # Optional. Defaults to None\n)\n\n# # List existing environments\nnovu = EnvironmentApi(url, api_key).list()\n\n# # Get the current environment\nnovu = EnvironmentApi(url, api_key).current()\n\n# # Retrieve an environment\'s API_KEY\nnovu = EnvironmentApi(url, api_key).api_keys()\n\n```\n\n### Tenants\n\n```python\nfrom novu.api.tenant import TenantApi\n\nurl = "<NOVU_URL>"\napi_key = "<NOVU_API_KEY>"\n\n# Create an Environment\ntenant = TenantApi(url, api_key).create(\n    identifier="<INSERT_UNIQUE_TENANT_ID>",\n    name="<INSERT_NAME>",\n    data={} # Optional. Defaults to {}\n)\n\n# List existing tenants\ntenants = TenantApi(url, api_key).list()\ntenants = TenantApi(url, api_key).list(page=1, limit=10)\n\n# Get a tenant\ntenant = TenantApi(url, api_key).get("<TENANT-IDENTIFIER>")\n\n# Patch some field of a tenant\ntenant = TenantApi(url, api_key).patch(\n    "<CURRENT-TENANT-IDENTIFIER>",\n    identifier="<NEW-IDENTIFIER>",\n    name="<NEW-NAME>",\n    data="<NEW-DATA>"\n)\n\n# Delete a tenant\nTenantApi(url, api_key).delete("<TENANT-IDENTIFIER>")\n```\n\n## Go further\n\nAfter a quick start with the SDK, you\'ll quickly get to grips with the advanced use of the SDK and the other APIs available.\n\nFor this purpose, documentation is available here: https://novu-python.readthedocs.io/\n\n## Development\n\n```bash\n# install deps\npoetry install\n\n# pre-commit\npoetry run pre-commit install --install-hook\npoetry run pre-commit install --install-hooks --hook-type commit-msg\n```\n',
    'author': 'oscar.marie-taillefer',
    'author_email': 'oscar.marie-taillefer@spikeelabs.fr',
    'maintainer': 'oscar.marie-taillefer',
    'maintainer_email': 'oscar.marie-taillefer@spikeelabs.fr',
    'url': 'https://novu-python.readthedocs.io/en/latest',
    'packages': packages,
    'package_data': package_data,
    'install_requires': install_requires,
    'python_requires': '>=3.8,<4.0',
}


setup(**setup_kwargs)
