diff --git a/.github/workflows/pre-commit.yaml b/.github/workflows/pre-commit.yaml new file mode 100644 index 0000000..858e465 --- /dev/null +++ b/.github/workflows/pre-commit.yaml @@ -0,0 +1,38 @@ +name: pre-commit + +on: + pull_request: + branches: + - master + types: + - opened + - reopened + - ready_for_review + - synchronize + +env: + SKIP: pytest-check + +jobs: + pre-commit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + fetch-depth: 0 # get full git history + - uses: actions/setup-python@v3 + with: + cache: 'pip' + - name: Install pre-commit + run: | + pip install pre-commit + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@v21 + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Run pre-commit + uses: pre-commit/action@v2.0.3 + with: + extra_args: --files ${{ steps.changed-files.outputs.all_changed_files }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 87de83e..2a9fd4e 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -11,16 +11,17 @@ on: jobs: test-suite: + if: github.event.pull_request.draft == false runs-on: ${{ matrix.os }} strategy: matrix: - python-version: [3.6, 3.7, 3.8] + python-version: ["3.8", "3.9", "3.10", "3.11"] os: [ubuntu-latest, macos-latest, windows-latest] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} ${{ matrix.os }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ matrix.python-version }} - name: Install dependencies @@ -30,7 +31,10 @@ jobs: pip install -r tests/requirements.txt - name: Test with pytest run: | - pytest + pytest --cov-report= --cov=btrdbextras # suppress coverage report here + - name: Coverage Report + run: | + coverage report -m release: @@ -39,7 +43,7 @@ jobs: if: startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Create Release id: create_release uses: actions/create-release@v1 @@ -59,9 +63,9 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: '3.8' - name: Install dependencies @@ -75,4 +79,4 @@ jobs: uses: pypa/gh-action-pypi-publish@master with: user: __token__ - password: ${{ secrets.PYPI_DEPLOYMENT_TOKEN }} \ No newline at end of file + password: ${{ secrets.PYPI_DEPLOYMENT_TOKEN }} diff --git a/.gitignore b/.gitignore index d5ef9f4..4629a15 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,3 @@ -# Local development -local-setup.sh -driver.py -ignore.py # OS trash .DS_Store @@ -122,3 +118,13 @@ dmypy.json # Pyre type checker .pyre/ + +# arrow parquet files +*.parquet + +.idea +.idea/misc.xml +.idea/vcs.xml +.idea/inspectionProfiles/profiles_settings.xml +.idea/inspectionProfiles/Project_Default.xml +/.idea/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..69de93a --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,51 @@ +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.5.0 + hooks: + - id: check-yaml + - id: end-of-file-fixer + - id: trailing-whitespace + exclude: setup.cfg +- repo: https://github.com/psf/black + rev: 23.11.0 + hooks: + - id: black-jupyter + args: [--line-length=88] +- repo: https://github.com/pycqa/isort + rev: 5.12.0 + hooks: + - id: isort + name: isort (python) + args: [--profile=black, --line-length=88] +- repo: https://github.com/pre-commit/pygrep-hooks + rev: v1.10.0 + hooks: # Enforce that python3.6+ type annotations are used instead of type comments + - id: python-use-type-annotations +- repo: https://github.com/PyCQA/flake8 + rev: 6.1.0 + hooks: + - id: flake8 +# args: [] +#- repo: https://github.com/PyCQA/pydocstyle +# rev: 6.1.1 +# hooks: +# - id: pydocstyle +- repo: https://github.com/kynan/nbstripout + rev: 0.6.1 + hooks: + - id: nbstripout + name: nbstripout + description: 'nbstripout: strip output from Jupyter and IPython notebooks' + entry: nbstripout + language: python + types: [jupyter] + files: kinesis/dominion_apps/ # Run only on notebooks in dominion_apps directory + # exclude: # add files here to keep output cells in Jupyter during commit +- repo: local + hooks: + - id: pytest-check + name: pytest-check + entry: pytest + language: system + pass_filenames: false + always_run: true diff --git a/LICENSE.txt b/LICENSE.txt index e07e178..87f9ad8 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -6,6 +6,6 @@ Redistribution and use in source and binary forms, with or without modification, 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/MANIFEST.in b/MANIFEST.in index cd0cdb5..99d1fdb 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -19,4 +19,4 @@ global-exclude *.py[co] global-exclude .ipynb_checkpoints global-exclude .DS_Store global-exclude .env -global-exclude .coverage.* \ No newline at end of file +global-exclude .coverage.* diff --git a/Makefile b/Makefile index 489fafa..01a5a59 100644 --- a/Makefile +++ b/Makefile @@ -12,7 +12,7 @@ SPHINXBUILDDIR = docs/build SPHINXSOURCEDIR = docs/source # Export targets not associated with files -.PHONY: test grpc +.PHONY: test coverage pip clean publish uml build deploy install # Clean build files clean: @@ -31,7 +31,12 @@ clean: -rm -rf docs/build -rm -rf platform-builds meta.yaml -# Generate new grpc code + +# Publish to gh-pages +publish: + git subtree push --prefix=deploy origin gh-pages + +# Autogenerate GRPC/PB files grpc: @echo Generating files: python -m grpc_tools.protoc -I btrdbextras/eventproc/protobuff --python_out=btrdbextras/eventproc/protobuff --grpc_python_out=btrdbextras/eventproc/protobuff btrdbextras/eventproc/protobuff/api.proto @@ -54,9 +59,11 @@ install: # Deploy to PyPI deploy: - # python setup.py register + python setup.py register twine upload dist/* --verbose # Build html version of docs html: - $(SPHINXBUILD) -b html $(SPHINXOPTS) $(SPHINXSOURCEDIR) $(SPHINXBUILDDIR) \ No newline at end of file + $(SPHINXBUILD) -b html $(SPHINXOPTS) $(SPHINXSOURCEDIR) $(SPHINXBUILDDIR) + @echo + @echo "Build finished. The HTML pages are in $(SPHINXBUILDDIR)/html." diff --git a/README.md b/README.md index 7cf7bac..3c544c5 100644 --- a/README.md +++ b/README.md @@ -43,4 +43,4 @@ Note that the documentation also requires Sphix and other dependencies to succes ## Versioning -This codebases uses a form of [Semantic Versioning](http://semver.org/) to structure version numbers. In general, the major version number will track with the BTrDB codebase to transparently maintain version compatibility. Planned features between major versions will increment the minor version while any special releases (bug fixes, etc.) will increment the patch number. \ No newline at end of file +This codebases uses a form of [Semantic Versioning](http://semver.org/) to structure version numbers. In general, the major version number will track with the BTrDB codebase to transparently maintain version compatibility. Planned features between major versions will increment the minor version while any special releases (bug fixes, etc.) will increment the patch number. diff --git a/btrdbextras/__init__.py b/btrdbextras/__init__.py index 5a9dad2..6d18cfe 100644 --- a/btrdbextras/__init__.py +++ b/btrdbextras/__init__.py @@ -1,5 +1,5 @@ from .conn import Connection -__version__ = 'v5.11.9' +__version__ = "v5.31.0" __all__ = ["__version__", "Connection"] diff --git a/btrdbextras/conn.py b/btrdbextras/conn.py index 506dfb3..da2ad8c 100644 --- a/btrdbextras/conn.py +++ b/btrdbextras/conn.py @@ -21,9 +21,13 @@ ## Classes ########################################################################## -class Connection(): - def __init__(self, endpoint=os.environ.get("BTRDB_ENDPOINTS"), apikey=os.environ.get("BTRDB_API_KEY")): +class Connection: + def __init__( + self, + endpoint=os.environ.get("BTRDB_ENDPOINTS"), + apikey=os.environ.get("BTRDB_API_KEY"), + ): if endpoint is None or endpoint.strip() == "": raise ValueError("invalid endpoint or BTRDB_ENDPOINTS env variable not set") diff --git a/btrdbextras/dq.py b/btrdbextras/dq.py index 75bcd0c..6dfc141 100644 --- a/btrdbextras/dq.py +++ b/btrdbextras/dq.py @@ -1,21 +1,24 @@ import re import warnings -from tabulate import tabulate import btrdb -from btrdb.stream import StreamSet, Stream +from btrdb.stream import Stream, StreamSet from btrdb.utils.general import pointwidth from btrdb.utils.timez import ns_delta, to_nanoseconds +from tabulate import tabulate KNOWN_DISTILLER_TYPES = ["repeats", "duplicate-times", "zeros"] + class AmbiguousDistillateError(ValueError): """ Raised when a distillate stream's name contains references to multiple known data quality distiller names """ + pass + class DQDistillate(Stream): """ Subsets a Stream object and allows for identfication of data quality events @@ -24,21 +27,26 @@ class DQDistillate(Stream): ---------- btrdb : BTrDB A reference to the BTrDB object connecting this stream back to the - physical server. + physical server. uuid : UUID The unique UUID identifier for this stream. """ + def __init__(self, btrdb, uu): # gives all same attrs/methods as Stream super().__init__(btrdb, uu) - # NOTE: this involves determining distiller type based on the distillate + # NOTE: this involves determining distiller type based on the distillate # stream name, so we will need to be careful how we name distillates - types = re.findall(r"(?=("+'|'.join(KNOWN_DISTILLER_TYPES)+r"))", self.name) + types = re.findall(r"(?=(" + "|".join(KNOWN_DISTILLER_TYPES) + r"))", self.name) if len(types) == 0: - raise ValueError(f"unknown distiller type. Must be one of [{', '.join(KNOWN_DISTILLER_TYPES)}]") + raise ValueError( + f"unknown distiller type. Must be one of [{', '.join(KNOWN_DISTILLER_TYPES)}]" + ) if len(types) > 1: - raise AmbiguousDistillateError(f"ambiguous distiller name. contains references to [{', '.join(types)}]") + raise AmbiguousDistillateError( + f"ambiguous distiller name. contains references to [{', '.join(types)}]" + ) self.type = types[0] def contains_issue(self, start=None, end=None, depth=30): @@ -69,7 +77,7 @@ def contains_issue(self, start=None, end=None, depth=30): if end is None: latest = self.latest() # adding 1 to end time because end is exclusive in windows() - end = latest[0].time +1 if latest else None + end = latest[0].time + 1 if latest else None start, end = to_nanoseconds(start), to_nanoseconds(end) # There's no event if there's no data @@ -82,6 +90,7 @@ def contains_issue(self, start=None, end=None, depth=30): def __repr__(self): return f"DQDistillate collection={self.collection}, name={self.name}, type={self.type}" + class DQStream(Stream): """ Subsets Stream object. Contains a regular BTrDB stream along with its distillate Streams @@ -90,11 +99,12 @@ class DQStream(Stream): ---------- stream: btrdb.stream.Stream """ + def __init__(self, stream): # gives all same attrs/methods as Stream super().__init__(stream._btrdb, stream.uuid) self._distillates = self._get_distillates() - + def _get_distillates(self): """ Finds distillate Streams for each of the underlying source Streams @@ -107,7 +117,9 @@ def _get_distillates(self): # NOTE: This involves looking up distillate streams by their source_uuid annotation, so we # need to make sure that all distillers give output streams this annotation distillates = [] - for stream in self._btrdb.streams_in_collection(annotations={"source_uuid": str(self.uuid)}): + for stream in self._btrdb.streams_in_collection( + annotations={"source_uuid": str(self.uuid)} + ): try: distillates.append(DQDistillate(stream._btrdb, stream.uuid)) # we only want to raise this error if we aren't sure which distiller the stream is @@ -118,16 +130,18 @@ def _get_distillates(self): else: continue if len(distillates) < 1: - warnings.warn(f"Could not find any data quality distillates for stream {str(self.uuid)}") + warnings.warn( + f"Could not find any data quality distillates for stream {str(self.uuid)}" + ) return distillates - + @property def distillates(self): """ Returns list of distillate Streams """ return self._distillates - + def list_distillates(self): """ Outputs dict that shows which distillates the DQStream has available @@ -144,8 +158,8 @@ def list_distillates(self): "name": self.name, } distillers = { - distiller: True if self[distiller] - else False for distiller in KNOWN_DISTILLER_TYPES + distiller: True if self[distiller] else False + for distiller in KNOWN_DISTILLER_TYPES } # combine basic info with distiller info return {**info, **distillers} @@ -163,7 +177,7 @@ def contains_any_issue(self, start=None, end=None, depth=30): depth: (optional) int The precision of the window duration as a power of 2 in nanoseconds. e.g 30 would make the window duration accurate to roughly 1 second - + Returns ------- bool @@ -192,7 +206,7 @@ def contains_issue(self, distil_type, start=None, end=None, depth=30): depth: (optional) int The precision of the window duration as a power of 2 in nanoseconds. e.g 30 would make the window duration accurate to roughly 1 second - + Returns ------- bool @@ -204,7 +218,7 @@ def contains_issue(self, distil_type, start=None, end=None, depth=30): except KeyError: return None return distillate.contains_issue(start=start, end=end, depth=depth) - + def __getitem__(self, item): for distillate in self._distillates: if distillate.type == item: @@ -213,7 +227,8 @@ def __getitem__(self, item): def __repr__(self): return f"DQStream collection={self.collection}, name={self.name}" - + + class DQStreamSet(StreamSet): """ Subsets a StreamSet object. Contains a list of Streams along with each of their @@ -224,7 +239,8 @@ class DQStreamSet(StreamSet): streams: list list[btrdb.stream.Stream] """ - def __init__(self, streams): + + def __init__(self, streams): dq_streams = [] for stream in streams: if not isinstance(stream, DQStream): @@ -259,12 +275,21 @@ def describe(self, notebook=False, *additional_cols): KNOWN_TAGS = ["name", "unit", "ingress", "distiller"] contains_annotations = False - table = [["Collection", "Name", "Unit", "UUID", "Version", "Available Data Quality Info"]] + table = [ + [ + "Collection", + "Name", + "Unit", + "UUID", + "Version", + "Available Data Quality Info", + ] + ] # add args as table columns if user provides them if additional_cols: if not all(a in KNOWN_TAGS for a in additional_cols): - contains_annotations=True + contains_annotations = True table[0].extend(additional_cols) # query for metadata for all streams upfront @@ -273,7 +298,10 @@ def describe(self, notebook=False, *additional_cols): uu_str = ",".join(f"'{uu}'" for uu in uuids) if not contains_annotations: query = f"SELECT uuid, name, unit, distiller, ingress FROM streams WHERE uuid IN ({uu_str})" - meta = {res["uuid"]: {tag: res.get(tag) for tag in KNOWN_TAGS} for res in self._conn.query(query)} + meta = { + res["uuid"]: {tag: res.get(tag) for tag in KNOWN_TAGS} + for res in self._conn.query(query) + } else: query = f""" SELECT uuid, annotations, name, unit, distiller, ingress @@ -281,9 +309,12 @@ def describe(self, notebook=False, *additional_cols): WHERE uuid IN ({uu_str}) """ meta = { - res["uuid"]: {**res["annotations"], **{tag: res.get(tag) for tag in KNOWN_TAGS}} - for res in self._conn.query(query) - } + res["uuid"]: { + **res["annotations"], + **{tag: res.get(tag) for tag in KNOWN_TAGS}, + } + for res in self._conn.query(query) + } # iterate through streams, lookup metadata by uuid for stream in self._streams: @@ -319,10 +350,7 @@ def list_distillates(self): as well as bool values for each distiller that denote which distillates are available to the DQStream """ - return [ - stream.list_distillates() - for stream in self._streams - ] + return [stream.list_distillates() for stream in self._streams] def contains_any_issue(self, start=None, end=None, depth=30): """ @@ -337,7 +365,7 @@ def contains_any_issue(self, start=None, end=None, depth=30): depth: (optional) int The precision of the window duration as a power of 2 in nanoseconds. e.g 30 would make the window duration accurate to roughly 1 second - + Returns ------- dict[str, bool] @@ -345,7 +373,9 @@ def contains_any_issue(self, start=None, end=None, depth=30): contain any event """ return { - str(stream.uuid): stream.contains_any_issue(start=start, end=end, depth=depth) + str(stream.uuid): stream.contains_any_issue( + start=start, end=end, depth=depth + ) for stream in self._streams } @@ -364,7 +394,7 @@ def contains_issue(self, distil_type, start=None, end=None, depth=30): depth: (optional) int The precision of the window duration as a power of 2 in nanoseconds. e.g 30 would make the window duration accurate to roughly 1 second - + Returns ------- dict[str, bool] @@ -372,10 +402,12 @@ def contains_issue(self, distil_type, start=None, end=None, depth=30): a certain event """ return { - str(stream.uuid): stream.contains_issue(distil_type, start=start, end=end, depth=depth) + str(stream.uuid): stream.contains_issue( + distil_type, start=start, end=end, depth=depth + ) for stream in self._streams } - + def __getitem__(self, index): """ Returns the DQStream contained at a given index within the set diff --git a/btrdbextras/eventproc/__init__.py b/btrdbextras/eventproc/__init__.py index ae8d7e7..ddc489b 100644 --- a/btrdbextras/eventproc/__init__.py +++ b/btrdbextras/eventproc/__init__.py @@ -1,3 +1,10 @@ -from .eventproc import hooks, list_handlers, register, deregister, upload_file, _uploads +from .eventproc import _uploads, deregister, hooks, list_handlers, register, upload_file -__all__ = ['hooks', 'list_handlers', 'register', 'deregister', 'upload_file', '_uploads'] \ No newline at end of file +__all__ = [ + "hooks", + "list_handlers", + "register", + "deregister", + "upload_file", + "_uploads", +] diff --git a/btrdbextras/eventproc/eventproc.py b/btrdbextras/eventproc/eventproc.py index f80b7d7..95b157b 100644 --- a/btrdbextras/eventproc/eventproc.py +++ b/btrdbextras/eventproc/eventproc.py @@ -17,26 +17,34 @@ import io import os -import warnings import uuid +import warnings from collections import namedtuple +import certifi import dill import grpc -import certifi from btrdb.utils.timez import ns_to_datetime -from btrdbextras.eventproc.protobuff import api_pb2 -from btrdbextras.eventproc.protobuff import api_pb2_grpc -__all__ = ['hooks', 'list_handlers', 'register', 'deregister', 'upload_file', '_uploads'] +from btrdbextras.eventproc.protobuff import api_pb2, api_pb2_grpc + +__all__ = [ + "hooks", + "list_handlers", + "register", + "deregister", + "upload_file", + "_uploads", +] _uploads = {} -PATH_PREFIX="/eventproc" +PATH_PREFIX = "/eventproc" ########################################################################## ## Helper Functions ########################################################################## + def connect(conn): parts = conn.endpoint.split(":", 2) endpoint = conn.endpoint + PATH_PREFIX @@ -67,7 +75,9 @@ def connect(conn): except Exception: if env_bundle != "": # The user has given us something but we can't use it, we need to make noise - raise Exception("BTRDB_CA_BUNDLE(%s) env is defined but could not read file" % ca_bundle) + raise Exception( + "BTRDB_CA_BUNDLE(%s) env is defined but could not read file" % ca_bundle + ) else: contents = None @@ -75,8 +85,8 @@ def connect(conn): endpoint, grpc.composite_channel_credentials( grpc.ssl_channel_credentials(contents), - grpc.access_token_call_credentials(apikey) - ) + grpc.access_token_call_credentials(apikey), + ), ) @@ -84,7 +94,11 @@ def connect(conn): ## Helper Classes ########################################################################## -HandlerBase = namedtuple("HandlerBase", "id name hook version notify_on_success notify_on_failure tags created_at created_by updated_at updated_by") +HandlerBase = namedtuple( + "HandlerBase", + "id name hook version notify_on_success notify_on_failure tags created_at created_by updated_at updated_by", +) + class Handler(HandlerBase): """ @@ -95,11 +109,20 @@ class Handler(HandlerBase): @classmethod def from_grpc(cls, h): return cls( - h.id, h.name, h.hook, h.version, h.notify_on_success, h.notify_on_failure, - h.tag, ns_to_datetime(h.created_at), h.created_by, - ns_to_datetime(h.updated_at), h.updated_by + h.id, + h.name, + h.hook, + h.version, + h.notify_on_success, + h.notify_on_failure, + h.tag, + ns_to_datetime(h.created_at), + h.created_by, + ns_to_datetime(h.updated_at), + h.updated_by, ) + class Service(object): """ Helper class to integrate with GRPC generated code. @@ -120,7 +143,17 @@ def ListHandlers(self, hook): for result in response.handlers: yield result - def Register(self, name, hook, func, apikey, notify_on_success, notify_on_failure, dependencies, tags): + def Register( + self, + name, + hook, + func, + apikey, + notify_on_success, + notify_on_failure, + dependencies, + tags, + ): # convert decorated function to bytes buff = io.BytesIO() dill.dump(func, buff) @@ -128,14 +161,14 @@ def Register(self, name, hook, func, apikey, notify_on_success, notify_on_failur params = api_pb2.RegisterRequest( registration=api_pb2.Registration( - name=name, - hook=hook, - blob=buff.read(), - api_key=apikey, - notify_on_success=notify_on_success, - notify_on_failure=notify_on_failure, - dependencies=dependencies, - tags=tags, + name=name, + hook=hook, + blob=buff.read(), + api_key=apikey, + notify_on_success=notify_on_success, + notify_on_failure=notify_on_failure, + dependencies=dependencies, + tags=tags, ) ) @@ -153,6 +186,7 @@ def Deregister(self, handler_id): ## Public Functions ########################################################################## + def hooks(conn): """ List registered hooks. @@ -165,6 +199,7 @@ def hooks(conn): s = Service(connect(conn)) return s.ListHooks() + def list_handlers(conn, hook=""): """ List registered handlers. An optional hook name is allowed to filter @@ -227,16 +262,25 @@ def register(conn, name, hook, notify_on_success, notify_on_failure, tags=None): # inner will actually receive the decorated func but we still have access # to the args & kwargs due to closure/scope. def inner(func): - # call grpc service to register event handler s = Service(connect(conn)) - _ = s.Register(name, hook, func, conn.apikey, notify_on_success, notify_on_failure, dependencies, tags) + _ = s.Register( + name, + hook, + func, + conn.apikey, + notify_on_success, + notify_on_failure, + dependencies, + tags, + ) # return original func back to user return func return inner + def upload_file(file, file_name): """ Uploads file to S3. Returns a link to download the file. @@ -256,12 +300,12 @@ def upload_file(file, file_name): TypeError: file_name must be a string. ValueError: file must be a path to a file, relative to the home directory. ValueError: file_name cannot be longer than 200 characters, is . - + Returns ---------- string: Download link to the object. None if upload was not attempted. """ - + # check the inputs if not isinstance(file, str): raise TypeError("file must be a string.") @@ -270,16 +314,20 @@ def upload_file(file, file_name): if not os.path.exists(file): raise ValueError("file must be a path to a file.") if len(file_name) > 200: - raise ValueError("file_name cannot be longer than 200 characters, is {0}.".format(len(file_name))) + raise ValueError( + "file_name cannot be longer than 200 characters, is {0}.".format( + len(file_name) + ) + ) # check the context if not os.getenv("EXECUTOR_CONTEXT") == "true": m = "upload_file is running in an execution context without the appropriate AWS credentials and will not upload to S3." warnings.warn(m) return None - + # queue the upload, to be completed by the executor when the handler completes code = str(uuid.uuid4().hex) _uploads[code] = [file, file_name] - - return "https://{0}/{1}".format(os.getenv("DOWNLOADS_ENDPOINT"), code) \ No newline at end of file + + return "https://{0}/{1}".format(os.getenv("DOWNLOADS_ENDPOINT"), code) diff --git a/btrdbextras/eventproc/protobuff/api_pb2.py b/btrdbextras/eventproc/protobuff/api_pb2.py index b08d400..bd69e75 100644 --- a/btrdbextras/eventproc/protobuff/api_pb2.py +++ b/btrdbextras/eventproc/protobuff/api_pb2.py @@ -6,651 +6,1006 @@ from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database + # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() - - DESCRIPTOR = _descriptor.FileDescriptor( - name='api.proto', - package='eventprocapi', - syntax='proto3', - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\tapi.proto\x12\x0c\x65ventprocapi\"#\n\x13ListHandlersRequest\x12\x0c\n\x04hook\x18\x01 \x01(\t\"?\n\x14ListHandlersResponse\x12\'\n\x08handlers\x18\x01 \x03(\x0b\x32\x15.eventprocapi.Handler\"\xe7\x01\n\x07Handler\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04hook\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0f\n\x07version\x18\x04 \x01(\x05\x12\x10\n\x08\x63\x61llable\x18\x05 \x01(\t\x12\x0b\n\x03tag\x18\x06 \x03(\t\x12\x19\n\x11notify_on_success\x18\x07 \x01(\t\x12\x19\n\x11notify_on_failure\x18\x08 \x01(\t\x12\x12\n\ncreated_by\x18\t \x01(\t\x12\x12\n\ncreated_at\x18\n \x01(\x03\x12\x12\n\nupdated_by\x18\x0b \x01(\t\x12\x12\n\nupdated_at\x18\x0c \x01(\x03\"\x12\n\x10ListHooksRequest\"6\n\x11ListHooksResponse\x12!\n\x05hooks\x18\x01 \x03(\x0b\x32\x12.eventprocapi.Hook\"\x14\n\x04Hook\x12\x0c\n\x04name\x18\x01 \x01(\t\"\xb1\x01\n\x0cRegistration\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04hook\x18\x02 \x01(\t\x12\x0c\n\x04tags\x18\x03 \x03(\t\x12\x0c\n\x04\x62lob\x18\x04 \x01(\x0c\x12\x19\n\x11notify_on_success\x18\x05 \x01(\t\x12\x19\n\x11notify_on_failure\x18\x06 \x01(\t\x12\x14\n\x0c\x64\x65pendencies\x18\x07 \x01(\t\x12\x0c\n\x04user\x18\x08 \x01(\t\x12\x0f\n\x07\x61pi_key\x18\t \x01(\t\"C\n\x0fRegisterRequest\x12\x30\n\x0cregistration\x18\x01 \x01(\x0b\x32\x1a.eventprocapi.Registration\":\n\x10RegisterResponse\x12&\n\x07handler\x18\x01 \x01(\x0b\x32\x15.eventprocapi.Handler\"\x1f\n\x11\x44\x65registerRequest\x12\n\n\x02id\x18\x01 \x01(\x05\" \n\x12\x44\x65registerResponse\x12\n\n\x02id\x18\x01 \x01(\x05\x32\xe1\x02\n\x16\x45ventProcessingService\x12N\n\tListHooks\x12\x1e.eventprocapi.ListHooksRequest\x1a\x1f.eventprocapi.ListHooksResponse\"\x00\x12W\n\x0cListHandlers\x12!.eventprocapi.ListHandlersRequest\x1a\".eventprocapi.ListHandlersResponse\"\x00\x12K\n\x08Register\x12\x1d.eventprocapi.RegisterRequest\x1a\x1e.eventprocapi.RegisterResponse\"\x00\x12Q\n\nDeregister\x12\x1f.eventprocapi.DeregisterRequest\x1a .eventprocapi.DeregisterResponse\"\x00\x62\x06proto3' + name="api.proto", + package="eventprocapi", + syntax="proto3", + serialized_options=None, + create_key=_descriptor._internal_create_key, + serialized_pb=b'\n\tapi.proto\x12\x0c\x65ventprocapi"#\n\x13ListHandlersRequest\x12\x0c\n\x04hook\x18\x01 \x01(\t"?\n\x14ListHandlersResponse\x12\'\n\x08handlers\x18\x01 \x03(\x0b\x32\x15.eventprocapi.Handler"\xe7\x01\n\x07Handler\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04hook\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0f\n\x07version\x18\x04 \x01(\x05\x12\x10\n\x08\x63\x61llable\x18\x05 \x01(\t\x12\x0b\n\x03tag\x18\x06 \x03(\t\x12\x19\n\x11notify_on_success\x18\x07 \x01(\t\x12\x19\n\x11notify_on_failure\x18\x08 \x01(\t\x12\x12\n\ncreated_by\x18\t \x01(\t\x12\x12\n\ncreated_at\x18\n \x01(\x03\x12\x12\n\nupdated_by\x18\x0b \x01(\t\x12\x12\n\nupdated_at\x18\x0c \x01(\x03"\x12\n\x10ListHooksRequest"6\n\x11ListHooksResponse\x12!\n\x05hooks\x18\x01 \x03(\x0b\x32\x12.eventprocapi.Hook"\x14\n\x04Hook\x12\x0c\n\x04name\x18\x01 \x01(\t"\xb1\x01\n\x0cRegistration\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04hook\x18\x02 \x01(\t\x12\x0c\n\x04tags\x18\x03 \x03(\t\x12\x0c\n\x04\x62lob\x18\x04 \x01(\x0c\x12\x19\n\x11notify_on_success\x18\x05 \x01(\t\x12\x19\n\x11notify_on_failure\x18\x06 \x01(\t\x12\x14\n\x0c\x64\x65pendencies\x18\x07 \x01(\t\x12\x0c\n\x04user\x18\x08 \x01(\t\x12\x0f\n\x07\x61pi_key\x18\t \x01(\t"C\n\x0fRegisterRequest\x12\x30\n\x0cregistration\x18\x01 \x01(\x0b\x32\x1a.eventprocapi.Registration":\n\x10RegisterResponse\x12&\n\x07handler\x18\x01 \x01(\x0b\x32\x15.eventprocapi.Handler"\x1f\n\x11\x44\x65registerRequest\x12\n\n\x02id\x18\x01 \x01(\x05" \n\x12\x44\x65registerResponse\x12\n\n\x02id\x18\x01 \x01(\x05\x32\xe1\x02\n\x16\x45ventProcessingService\x12N\n\tListHooks\x12\x1e.eventprocapi.ListHooksRequest\x1a\x1f.eventprocapi.ListHooksResponse"\x00\x12W\n\x0cListHandlers\x12!.eventprocapi.ListHandlersRequest\x1a".eventprocapi.ListHandlersResponse"\x00\x12K\n\x08Register\x12\x1d.eventprocapi.RegisterRequest\x1a\x1e.eventprocapi.RegisterResponse"\x00\x12Q\n\nDeregister\x12\x1f.eventprocapi.DeregisterRequest\x1a .eventprocapi.DeregisterResponse"\x00\x62\x06proto3', ) - - _LISTHANDLERSREQUEST = _descriptor.Descriptor( - name='ListHandlersRequest', - full_name='eventprocapi.ListHandlersRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='hook', full_name='eventprocapi.ListHandlersRequest.hook', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=27, - serialized_end=62, + name="ListHandlersRequest", + full_name="eventprocapi.ListHandlersRequest", + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name="hook", + full_name="eventprocapi.ListHandlersRequest.hook", + index=0, + number=1, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=27, + serialized_end=62, ) _LISTHANDLERSRESPONSE = _descriptor.Descriptor( - name='ListHandlersResponse', - full_name='eventprocapi.ListHandlersResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='handlers', full_name='eventprocapi.ListHandlersResponse.handlers', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=64, - serialized_end=127, + name="ListHandlersResponse", + full_name="eventprocapi.ListHandlersResponse", + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name="handlers", + full_name="eventprocapi.ListHandlersResponse.handlers", + index=0, + number=1, + type=11, + cpp_type=10, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=64, + serialized_end=127, ) _HANDLER = _descriptor.Descriptor( - name='Handler', - full_name='eventprocapi.Handler', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='id', full_name='eventprocapi.Handler.id', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='hook', full_name='eventprocapi.Handler.hook', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='name', full_name='eventprocapi.Handler.name', index=2, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='version', full_name='eventprocapi.Handler.version', index=3, - number=4, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='callable', full_name='eventprocapi.Handler.callable', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='tag', full_name='eventprocapi.Handler.tag', index=5, - number=6, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='notify_on_success', full_name='eventprocapi.Handler.notify_on_success', index=6, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='notify_on_failure', full_name='eventprocapi.Handler.notify_on_failure', index=7, - number=8, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='created_by', full_name='eventprocapi.Handler.created_by', index=8, - number=9, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='created_at', full_name='eventprocapi.Handler.created_at', index=9, - number=10, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='updated_by', full_name='eventprocapi.Handler.updated_by', index=10, - number=11, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='updated_at', full_name='eventprocapi.Handler.updated_at', index=11, - number=12, type=3, cpp_type=2, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=130, - serialized_end=361, + name="Handler", + full_name="eventprocapi.Handler", + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name="id", + full_name="eventprocapi.Handler.id", + index=0, + number=1, + type=5, + cpp_type=1, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="hook", + full_name="eventprocapi.Handler.hook", + index=1, + number=2, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="name", + full_name="eventprocapi.Handler.name", + index=2, + number=3, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="version", + full_name="eventprocapi.Handler.version", + index=3, + number=4, + type=5, + cpp_type=1, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="callable", + full_name="eventprocapi.Handler.callable", + index=4, + number=5, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="tag", + full_name="eventprocapi.Handler.tag", + index=5, + number=6, + type=9, + cpp_type=9, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="notify_on_success", + full_name="eventprocapi.Handler.notify_on_success", + index=6, + number=7, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="notify_on_failure", + full_name="eventprocapi.Handler.notify_on_failure", + index=7, + number=8, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="created_by", + full_name="eventprocapi.Handler.created_by", + index=8, + number=9, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="created_at", + full_name="eventprocapi.Handler.created_at", + index=9, + number=10, + type=3, + cpp_type=2, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="updated_by", + full_name="eventprocapi.Handler.updated_by", + index=10, + number=11, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="updated_at", + full_name="eventprocapi.Handler.updated_at", + index=11, + number=12, + type=3, + cpp_type=2, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=130, + serialized_end=361, ) _LISTHOOKSREQUEST = _descriptor.Descriptor( - name='ListHooksRequest', - full_name='eventprocapi.ListHooksRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=363, - serialized_end=381, + name="ListHooksRequest", + full_name="eventprocapi.ListHooksRequest", + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=363, + serialized_end=381, ) _LISTHOOKSRESPONSE = _descriptor.Descriptor( - name='ListHooksResponse', - full_name='eventprocapi.ListHooksResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='hooks', full_name='eventprocapi.ListHooksResponse.hooks', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=383, - serialized_end=437, + name="ListHooksResponse", + full_name="eventprocapi.ListHooksResponse", + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name="hooks", + full_name="eventprocapi.ListHooksResponse.hooks", + index=0, + number=1, + type=11, + cpp_type=10, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=383, + serialized_end=437, ) _HOOK = _descriptor.Descriptor( - name='Hook', - full_name='eventprocapi.Hook', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='name', full_name='eventprocapi.Hook.name', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=439, - serialized_end=459, + name="Hook", + full_name="eventprocapi.Hook", + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name="name", + full_name="eventprocapi.Hook.name", + index=0, + number=1, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=439, + serialized_end=459, ) _REGISTRATION = _descriptor.Descriptor( - name='Registration', - full_name='eventprocapi.Registration', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='name', full_name='eventprocapi.Registration.name', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='hook', full_name='eventprocapi.Registration.hook', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='tags', full_name='eventprocapi.Registration.tags', index=2, - number=3, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='blob', full_name='eventprocapi.Registration.blob', index=3, - number=4, type=12, cpp_type=9, label=1, - has_default_value=False, default_value=b"", - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='notify_on_success', full_name='eventprocapi.Registration.notify_on_success', index=4, - number=5, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='notify_on_failure', full_name='eventprocapi.Registration.notify_on_failure', index=5, - number=6, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='dependencies', full_name='eventprocapi.Registration.dependencies', index=6, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='user', full_name='eventprocapi.Registration.user', index=7, - number=8, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - _descriptor.FieldDescriptor( - name='api_key', full_name='eventprocapi.Registration.api_key', index=8, - number=9, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=462, - serialized_end=639, + name="Registration", + full_name="eventprocapi.Registration", + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name="name", + full_name="eventprocapi.Registration.name", + index=0, + number=1, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="hook", + full_name="eventprocapi.Registration.hook", + index=1, + number=2, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="tags", + full_name="eventprocapi.Registration.tags", + index=2, + number=3, + type=9, + cpp_type=9, + label=3, + has_default_value=False, + default_value=[], + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="blob", + full_name="eventprocapi.Registration.blob", + index=3, + number=4, + type=12, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"", + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="notify_on_success", + full_name="eventprocapi.Registration.notify_on_success", + index=4, + number=5, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="notify_on_failure", + full_name="eventprocapi.Registration.notify_on_failure", + index=5, + number=6, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="dependencies", + full_name="eventprocapi.Registration.dependencies", + index=6, + number=7, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="user", + full_name="eventprocapi.Registration.user", + index=7, + number=8, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + _descriptor.FieldDescriptor( + name="api_key", + full_name="eventprocapi.Registration.api_key", + index=8, + number=9, + type=9, + cpp_type=9, + label=1, + has_default_value=False, + default_value=b"".decode("utf-8"), + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=462, + serialized_end=639, ) _REGISTERREQUEST = _descriptor.Descriptor( - name='RegisterRequest', - full_name='eventprocapi.RegisterRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='registration', full_name='eventprocapi.RegisterRequest.registration', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=641, - serialized_end=708, + name="RegisterRequest", + full_name="eventprocapi.RegisterRequest", + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name="registration", + full_name="eventprocapi.RegisterRequest.registration", + index=0, + number=1, + type=11, + cpp_type=10, + label=1, + has_default_value=False, + default_value=None, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=641, + serialized_end=708, ) _REGISTERRESPONSE = _descriptor.Descriptor( - name='RegisterResponse', - full_name='eventprocapi.RegisterResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='handler', full_name='eventprocapi.RegisterResponse.handler', index=0, - number=1, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=710, - serialized_end=768, + name="RegisterResponse", + full_name="eventprocapi.RegisterResponse", + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name="handler", + full_name="eventprocapi.RegisterResponse.handler", + index=0, + number=1, + type=11, + cpp_type=10, + label=1, + has_default_value=False, + default_value=None, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=710, + serialized_end=768, ) _DEREGISTERREQUEST = _descriptor.Descriptor( - name='DeregisterRequest', - full_name='eventprocapi.DeregisterRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='id', full_name='eventprocapi.DeregisterRequest.id', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=770, - serialized_end=801, + name="DeregisterRequest", + full_name="eventprocapi.DeregisterRequest", + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name="id", + full_name="eventprocapi.DeregisterRequest.id", + index=0, + number=1, + type=5, + cpp_type=1, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=770, + serialized_end=801, ) _DEREGISTERRESPONSE = _descriptor.Descriptor( - name='DeregisterResponse', - full_name='eventprocapi.DeregisterResponse', - filename=None, - file=DESCRIPTOR, - containing_type=None, - create_key=_descriptor._internal_create_key, - fields=[ - _descriptor.FieldDescriptor( - name='id', full_name='eventprocapi.DeregisterResponse.id', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto3', - extension_ranges=[], - oneofs=[ - ], - serialized_start=803, - serialized_end=835, + name="DeregisterResponse", + full_name="eventprocapi.DeregisterResponse", + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name="id", + full_name="eventprocapi.DeregisterResponse.id", + index=0, + number=1, + type=5, + cpp_type=1, + label=1, + has_default_value=False, + default_value=0, + message_type=None, + enum_type=None, + containing_type=None, + is_extension=False, + extension_scope=None, + serialized_options=None, + file=DESCRIPTOR, + create_key=_descriptor._internal_create_key, + ), + ], + extensions=[], + nested_types=[], + enum_types=[], + serialized_options=None, + is_extendable=False, + syntax="proto3", + extension_ranges=[], + oneofs=[], + serialized_start=803, + serialized_end=835, ) -_LISTHANDLERSRESPONSE.fields_by_name['handlers'].message_type = _HANDLER -_LISTHOOKSRESPONSE.fields_by_name['hooks'].message_type = _HOOK -_REGISTERREQUEST.fields_by_name['registration'].message_type = _REGISTRATION -_REGISTERRESPONSE.fields_by_name['handler'].message_type = _HANDLER -DESCRIPTOR.message_types_by_name['ListHandlersRequest'] = _LISTHANDLERSREQUEST -DESCRIPTOR.message_types_by_name['ListHandlersResponse'] = _LISTHANDLERSRESPONSE -DESCRIPTOR.message_types_by_name['Handler'] = _HANDLER -DESCRIPTOR.message_types_by_name['ListHooksRequest'] = _LISTHOOKSREQUEST -DESCRIPTOR.message_types_by_name['ListHooksResponse'] = _LISTHOOKSRESPONSE -DESCRIPTOR.message_types_by_name['Hook'] = _HOOK -DESCRIPTOR.message_types_by_name['Registration'] = _REGISTRATION -DESCRIPTOR.message_types_by_name['RegisterRequest'] = _REGISTERREQUEST -DESCRIPTOR.message_types_by_name['RegisterResponse'] = _REGISTERRESPONSE -DESCRIPTOR.message_types_by_name['DeregisterRequest'] = _DEREGISTERREQUEST -DESCRIPTOR.message_types_by_name['DeregisterResponse'] = _DEREGISTERRESPONSE +_LISTHANDLERSRESPONSE.fields_by_name["handlers"].message_type = _HANDLER +_LISTHOOKSRESPONSE.fields_by_name["hooks"].message_type = _HOOK +_REGISTERREQUEST.fields_by_name["registration"].message_type = _REGISTRATION +_REGISTERRESPONSE.fields_by_name["handler"].message_type = _HANDLER +DESCRIPTOR.message_types_by_name["ListHandlersRequest"] = _LISTHANDLERSREQUEST +DESCRIPTOR.message_types_by_name["ListHandlersResponse"] = _LISTHANDLERSRESPONSE +DESCRIPTOR.message_types_by_name["Handler"] = _HANDLER +DESCRIPTOR.message_types_by_name["ListHooksRequest"] = _LISTHOOKSREQUEST +DESCRIPTOR.message_types_by_name["ListHooksResponse"] = _LISTHOOKSRESPONSE +DESCRIPTOR.message_types_by_name["Hook"] = _HOOK +DESCRIPTOR.message_types_by_name["Registration"] = _REGISTRATION +DESCRIPTOR.message_types_by_name["RegisterRequest"] = _REGISTERREQUEST +DESCRIPTOR.message_types_by_name["RegisterResponse"] = _REGISTERRESPONSE +DESCRIPTOR.message_types_by_name["DeregisterRequest"] = _DEREGISTERREQUEST +DESCRIPTOR.message_types_by_name["DeregisterResponse"] = _DEREGISTERRESPONSE _sym_db.RegisterFileDescriptor(DESCRIPTOR) -ListHandlersRequest = _reflection.GeneratedProtocolMessageType('ListHandlersRequest', (_message.Message,), { - 'DESCRIPTOR' : _LISTHANDLERSREQUEST, - '__module__' : 'api_pb2' - # @@protoc_insertion_point(class_scope:eventprocapi.ListHandlersRequest) - }) +ListHandlersRequest = _reflection.GeneratedProtocolMessageType( + "ListHandlersRequest", + (_message.Message,), + { + "DESCRIPTOR": _LISTHANDLERSREQUEST, + "__module__": "api_pb2" + # @@protoc_insertion_point(class_scope:eventprocapi.ListHandlersRequest) + }, +) _sym_db.RegisterMessage(ListHandlersRequest) -ListHandlersResponse = _reflection.GeneratedProtocolMessageType('ListHandlersResponse', (_message.Message,), { - 'DESCRIPTOR' : _LISTHANDLERSRESPONSE, - '__module__' : 'api_pb2' - # @@protoc_insertion_point(class_scope:eventprocapi.ListHandlersResponse) - }) +ListHandlersResponse = _reflection.GeneratedProtocolMessageType( + "ListHandlersResponse", + (_message.Message,), + { + "DESCRIPTOR": _LISTHANDLERSRESPONSE, + "__module__": "api_pb2" + # @@protoc_insertion_point(class_scope:eventprocapi.ListHandlersResponse) + }, +) _sym_db.RegisterMessage(ListHandlersResponse) -Handler = _reflection.GeneratedProtocolMessageType('Handler', (_message.Message,), { - 'DESCRIPTOR' : _HANDLER, - '__module__' : 'api_pb2' - # @@protoc_insertion_point(class_scope:eventprocapi.Handler) - }) +Handler = _reflection.GeneratedProtocolMessageType( + "Handler", + (_message.Message,), + { + "DESCRIPTOR": _HANDLER, + "__module__": "api_pb2" + # @@protoc_insertion_point(class_scope:eventprocapi.Handler) + }, +) _sym_db.RegisterMessage(Handler) -ListHooksRequest = _reflection.GeneratedProtocolMessageType('ListHooksRequest', (_message.Message,), { - 'DESCRIPTOR' : _LISTHOOKSREQUEST, - '__module__' : 'api_pb2' - # @@protoc_insertion_point(class_scope:eventprocapi.ListHooksRequest) - }) +ListHooksRequest = _reflection.GeneratedProtocolMessageType( + "ListHooksRequest", + (_message.Message,), + { + "DESCRIPTOR": _LISTHOOKSREQUEST, + "__module__": "api_pb2" + # @@protoc_insertion_point(class_scope:eventprocapi.ListHooksRequest) + }, +) _sym_db.RegisterMessage(ListHooksRequest) -ListHooksResponse = _reflection.GeneratedProtocolMessageType('ListHooksResponse', (_message.Message,), { - 'DESCRIPTOR' : _LISTHOOKSRESPONSE, - '__module__' : 'api_pb2' - # @@protoc_insertion_point(class_scope:eventprocapi.ListHooksResponse) - }) +ListHooksResponse = _reflection.GeneratedProtocolMessageType( + "ListHooksResponse", + (_message.Message,), + { + "DESCRIPTOR": _LISTHOOKSRESPONSE, + "__module__": "api_pb2" + # @@protoc_insertion_point(class_scope:eventprocapi.ListHooksResponse) + }, +) _sym_db.RegisterMessage(ListHooksResponse) -Hook = _reflection.GeneratedProtocolMessageType('Hook', (_message.Message,), { - 'DESCRIPTOR' : _HOOK, - '__module__' : 'api_pb2' - # @@protoc_insertion_point(class_scope:eventprocapi.Hook) - }) +Hook = _reflection.GeneratedProtocolMessageType( + "Hook", + (_message.Message,), + { + "DESCRIPTOR": _HOOK, + "__module__": "api_pb2" + # @@protoc_insertion_point(class_scope:eventprocapi.Hook) + }, +) _sym_db.RegisterMessage(Hook) -Registration = _reflection.GeneratedProtocolMessageType('Registration', (_message.Message,), { - 'DESCRIPTOR' : _REGISTRATION, - '__module__' : 'api_pb2' - # @@protoc_insertion_point(class_scope:eventprocapi.Registration) - }) +Registration = _reflection.GeneratedProtocolMessageType( + "Registration", + (_message.Message,), + { + "DESCRIPTOR": _REGISTRATION, + "__module__": "api_pb2" + # @@protoc_insertion_point(class_scope:eventprocapi.Registration) + }, +) _sym_db.RegisterMessage(Registration) -RegisterRequest = _reflection.GeneratedProtocolMessageType('RegisterRequest', (_message.Message,), { - 'DESCRIPTOR' : _REGISTERREQUEST, - '__module__' : 'api_pb2' - # @@protoc_insertion_point(class_scope:eventprocapi.RegisterRequest) - }) +RegisterRequest = _reflection.GeneratedProtocolMessageType( + "RegisterRequest", + (_message.Message,), + { + "DESCRIPTOR": _REGISTERREQUEST, + "__module__": "api_pb2" + # @@protoc_insertion_point(class_scope:eventprocapi.RegisterRequest) + }, +) _sym_db.RegisterMessage(RegisterRequest) -RegisterResponse = _reflection.GeneratedProtocolMessageType('RegisterResponse', (_message.Message,), { - 'DESCRIPTOR' : _REGISTERRESPONSE, - '__module__' : 'api_pb2' - # @@protoc_insertion_point(class_scope:eventprocapi.RegisterResponse) - }) +RegisterResponse = _reflection.GeneratedProtocolMessageType( + "RegisterResponse", + (_message.Message,), + { + "DESCRIPTOR": _REGISTERRESPONSE, + "__module__": "api_pb2" + # @@protoc_insertion_point(class_scope:eventprocapi.RegisterResponse) + }, +) _sym_db.RegisterMessage(RegisterResponse) -DeregisterRequest = _reflection.GeneratedProtocolMessageType('DeregisterRequest', (_message.Message,), { - 'DESCRIPTOR' : _DEREGISTERREQUEST, - '__module__' : 'api_pb2' - # @@protoc_insertion_point(class_scope:eventprocapi.DeregisterRequest) - }) +DeregisterRequest = _reflection.GeneratedProtocolMessageType( + "DeregisterRequest", + (_message.Message,), + { + "DESCRIPTOR": _DEREGISTERREQUEST, + "__module__": "api_pb2" + # @@protoc_insertion_point(class_scope:eventprocapi.DeregisterRequest) + }, +) _sym_db.RegisterMessage(DeregisterRequest) -DeregisterResponse = _reflection.GeneratedProtocolMessageType('DeregisterResponse', (_message.Message,), { - 'DESCRIPTOR' : _DEREGISTERRESPONSE, - '__module__' : 'api_pb2' - # @@protoc_insertion_point(class_scope:eventprocapi.DeregisterResponse) - }) +DeregisterResponse = _reflection.GeneratedProtocolMessageType( + "DeregisterResponse", + (_message.Message,), + { + "DESCRIPTOR": _DEREGISTERRESPONSE, + "__module__": "api_pb2" + # @@protoc_insertion_point(class_scope:eventprocapi.DeregisterResponse) + }, +) _sym_db.RegisterMessage(DeregisterResponse) - _EVENTPROCESSINGSERVICE = _descriptor.ServiceDescriptor( - name='EventProcessingService', - full_name='eventprocapi.EventProcessingService', - file=DESCRIPTOR, - index=0, - serialized_options=None, - create_key=_descriptor._internal_create_key, - serialized_start=838, - serialized_end=1191, - methods=[ - _descriptor.MethodDescriptor( - name='ListHooks', - full_name='eventprocapi.EventProcessingService.ListHooks', + name="EventProcessingService", + full_name="eventprocapi.EventProcessingService", + file=DESCRIPTOR, index=0, - containing_service=None, - input_type=_LISTHOOKSREQUEST, - output_type=_LISTHOOKSRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name='ListHandlers', - full_name='eventprocapi.EventProcessingService.ListHandlers', - index=1, - containing_service=None, - input_type=_LISTHANDLERSREQUEST, - output_type=_LISTHANDLERSRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name='Register', - full_name='eventprocapi.EventProcessingService.Register', - index=2, - containing_service=None, - input_type=_REGISTERREQUEST, - output_type=_REGISTERRESPONSE, serialized_options=None, create_key=_descriptor._internal_create_key, - ), - _descriptor.MethodDescriptor( - name='Deregister', - full_name='eventprocapi.EventProcessingService.Deregister', - index=3, - containing_service=None, - input_type=_DEREGISTERREQUEST, - output_type=_DEREGISTERRESPONSE, - serialized_options=None, - create_key=_descriptor._internal_create_key, - ), -]) + serialized_start=838, + serialized_end=1191, + methods=[ + _descriptor.MethodDescriptor( + name="ListHooks", + full_name="eventprocapi.EventProcessingService.ListHooks", + index=0, + containing_service=None, + input_type=_LISTHOOKSREQUEST, + output_type=_LISTHOOKSRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name="ListHandlers", + full_name="eventprocapi.EventProcessingService.ListHandlers", + index=1, + containing_service=None, + input_type=_LISTHANDLERSREQUEST, + output_type=_LISTHANDLERSRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name="Register", + full_name="eventprocapi.EventProcessingService.Register", + index=2, + containing_service=None, + input_type=_REGISTERREQUEST, + output_type=_REGISTERRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + _descriptor.MethodDescriptor( + name="Deregister", + full_name="eventprocapi.EventProcessingService.Deregister", + index=3, + containing_service=None, + input_type=_DEREGISTERREQUEST, + output_type=_DEREGISTERRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), + ], +) _sym_db.RegisterServiceDescriptor(_EVENTPROCESSINGSERVICE) -DESCRIPTOR.services_by_name['EventProcessingService'] = _EVENTPROCESSINGSERVICE +DESCRIPTOR.services_by_name["EventProcessingService"] = _EVENTPROCESSINGSERVICE # @@protoc_insertion_point(module_scope) diff --git a/btrdbextras/eventproc/protobuff/api_pb2_grpc.py b/btrdbextras/eventproc/protobuff/api_pb2_grpc.py index ec3abe4..ac02e3d 100644 --- a/btrdbextras/eventproc/protobuff/api_pb2_grpc.py +++ b/btrdbextras/eventproc/protobuff/api_pb2_grpc.py @@ -4,6 +4,7 @@ import btrdbextras.eventproc.protobuff.api_pb2 as api__pb2 + class EventProcessingServiceStub(object): """Missing associated documentation comment in .proto file.""" @@ -14,25 +15,25 @@ def __init__(self, channel): channel: A grpc.Channel. """ self.ListHooks = channel.unary_unary( - '/eventprocapi.EventProcessingService/ListHooks', - request_serializer=api__pb2.ListHooksRequest.SerializeToString, - response_deserializer=api__pb2.ListHooksResponse.FromString, - ) + "/eventprocapi.EventProcessingService/ListHooks", + request_serializer=api__pb2.ListHooksRequest.SerializeToString, + response_deserializer=api__pb2.ListHooksResponse.FromString, + ) self.ListHandlers = channel.unary_unary( - '/eventprocapi.EventProcessingService/ListHandlers', - request_serializer=api__pb2.ListHandlersRequest.SerializeToString, - response_deserializer=api__pb2.ListHandlersResponse.FromString, - ) + "/eventprocapi.EventProcessingService/ListHandlers", + request_serializer=api__pb2.ListHandlersRequest.SerializeToString, + response_deserializer=api__pb2.ListHandlersResponse.FromString, + ) self.Register = channel.unary_unary( - '/eventprocapi.EventProcessingService/Register', - request_serializer=api__pb2.RegisterRequest.SerializeToString, - response_deserializer=api__pb2.RegisterResponse.FromString, - ) + "/eventprocapi.EventProcessingService/Register", + request_serializer=api__pb2.RegisterRequest.SerializeToString, + response_deserializer=api__pb2.RegisterResponse.FromString, + ) self.Deregister = channel.unary_unary( - '/eventprocapi.EventProcessingService/Deregister', - request_serializer=api__pb2.DeregisterRequest.SerializeToString, - response_deserializer=api__pb2.DeregisterResponse.FromString, - ) + "/eventprocapi.EventProcessingService/Deregister", + request_serializer=api__pb2.DeregisterRequest.SerializeToString, + response_deserializer=api__pb2.DeregisterResponse.FromString, + ) class EventProcessingServiceServicer(object): @@ -41,124 +42,173 @@ class EventProcessingServiceServicer(object): def ListHooks(self, request, context): """Missing associated documentation comment in .proto file.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") def ListHandlers(self, request, context): """Missing associated documentation comment in .proto file.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") def Register(self, request, context): """Missing associated documentation comment in .proto file.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") def Deregister(self, request, context): """Missing associated documentation comment in .proto file.""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') + context.set_details("Method not implemented!") + raise NotImplementedError("Method not implemented!") def add_EventProcessingServiceServicer_to_server(servicer, server): rpc_method_handlers = { - 'ListHooks': grpc.unary_unary_rpc_method_handler( - servicer.ListHooks, - request_deserializer=api__pb2.ListHooksRequest.FromString, - response_serializer=api__pb2.ListHooksResponse.SerializeToString, - ), - 'ListHandlers': grpc.unary_unary_rpc_method_handler( - servicer.ListHandlers, - request_deserializer=api__pb2.ListHandlersRequest.FromString, - response_serializer=api__pb2.ListHandlersResponse.SerializeToString, - ), - 'Register': grpc.unary_unary_rpc_method_handler( - servicer.Register, - request_deserializer=api__pb2.RegisterRequest.FromString, - response_serializer=api__pb2.RegisterResponse.SerializeToString, - ), - 'Deregister': grpc.unary_unary_rpc_method_handler( - servicer.Deregister, - request_deserializer=api__pb2.DeregisterRequest.FromString, - response_serializer=api__pb2.DeregisterResponse.SerializeToString, - ), + "ListHooks": grpc.unary_unary_rpc_method_handler( + servicer.ListHooks, + request_deserializer=api__pb2.ListHooksRequest.FromString, + response_serializer=api__pb2.ListHooksResponse.SerializeToString, + ), + "ListHandlers": grpc.unary_unary_rpc_method_handler( + servicer.ListHandlers, + request_deserializer=api__pb2.ListHandlersRequest.FromString, + response_serializer=api__pb2.ListHandlersResponse.SerializeToString, + ), + "Register": grpc.unary_unary_rpc_method_handler( + servicer.Register, + request_deserializer=api__pb2.RegisterRequest.FromString, + response_serializer=api__pb2.RegisterResponse.SerializeToString, + ), + "Deregister": grpc.unary_unary_rpc_method_handler( + servicer.Deregister, + request_deserializer=api__pb2.DeregisterRequest.FromString, + response_serializer=api__pb2.DeregisterResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( - 'eventprocapi.EventProcessingService', rpc_method_handlers) + "eventprocapi.EventProcessingService", rpc_method_handlers + ) server.add_generic_rpc_handlers((generic_handler,)) - # This class is part of an EXPERIMENTAL API. +# This class is part of an EXPERIMENTAL API. class EventProcessingService(object): """Missing associated documentation comment in .proto file.""" @staticmethod - def ListHooks(request, + def ListHooks( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/eventprocapi.EventProcessingService/ListHooks', + "/eventprocapi.EventProcessingService/ListHooks", api__pb2.ListHooksRequest.SerializeToString, api__pb2.ListHooksResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) @staticmethod - def ListHandlers(request, + def ListHandlers( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/eventprocapi.EventProcessingService/ListHandlers', + "/eventprocapi.EventProcessingService/ListHandlers", api__pb2.ListHandlersRequest.SerializeToString, api__pb2.ListHandlersResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) @staticmethod - def Register(request, + def Register( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/eventprocapi.EventProcessingService/Register', + "/eventprocapi.EventProcessingService/Register", api__pb2.RegisterRequest.SerializeToString, api__pb2.RegisterResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) @staticmethod - def Deregister(request, + def Deregister( + request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None, + ): + return grpc.experimental.unary_unary( + request, target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary(request, target, '/eventprocapi.EventProcessingService/Deregister', + "/eventprocapi.EventProcessingService/Deregister", api__pb2.DeregisterRequest.SerializeToString, api__pb2.DeregisterResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + ) diff --git a/docs/make.bat b/docs/make.bat deleted file mode 100644 index 6247f7e..0000000 --- a/docs/make.bat +++ /dev/null @@ -1,35 +0,0 @@ -@ECHO OFF - -pushd %~dp0 - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set SOURCEDIR=source -set BUILDDIR=build - -if "%1" == "" goto help - -%SPHINXBUILD% >NUL 2>NUL -if errorlevel 9009 ( - echo. - echo.The 'sphinx-build' command was not found. Make sure you have Sphinx - echo.installed, then set the SPHINXBUILD environment variable to point - echo.to the full path of the 'sphinx-build' executable. Alternatively you - echo.may add the Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.http://sphinx-doc.org/ - exit /b 1 -) - -%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% -goto end - -:help -%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% - -:end -popd diff --git a/docs/requirements.txt b/docs/requirements.txt index d535bde..49e71d8 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,2 +1,5 @@ -sphinx -sphinx_glpi_theme +alabaster>=0.7.12 +Sphinx>=1.7 +sphinx-rtd-theme +numpydoc +pydata-sphinx-theme diff --git a/docs/source/conf.py b/docs/source/conf.py index 3e27d73..0d72cc9 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -1,8 +1,10 @@ +# -*- coding: utf-8 -*- +# # Configuration file for the Sphinx documentation builder. # -# This file only contains a selection of the most common options. For a full -# list see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/master/config # -- Path setup -------------------------------------------------------------- @@ -16,36 +18,62 @@ import os import sys -sys.path.insert(0, os.path.abspath('../..')) -import sphinx_glpi_theme +import btrdbextras -# -- Project information ----------------------------------------------------- +sys.path.insert(0, os.path.abspath("_themes")) +sys.path.insert(0, os.path.abspath("../..")) -project = 'btrdbextras' -copyright = '2020, PingThings, Inc.' -author = 'PingThings, Inc.' +# -- Project information ----------------------------------------------------- +project = "btrdbextras" +copyright = "2023, PingThings, Inc." +author = "PingThings, Inc." +# The short X.Y version +version = btrdbextras.__version__ +# The full version, including alpha/beta/rc tags +release = version # -- General configuration --------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.napoleon', - 'sphinx.ext.githubpages', - 'sphinx.ext.intersphinx', + "sphinx.ext.autodoc", + "sphinx.ext.napoleon", + "sphinx.ext.todo", + "sphinx.ext.githubpages", + "sphinx.ext.intersphinx", + "numpydoc", ] # Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] +templates_path = ["_templates"] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = ".rst" + +# The master toctree document. +master_doc = "index" + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = "en" # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. -exclude_patterns = ['build', 'Thumbs.db', '.DS_Store'] +exclude_patterns = ["build", "Thumbs.db", ".DS_Store"] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = None # -- Options for HTML output ------------------------------------------------- @@ -55,6 +83,78 @@ # -html_theme = "glpi" +html_theme = "alabaster" +# html_theme = "sphinx_rtd_theme" +html_theme = "pydata_sphinx_theme" + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +html_theme_options = { + "show_powered_by": False, + "github_user": "PingThingsIO", + "github_repo": "btrdbextras", + "travis_button": False, + "github_banner": False, + "show_related": False, + "note_bg": "#FFF59C", + "description": "An additional library of enhancements and features to " + "interact with the BTrDB database and Pingthings platform.", + "extra_nav_links": {"btrdb": "http://btrdb-python.readthedocs.io"}, + "show_relbars": True, +} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ["_static"] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = { +# '**': [ +# 'sidebar.html', +# 'localtoc.html', +# 'relations.html', +# 'searchbox.html', +# ], +# } + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = "btrdbextras" + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ["search.html"] + + +# -- Extension configuration ------------------------------------------------- + +# -- Options for todo extension ---------------------------------------------- + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True -html_theme_path = sphinx_glpi_theme.get_html_themes_path() \ No newline at end of file +numfig = True diff --git a/docs/source/eventproc.rst b/docs/source/eventproc.rst index cd7c4d5..d0a73b1 100644 --- a/docs/source/eventproc.rst +++ b/docs/source/eventproc.rst @@ -313,4 +313,4 @@ Assuming you chose to use variadic arguments (i.e., `**kwargs`) in your event ha 'File': 'comtrade_samples.zip', 'RequestID': '0bbcacdb-e7aa-4e01-af88-9ba865ea32bd', 'SubmittedAt': '2020-10-29T21:58:15.09246084Z' - } \ No newline at end of file + } diff --git a/docs/source/installing.rst b/docs/source/installing.rst index 50dfba4..b6c4948 100644 --- a/docs/source/installing.rst +++ b/docs/source/installing.rst @@ -17,4 +17,3 @@ To upgrade using pip: .. code-block:: bash $ pip install -U btrdbextras - diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..b34b2df --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,54 @@ +[project] +name = "btrdbextras" +version = "5.31.0" +description = "Enhancements additional features to interact with the Berkeley Tree Database" +authors = [ + {name="PingThingsIO", email="support@pingthings.io"}, +] +dependencies = [ + "btrdb>=5.11.7", + "certifi", + "dill==0.3.2", + "grpcio-tools>=1.16.1", + "grpcio>=1.16.1", + "sphinx_glpi_theme", + "tabulate==0.8.9", +] +requires-python = ">=3.6, <4" +readme = "README.md" +license = {file="LICENSE.txt"} +keywords = ["btrdb", "timeseries", "database"] + +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "Intended Audience :: Information Technology", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: BSD License", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python", + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', + 'Programming Language :: Python :: 3.10', + "Topic :: Database", + "Topic :: Software Development :: Libraries :: Python Modules", +] + +[project.urls] +Homepage = "https://btrdbextras.readthedocs.io/en/latest/" +Downloads = "https://github.com/PingThingsIO/btrdbextras/tarball/v5.31.0" +Documentation = "https://btrdbextras.readthedocs.io/en/latest/" +Download = "https://github.com/PingThingsIO/btrdbextras/tarball/v5.31.0" +Source = "https://github.com/PingThingsIO/btrdbextras" +Tracker = "https://github.com/PingThingsIO/btrdbextras/issues" +[build-system] +requires = ["setuptools>=61"] +build-backend = "setuptools.build_meta" + +[tool.setuptools.exclude-package-data] +drop = [ + "tests", + "docs" +] diff --git a/release.sh b/release.sh index ba08e6e..d53028c 100755 --- a/release.sh +++ b/release.sh @@ -45,4 +45,4 @@ git tag v$1.$2.$3 git push origin v$1.$2.$3 sleep 10 -git push \ No newline at end of file +git push diff --git a/requirements.txt b/requirements.txt index a613877..1c1920a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,4 +13,4 @@ tabulate==0.8.9 certifi # Readthedocs -sphinx_glpi_theme \ No newline at end of file +sphinx_glpi_theme diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..00eb245 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,58 @@ +[metadata] +description-file = README.md +license_file = LICENSE.txt + +[test] +local_freetype = True +tests = True + +[aliases] +test=pytest + +[flake8] +max-line-length = 88 +exclude = .git build dist +statistics = True +count = True +select = + E9 + F63 + F7 + F82 +extend-ignore = + E111 + E114 + E121 + E122 + E123 + E124 + E128 + E201 + E202 + E203 + E221 + E222 + E225 + E226 + E231 + E241 + E251 + E266 + E271 + E302 + E303 + E402 + E501 + E502 + E701 + E731 + F401 + W292 + W293 + W391 + W605 + W503 + W504 + +[coverage:run] +omit = */tests/* diff --git a/setup.py b/setup.py index d5c5592..49bdf75 100644 --- a/setup.py +++ b/setup.py @@ -16,11 +16,10 @@ ## Imports ########################################################################## -import os import codecs +import os -from setuptools import setup -from setuptools import find_packages +from setuptools import find_packages, setup from btrdbextras import __version__ @@ -29,59 +28,63 @@ ########################################################################## ## Basic information -NAME = "btrdbextras" -DESCRIPTION = "Enhancements additional features to interact with the Berkeley Tree Database" -AUTHOR = "Allen Leis" -EMAIL = "allen@pingthings.io" -MAINTAINER = "Allen Leis" -LICENSE = "BSD-3-Clause" -REPOSITORY = "https://github.com/PingThingsIO/btrdbextras" -PACKAGE = "btrdb" -URL = "https://btrdbextras.readthedocs.io/en/latest/" -DOCS_URL = "https://btrdbextras.readthedocs.io/en/latest/" +NAME = "btrdbextras" +DESCRIPTION = ( + "Enhancements additional features to interact with the Berkeley Tree Database" +) +AUTHOR = "Allen Leis" +EMAIL = "allen@pingthings.io" +MAINTAINER = "Allen Leis" +LICENSE = "BSD-3-Clause" +REPOSITORY = "https://github.com/PingThingsIO/btrdbextras" +PACKAGE = "btrdb" +URL = "https://btrdbextras.readthedocs.io/en/latest/" +DOCS_URL = "https://btrdbextras.readthedocs.io/en/latest/" ## Define the keywords -KEYWORDS = ('btrdb', 'timeseries', 'database') +KEYWORDS = ("btrdb", "timeseries", "database") ## Define the classifiers ## See https://pypi.python.org/pypi?%3Aaction=list_classifiers -CLASSIFIERS = ( - 'Development Status :: 5 - Production/Stable', - 'Intended Audience :: Developers', - 'Intended Audience :: Information Technology', - 'Intended Audience :: Science/Research', - 'License :: OSI Approved :: BSD License', - 'Natural Language :: English', - 'Operating System :: OS Independent', - 'Programming Language :: Python', - 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - 'Topic :: Database', - 'Topic :: Software Development :: Libraries :: Python Modules', +CLASSIFIERS = ( + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "Intended Audience :: Information Technology", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: BSD License", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Topic :: Database", + "Topic :: Software Development :: Libraries :: Python Modules", ) ## Important Paths -PROJECT = os.path.abspath(os.path.dirname(__file__)) +PROJECT = os.path.abspath(os.path.dirname(__file__)) REQUIRE_PATH = "requirements.txt" VERSION_PATH = os.path.join(PACKAGE, "version.py") PKG_DESCRIBE = "DESCRIPTION.md" ## Directories to ignore in find_packages -EXCLUDES = ( - "tests", "docs", +EXCLUDES = ( + "tests", + "docs", ) ########################################################################## ## Helper Functions ########################################################################## + def read(*parts): """ Assume UTF-8 encoding and return the contents of the file located at the absolute path from the REPOSITORY joined with *parts. """ - with codecs.open(os.path.join(PROJECT, *parts), 'rb', 'utf-8') as f: + with codecs.open(os.path.join(PROJECT, *parts), "rb", "utf-8") as f: return f.read() @@ -92,7 +95,7 @@ def get_requires(path=REQUIRE_PATH): """ for line in read(path).splitlines(): line = line.strip() - if line and not line.startswith('#'): + if line and not line.startswith("#"): yield line @@ -144,8 +147,8 @@ def get_description_type(path=PKG_DESCRIBE): }, "install_requires": list(get_requires()), "python_requires": ">=3.6, <4", - "setup_requires":["pytest-runner"], - "tests_require":["pytest"], + "setup_requires": ["pytest-runner"], + "tests_require": ["pytest"], } @@ -153,5 +156,5 @@ def get_description_type(path=PKG_DESCRIBE): ## Run setup script ########################################################################## -if __name__ == '__main__': +if __name__ == "__main__": setup(**config) diff --git a/tests/requirements.txt b/tests/requirements.txt index 60b339e..4a08de2 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -1,3 +1,3 @@ -pytest==6.1.1 +pytest==6.2.5 pytest-cov==2.10.1 -pytest-flakes==4.0.2 \ No newline at end of file +pytest-flakes==4.0.2 diff --git a/tests/test_base.py b/tests/test_base.py index 81ef9b6..4f76033 100644 --- a/tests/test_base.py +++ b/tests/test_base.py @@ -16,24 +16,25 @@ ########################################################################## import re + import pytest -from btrdbextras import __version__, Connection +from btrdbextras import Connection, __version__ ########################################################################## ## Initialization Tests ########################################################################## -class TestPackage(object): +class TestPackage(object): def test_version(self): """ Assert that the test version smells valid. """ assert bool(re.match(r"^v\d+\.\d+\.\d+$", __version__)) -class TestConnection(object): +class TestConnection(object): def test_properties(self): """ Connection contains apikey and endpoint