quality: run and fix pylint check
This commit is contained in:
		
							
								
								
									
										618
									
								
								.pylintrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										618
									
								
								.pylintrc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,618 @@ | ||||
| [MAIN] | ||||
|  | ||||
| # Analyse import fallback blocks. This can be used to support both Python 2 and | ||||
| # 3 compatible code, which means that the block might have code that exists | ||||
| # only in one or another interpreter, leading to false positives when analysed. | ||||
| analyse-fallback-blocks=no | ||||
|  | ||||
| # Load and enable all available extensions. Use --list-extensions to see a list | ||||
| # all available extensions. | ||||
| #enable-all-extensions= | ||||
|  | ||||
| # In error mode, messages with a category besides ERROR or FATAL are | ||||
| # suppressed, and no reports are done by default. Error mode is compatible with | ||||
| # disabling specific errors. | ||||
| #errors-only= | ||||
|  | ||||
| # Always return a 0 (non-error) status code, even if lint errors are found. | ||||
| # This is primarily useful in continuous integration scripts. | ||||
| #exit-zero= | ||||
|  | ||||
| # A comma-separated list of package or module names from where C extensions may | ||||
| # be loaded. Extensions are loading into the active Python interpreter and may | ||||
| # run arbitrary code. | ||||
| extension-pkg-allow-list=depthai,node,cv2,events.* | ||||
|  | ||||
| # A comma-separated list of package or module names from where C extensions may | ||||
| # be loaded. Extensions are loading into the active Python interpreter and may | ||||
| # run arbitrary code. (This is an alternative name to extension-pkg-allow-list | ||||
| # for backward compatibility.) | ||||
| extension-pkg-whitelist= | ||||
|  | ||||
| # Return non-zero exit code if any of these messages/categories are detected, | ||||
| # even if score is above --fail-under value. Syntax same as enable. Messages | ||||
| # specified are enabled, while categories only check already-enabled messages. | ||||
| fail-on= | ||||
|  | ||||
| # Specify a score threshold under which the program will exit with error. | ||||
| fail-under=10 | ||||
|  | ||||
| # Interpret the stdin as a python script, whose filename needs to be passed as | ||||
| # the module_or_package argument. | ||||
| #from-stdin= | ||||
|  | ||||
| # Files or directories to be skipped. They should be base names, not paths. | ||||
| ignore=CVS | ||||
|  | ||||
| # Add files or directories matching the regular expressions patterns to the | ||||
| # ignore-list. The regex matches against paths and can be in Posix or Windows | ||||
| # format. Because '\' represents the directory delimiter on Windows systems, it | ||||
| # can't be used as an escape character. | ||||
| ignore-paths= | ||||
|  | ||||
| # Files or directories matching the regular expression patterns are skipped. | ||||
| # The regex matches against base names, not paths. The default value ignores | ||||
| # Emacs file locks | ||||
| ignore-patterns=^\.# | ||||
|  | ||||
| # List of module names for which member attributes should not be checked | ||||
| # (useful for modules/projects where namespaces are manipulated during runtime | ||||
| # and thus existing member attributes cannot be deduced by static analysis). It | ||||
| # supports qualified module names, as well as Unix pattern matching. | ||||
| ignored-modules= | ||||
|  | ||||
| # Python code to execute, usually for sys.path manipulation such as | ||||
| # pygtk.require(). | ||||
| #init-hook= | ||||
|  | ||||
| # Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the | ||||
| # number of processors available to use, and will cap the count on Windows to | ||||
| # avoid hangs. | ||||
| jobs=1 | ||||
|  | ||||
| # Control the amount of potential inferred values when inferring a single | ||||
| # object. This can help the performance when dealing with large functions or | ||||
| # complex, nested conditions. | ||||
| limit-inference-results=100 | ||||
|  | ||||
| # List of plugins (as comma separated values of python module names) to load, | ||||
| # usually to register additional checkers. | ||||
| load-plugins= | ||||
|  | ||||
| # Pickle collected data for later comparisons. | ||||
| persistent=yes | ||||
|  | ||||
| # Minimum Python version to use for version dependent checks. Will default to | ||||
| # the version used to run pylint. | ||||
| py-version=3.10 | ||||
|  | ||||
| # Discover python modules and packages in the file system subtree. | ||||
| recursive=yes | ||||
|  | ||||
| # When enabled, pylint would attempt to guess common misconfiguration and emit | ||||
| # user-friendly hints instead of false-positive error messages. | ||||
| suggestion-mode=yes | ||||
|  | ||||
| # Allow loading of arbitrary C extensions. Extensions are imported into the | ||||
| # active Python interpreter and may run arbitrary code. | ||||
| unsafe-load-any-extension=no | ||||
|  | ||||
| # In verbose mode, extra non-checker-related info will be displayed. | ||||
| #verbose= | ||||
|  | ||||
|  | ||||
| [REPORTS] | ||||
|  | ||||
| # Python expression which should return a score less than or equal to 10. You | ||||
| # have access to the variables 'fatal', 'error', 'warning', 'refactor', | ||||
| # 'convention', and 'info' which contain the number of messages in each | ||||
| # category, as well as 'statement' which is the total number of statements | ||||
| # analyzed. This score is used by the global evaluation report (RP0004). | ||||
| evaluation=max(0, 0 if fatal else 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)) | ||||
|  | ||||
| # Template used to display messages. This is a python new-style format string | ||||
| # used to format the message information. See doc for all details. | ||||
| msg-template= | ||||
|  | ||||
| # Set the output format. Available formats are text, parseable, colorized, json | ||||
| # and msvs (visual studio). You can also give a reporter class, e.g. | ||||
| # mypackage.mymodule.MyReporterClass. | ||||
| #output-format= | ||||
|  | ||||
| # Tells whether to display a full report or only the messages. | ||||
| reports=no | ||||
|  | ||||
| # Activate the evaluation score. | ||||
| score=yes | ||||
|  | ||||
|  | ||||
| [MESSAGES CONTROL] | ||||
|  | ||||
| # Only show warnings with the listed confidence levels. Leave empty to show | ||||
| # all. Valid levels: HIGH, CONTROL_FLOW, INFERENCE, INFERENCE_FAILURE, | ||||
| # UNDEFINED. | ||||
| confidence=HIGH, | ||||
|            CONTROL_FLOW, | ||||
|            INFERENCE, | ||||
|            INFERENCE_FAILURE, | ||||
|            UNDEFINED | ||||
|  | ||||
| # Disable the message, report, category or checker with the given id(s). You | ||||
| # can either give multiple identifiers separated by comma (,) or put this | ||||
| # option multiple times (only on the command line, not in the configuration | ||||
| # file where it should appear only once). You can also use "--disable=all" to | ||||
| # disable everything first and then re-enable specific checks. For example, if | ||||
| # you want to run only the similarities checker, you can use "--disable=all | ||||
| # --enable=similarities". If you want to run only the classes checker, but have | ||||
| # no Warning level messages displayed, use "--disable=all --enable=classes | ||||
| # --disable=W". | ||||
| disable=raw-checker-failed, | ||||
|         bad-inline-option, | ||||
|         locally-disabled, | ||||
|         file-ignored, | ||||
|         suppressed-message, | ||||
|         useless-suppression, | ||||
|         deprecated-pragma, | ||||
|         use-symbolic-message-instead | ||||
|  | ||||
| # Enable the message, report, category or checker with the given id(s). You can | ||||
| # either give multiple identifier separated by comma (,) or put this option | ||||
| # multiple time (only on the command line, not in the configuration file where | ||||
| # it should appear only once). See also the "--disable" option for examples. | ||||
| enable=c-extension-no-member | ||||
|  | ||||
|  | ||||
| [LOGGING] | ||||
|  | ||||
| # The type of string formatting that logging methods do. `old` means using % | ||||
| # formatting, `new` is for `{}` formatting. | ||||
| logging-format-style=old | ||||
|  | ||||
| # Logging modules to check that the string format arguments are in logging | ||||
| # function parameter format. | ||||
| logging-modules=logging | ||||
|  | ||||
|  | ||||
| [SPELLING] | ||||
|  | ||||
| # Limits count of emitted suggestions for spelling mistakes. | ||||
| max-spelling-suggestions=4 | ||||
|  | ||||
| # Spelling dictionary name. Available dictionaries: none. To make it work, | ||||
| # install the 'python-enchant' package. | ||||
| spelling-dict= | ||||
|  | ||||
| # List of comma separated words that should be considered directives if they | ||||
| # appear at the beginning of a comment and should not be checked. | ||||
| spelling-ignore-comment-directives=fmt: on,fmt: off,noqa:,noqa,nosec,isort:skip,mypy: | ||||
|  | ||||
| # List of comma separated words that should not be checked. | ||||
| spelling-ignore-words= | ||||
|  | ||||
| # A path to a file that contains the private dictionary; one word per line. | ||||
| spelling-private-dict-file= | ||||
|  | ||||
| # Tells whether to store unknown words to the private dictionary (see the | ||||
| # --spelling-private-dict-file option) instead of raising a message. | ||||
| spelling-store-unknown-words=no | ||||
|  | ||||
|  | ||||
| [MISCELLANEOUS] | ||||
|  | ||||
| # List of note tags to take in consideration, separated by a comma. | ||||
| notes=FIXME, | ||||
|       XXX, | ||||
|       TODO | ||||
|  | ||||
| # Regular expression of note tags to take in consideration. | ||||
| notes-rgx= | ||||
|  | ||||
|  | ||||
| [TYPECHECK] | ||||
|  | ||||
| # List of decorators that produce context managers, such as | ||||
| # contextlib.contextmanager. Add to this list to register other decorators that | ||||
| # produce valid context managers. | ||||
| contextmanager-decorators=contextlib.contextmanager | ||||
|  | ||||
| # List of members which are set dynamically and missed by pylint inference | ||||
| # system, and so shouldn't trigger E1101 when accessed. Python regular | ||||
| # expressions are accepted. | ||||
| generated-members=cv2,events.events_pb2,depthai.*,dai.* | ||||
|  | ||||
| # Tells whether to warn about missing members when the owner of the attribute | ||||
| # is inferred to be None. | ||||
| ignore-none=yes | ||||
|  | ||||
| # This flag controls whether pylint should warn about no-member and similar | ||||
| # checks whenever an opaque object is returned when inferring. The inference | ||||
| # can return multiple potential results while evaluating a Python object, but | ||||
| # some branches might not be evaluated, which results in partial inference. In | ||||
| # that case, it might be useful to still emit no-member and other checks for | ||||
| # the rest of the inferred objects. | ||||
| ignore-on-opaque-inference=yes | ||||
|  | ||||
| # List of symbolic message names to ignore for Mixin members. | ||||
| ignored-checks-for-mixins=no-member, | ||||
|                           not-async-context-manager, | ||||
|                           not-context-manager, | ||||
|                           attribute-defined-outside-init | ||||
|  | ||||
| # List of class names for which member attributes should not be checked (useful | ||||
| # for classes with dynamically set attributes). This supports the use of | ||||
| # qualified names. | ||||
| ignored-classes=optparse.Values,thread._local,_thread._local,argparse.Namespace | ||||
|  | ||||
| # Show a hint with possible names when a member name was not found. The aspect | ||||
| # of finding the hint is based on edit distance. | ||||
| missing-member-hint=yes | ||||
|  | ||||
| # The minimum edit distance a name should have in order to be considered a | ||||
| # similar match for a missing member name. | ||||
| missing-member-hint-distance=1 | ||||
|  | ||||
| # The total number of similar names that should be taken in consideration when | ||||
|  | ||||
| missing-member-max-choices=1 | ||||
|  | ||||
| # Regex pattern to define which classes are considered mixins. | ||||
| mixin-class-rgx=.*[Mm]ixin | ||||
|  | ||||
| # List of decorators that change the signature of a decorated function. | ||||
| signature-mutators= | ||||
|  | ||||
|  | ||||
| [CLASSES] | ||||
|  | ||||
| # Warn about protected attribute access inside special methods | ||||
| check-protected-access-in-special-methods=no | ||||
|  | ||||
| # List of method names used to declare (i.e. assign) instance attributes. | ||||
| defining-attr-methods=__init__, | ||||
|                       __new__, | ||||
|                       setUp, | ||||
|                       __post_init__ | ||||
|  | ||||
| # List of member names, which should be excluded from the protected access | ||||
| # warning. | ||||
| exclude-protected=_asdict, | ||||
|                   _fields, | ||||
|                   _replace, | ||||
|                   _source, | ||||
|                   _make | ||||
|  | ||||
| # List of valid names for the first argument in a class method. | ||||
| valid-classmethod-first-arg=cls | ||||
|  | ||||
| # List of valid names for the first argument in a metaclass class method. | ||||
| valid-metaclass-classmethod-first-arg=cls | ||||
|  | ||||
|  | ||||
| [VARIABLES] | ||||
|  | ||||
| # List of additional names supposed to be defined in builtins. Remember that | ||||
| # you should avoid defining new builtins when possible. | ||||
| additional-builtins= | ||||
|  | ||||
| # Tells whether unused global variables should be treated as a violation. | ||||
| allow-global-unused-variables=yes | ||||
|  | ||||
| # List of names allowed to shadow builtins | ||||
| allowed-redefined-builtins= | ||||
|  | ||||
| # List of strings which can identify a callback function by name. A callback | ||||
| # name must start or end with one of those strings. | ||||
| callbacks=cb_, | ||||
|           _cb | ||||
|  | ||||
| # A regular expression matching the name of dummy variables (i.e. expected to | ||||
| # not be used). | ||||
| dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ | ||||
|  | ||||
| # Argument names that match this expression will be ignored. | ||||
| ignored-argument-names=_.*|^ignored_|^unused_ | ||||
|  | ||||
| # Tells whether we should check for unused import in __init__ files. | ||||
| init-import=no | ||||
|  | ||||
| # List of qualified module names which can have objects that can redefine | ||||
| # builtins. | ||||
| redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io | ||||
|  | ||||
|  | ||||
| [FORMAT] | ||||
|  | ||||
| # Expected format of line ending, e.g. empty (any line ending), LF or CRLF. | ||||
| expected-line-ending-format= | ||||
|  | ||||
| # Regexp for a line that is allowed to be longer than the limit. | ||||
| ignore-long-lines=^\s*(# )?<?https?://\S+>?$ | ||||
|  | ||||
| # Number of spaces of indent required inside a hanging or continued line. | ||||
| indent-after-paren=4 | ||||
|  | ||||
| # String used as indentation unit. This is usually "    " (4 spaces) or "\t" (1 | ||||
| # tab). | ||||
| indent-string='    ' | ||||
|  | ||||
| # Maximum number of characters on a single line. | ||||
| max-line-length=120 | ||||
|  | ||||
| # Maximum number of lines in a module. | ||||
| max-module-lines=1000 | ||||
|  | ||||
| # Allow the body of a class to be on the same line as the declaration if body | ||||
| # contains single statement. | ||||
| single-line-class-stmt=no | ||||
|  | ||||
| # Allow the body of an if to be on the same line as the test if there is no | ||||
| # else. | ||||
| single-line-if-stmt=no | ||||
|  | ||||
|  | ||||
| [IMPORTS] | ||||
|  | ||||
| # List of modules that can be imported at any level, not just the top level | ||||
| # one. | ||||
| allow-any-import-level= | ||||
|  | ||||
| # Allow wildcard imports from modules that define __all__. | ||||
| allow-wildcard-with-all=no | ||||
|  | ||||
| # Deprecated modules which should not be used, separated by a comma. | ||||
| deprecated-modules= | ||||
|  | ||||
| # Output a graph (.gv or any supported image format) of external dependencies | ||||
| # to the given file (report RP0402 must not be disabled). | ||||
| ext-import-graph= | ||||
|  | ||||
| # Output a graph (.gv or any supported image format) of all (i.e. internal and | ||||
| # external) dependencies to the given file (report RP0402 must not be | ||||
| # disabled). | ||||
| import-graph= | ||||
|  | ||||
| # Output a graph (.gv or any supported image format) of internal dependencies | ||||
| # to the given file (report RP0402 must not be disabled). | ||||
| int-import-graph= | ||||
|  | ||||
| # Force import order to recognize a module as part of the standard | ||||
| # compatibility libraries. | ||||
| known-standard-library= | ||||
|  | ||||
| # Force import order to recognize a module as part of a third party library. | ||||
| known-third-party=enchant | ||||
|  | ||||
| # Couples of modules and preferred modules, separated by a comma. | ||||
| preferred-modules= | ||||
|  | ||||
|  | ||||
| [METHOD_ARGS] | ||||
|  | ||||
| # List of qualified names (i.e., library.method) which require a timeout | ||||
| # parameter e.g. 'requests.api.get,requests.api.post' | ||||
| timeout-methods=requests.api.delete,requests.api.get,requests.api.head,requests.api.options,requests.api.patch,requests.api.post,requests.api.put,requests.api.request | ||||
|  | ||||
|  | ||||
| [EXCEPTIONS] | ||||
|  | ||||
| # Exceptions that will emit a warning when caught. | ||||
| overgeneral-exceptions=BaseException, | ||||
|                        Exception | ||||
|  | ||||
|  | ||||
| [REFACTORING] | ||||
|  | ||||
| # Maximum number of nested blocks for function / method body | ||||
| max-nested-blocks=5 | ||||
|  | ||||
| # Complete name of functions that never returns. When checking for | ||||
| # inconsistent-return-statements if a never returning function is called then | ||||
| # it will be considered as an explicit return statement and no message will be | ||||
| # printed. | ||||
| never-returning-functions=sys.exit,argparse.parse_error | ||||
|  | ||||
|  | ||||
| [SIMILARITIES] | ||||
|  | ||||
| # Comments are removed from the similarity computation | ||||
| ignore-comments=yes | ||||
|  | ||||
| # Docstrings are removed from the similarity computation | ||||
| ignore-docstrings=yes | ||||
|  | ||||
| # Imports are removed from the similarity computation | ||||
| ignore-imports=yes | ||||
|  | ||||
| # Signatures are removed from the similarity computation | ||||
| ignore-signatures=yes | ||||
|  | ||||
| # Minimum lines number of a similarity. | ||||
| min-similarity-lines=4 | ||||
|  | ||||
|  | ||||
| [DESIGN] | ||||
|  | ||||
| # List of regular expressions of class ancestor names to ignore when counting | ||||
| # public methods (see R0903) | ||||
| exclude-too-few-public-methods= | ||||
|  | ||||
| # List of qualified class names to ignore when counting class parents (see | ||||
| # R0901) | ||||
| ignored-parents= | ||||
|  | ||||
| # Maximum number of arguments for function / method. | ||||
| max-args=5 | ||||
|  | ||||
| # Maximum number of attributes for a class (see R0902). | ||||
| max-attributes=7 | ||||
|  | ||||
| # Maximum number of boolean expressions in an if statement (see R0916). | ||||
| max-bool-expr=5 | ||||
|  | ||||
| # Maximum number of branch for function / method body. | ||||
| max-branches=12 | ||||
|  | ||||
| # Maximum number of locals for function / method body. | ||||
| max-locals=15 | ||||
|  | ||||
| # Maximum number of parents for a class (see R0901). | ||||
| max-parents=7 | ||||
|  | ||||
| # Maximum number of public methods for a class (see R0904). | ||||
| max-public-methods=20 | ||||
|  | ||||
| # Maximum number of return / yield for function / method body. | ||||
| max-returns=6 | ||||
|  | ||||
| # Maximum number of statements in function / method body. | ||||
| max-statements=50 | ||||
|  | ||||
| # Minimum number of public methods for a class (see R0903). | ||||
| min-public-methods=2 | ||||
|  | ||||
|  | ||||
| [STRING] | ||||
|  | ||||
| # This flag controls whether inconsistent-quotes generates a warning when the | ||||
| # character used as a quote delimiter is used inconsistently within a module. | ||||
| check-quote-consistency=no | ||||
|  | ||||
| # This flag controls whether the implicit-str-concat should generate a warning | ||||
| # on implicit string concatenation in sequences defined over several lines. | ||||
| check-str-concat-over-line-jumps=no | ||||
|  | ||||
|  | ||||
| [BASIC] | ||||
|  | ||||
| # Naming style matching correct argument names. | ||||
| argument-naming-style=snake_case | ||||
|  | ||||
| # Regular expression matching correct argument names. Overrides argument- | ||||
| # naming-style. If left empty, argument names will be checked with the set | ||||
| # naming style. | ||||
| #argument-rgx= | ||||
|  | ||||
| # Naming style matching correct attribute names. | ||||
| attr-naming-style=snake_case | ||||
|  | ||||
| # Regular expression matching correct attribute names. Overrides attr-naming- | ||||
| # style. If left empty, attribute names will be checked with the set naming | ||||
| # style. | ||||
| #attr-rgx= | ||||
|  | ||||
| # Bad variable names which should always be refused, separated by a comma. | ||||
| bad-names=foo, | ||||
|           bar, | ||||
|           baz, | ||||
|           toto, | ||||
|           tutu, | ||||
|           tata | ||||
|  | ||||
| # Bad variable names regexes, separated by a comma. If names match any regex, | ||||
| # they will always be refused | ||||
| bad-names-rgxs= | ||||
|  | ||||
| # Naming style matching correct class attribute names. | ||||
| class-attribute-naming-style=any | ||||
|  | ||||
| # Regular expression matching correct class attribute names. Overrides class- | ||||
| # attribute-naming-style. If left empty, class attribute names will be checked | ||||
| # with the set naming style. | ||||
| #class-attribute-rgx= | ||||
|  | ||||
| # Naming style matching correct class constant names. | ||||
| class-const-naming-style=UPPER_CASE | ||||
|  | ||||
| # Regular expression matching correct class constant names. Overrides class- | ||||
| # const-naming-style. If left empty, class constant names will be checked with | ||||
| # the set naming style. | ||||
| #class-const-rgx= | ||||
|  | ||||
| # Naming style matching correct class names. | ||||
| class-naming-style=PascalCase | ||||
|  | ||||
| # Regular expression matching correct class names. Overrides class-naming- | ||||
| # style. If left empty, class names will be checked with the set naming style. | ||||
| #class-rgx= | ||||
|  | ||||
| # Naming style matching correct constant names. | ||||
| const-naming-style=UPPER_CASE | ||||
|  | ||||
| # Regular expression matching correct constant names. Overrides const-naming- | ||||
| # style. If left empty, constant names will be checked with the set naming | ||||
| # style. | ||||
| #const-rgx= | ||||
|  | ||||
| # Minimum line length for functions/classes that require docstrings, shorter | ||||
| # ones are exempt. | ||||
| docstring-min-length=-1 | ||||
|  | ||||
| # Naming style matching correct function names. | ||||
| function-naming-style=snake_case | ||||
|  | ||||
| # Regular expression matching correct function names. Overrides function- | ||||
| # naming-style. If left empty, function names will be checked with the set | ||||
| # naming style. | ||||
| #function-rgx= | ||||
|  | ||||
| # Good variable names which should always be accepted, separated by a comma. | ||||
| good-names=i, | ||||
|            j, | ||||
|            k, | ||||
|            ex, | ||||
|            Run, | ||||
|            _ | ||||
|  | ||||
| # Good variable names regexes, separated by a comma. If names match any regex, | ||||
| # they will always be accepted | ||||
| good-names-rgxs= | ||||
|  | ||||
| # Include a hint for the correct naming format with invalid-name. | ||||
| include-naming-hint=no | ||||
|  | ||||
| # Naming style matching correct inline iteration names. | ||||
| inlinevar-naming-style=any | ||||
|  | ||||
| # Regular expression matching correct inline iteration names. Overrides | ||||
| # inlinevar-naming-style. If left empty, inline iteration names will be checked | ||||
| # with the set naming style. | ||||
| #inlinevar-rgx= | ||||
|  | ||||
| # Naming style matching correct method names. | ||||
| method-naming-style=snake_case | ||||
|  | ||||
| # Regular expression matching correct method names. Overrides method-naming- | ||||
| # style. If left empty, method names will be checked with the set naming style. | ||||
| #method-rgx= | ||||
|  | ||||
| # Naming style matching correct module names. | ||||
| module-naming-style=snake_case | ||||
|  | ||||
| # Regular expression matching correct module names. Overrides module-naming- | ||||
| # style. If left empty, module names will be checked with the set naming style. | ||||
| #module-rgx= | ||||
|  | ||||
| # Colon-delimited sets of names that determine each other's naming style when | ||||
| # the name regexes allow several styles. | ||||
| name-group= | ||||
|  | ||||
| # Regular expression which should only match function or class names that do | ||||
| # not require a docstring. | ||||
| no-docstring-rgx=^_ | ||||
|  | ||||
| # List of decorators that produce properties, such as abc.abstractproperty. Add | ||||
| # to this list to register other decorators that produce valid properties. | ||||
| # These decorators are taken in consideration only for invalid-name. | ||||
| property-classes=abc.abstractproperty | ||||
|  | ||||
| # Regular expression matching correct type variable names. If left empty, type | ||||
| # variable names will be checked with the set naming style. | ||||
| #typevar-rgx= | ||||
|  | ||||
| # Naming style matching correct variable names. | ||||
| variable-naming-style=snake_case | ||||
|  | ||||
| # Regular expression matching correct variable names. Overrides variable- | ||||
| # naming-style. If left empty, variable names will be checked with the set | ||||
| # naming style. | ||||
| #variable-rgx= | ||||
| @@ -1,27 +1,36 @@ | ||||
| """ | ||||
| Mqtt gateway for oak-lite device | ||||
| """ | ||||
| import argparse | ||||
| import logging | ||||
| import os | ||||
| from . import depthai as cam | ||||
|  | ||||
| import paho.mqtt.client as mqtt | ||||
| import argparse | ||||
|  | ||||
| from . import depthai as cam | ||||
|  | ||||
| logger = logging.getLogger(__name__) | ||||
| logging.basicConfig(level=logging.INFO) | ||||
|  | ||||
| default_client_id = "robocar-depthai" | ||||
| _DEFAULT_CLIENT_ID = "robocar-depthai" | ||||
|  | ||||
|  | ||||
| def init_mqtt_client(broker_host: str, broker_port, user: str, password: str, client_id: str) -> mqtt.Client: | ||||
| def _init_mqtt_client(broker_host: str, broker_port, user: str, password: str, client_id: str) -> mqtt.Client: | ||||
|     logger.info("Start part.py-robocar-oak-camera") | ||||
|     client = mqtt.Client(client_id=client_id, clean_session=True, userdata=None, protocol=mqtt.MQTTv311) | ||||
|  | ||||
|     client.username_pw_set(user, password) | ||||
|     logger.info("Connect to mqtt broker "+ broker_host) | ||||
|     logger.info("Connect to mqtt broker %s", broker_host) | ||||
|     client.connect(host=broker_host, port=broker_port, keepalive=60) | ||||
|     logger.info("Connected to mqtt broker") | ||||
|     return client | ||||
|  | ||||
|  | ||||
| def execute_from_command_line(): | ||||
| def execute_from_command_line() -> None: | ||||
|     """ | ||||
|     Cli entrypoint | ||||
|     :return: | ||||
|     """ | ||||
|     logging.basicConfig(level=logging.INFO) | ||||
|  | ||||
|     parser = argparse.ArgumentParser() | ||||
| @@ -40,10 +49,10 @@ def execute_from_command_line(): | ||||
|                         default=_get_env_int_value("MQTT_BROKER_PORT", 1883)) | ||||
|     parser.add_argument("-C", "--mqtt-client-id", | ||||
|                         help="MQTT client id", | ||||
|                         default=_get_env_value("MQTT_CLIENT_ID", default_client_id)) | ||||
|                         default=_get_env_value("MQTT_CLIENT_ID", _DEFAULT_CLIENT_ID)) | ||||
|     parser.add_argument("-c", "--mqtt-topic-robocar-oak-camera", | ||||
|                         help="MQTT topic where to publish robocar-oak-camera frames", | ||||
|                         default=_get_env_value("MQTT_TOPIC_CAMERA","/oak/camera_rgb")) | ||||
|                         default=_get_env_value("MQTT_TOPIC_CAMERA", "/oak/camera_rgb")) | ||||
|     parser.add_argument("-o", "---mqtt-topic-robocar-objects", | ||||
|                         help="MQTT topic where to publish objects detection results", | ||||
|                         default=_get_env_value("MQTT_TOPIC_OBJECTS", "/objects")) | ||||
| @@ -60,12 +69,12 @@ def execute_from_command_line(): | ||||
|  | ||||
|     args = parser.parse_args() | ||||
|  | ||||
|     client = init_mqtt_client(broker_host=args.mqtt_broker_host, | ||||
|                               broker_port=args.mqtt_broker_port, | ||||
|                               user=args.mqtt_username, | ||||
|                               password=args.mqtt_password, | ||||
|                               client_id=args.mqtt_client_id, | ||||
|                               ) | ||||
|     client = _init_mqtt_client(broker_host=args.mqtt_broker_host, | ||||
|                                broker_port=args.mqtt_broker_port, | ||||
|                                user=args.mqtt_username, | ||||
|                                password=args.mqtt_password, | ||||
|                                client_id=args.mqtt_client_id, | ||||
|                                ) | ||||
|     frame_processor = cam.FramePublisher(mqtt_client=client, | ||||
|                                          frame_topic=args.mqtt_topic_robocar_oak_camera, | ||||
|                                          objects_topic=args.mqtt_topic_robocar_objects, | ||||
|   | ||||
| @@ -1,13 +1,16 @@ | ||||
| """ | ||||
| Camera event loop | ||||
| """ | ||||
| import datetime | ||||
| import logging | ||||
|  | ||||
| import cv2 | ||||
| import depthai as dai | ||||
| import numpy as np | ||||
| import paho.mqtt.client as mqtt | ||||
|  | ||||
| import events.events_pb2 | ||||
|  | ||||
| import depthai as dai | ||||
| import cv2 | ||||
| import numpy as np | ||||
|  | ||||
| logger = logging.getLogger(__name__) | ||||
|  | ||||
| NN_PATH = "/models/mobile_object_localizer_192x192_openvino_2021.4_6shave.blob" | ||||
| @@ -16,6 +19,10 @@ NN_HEIGHT = 192 | ||||
|  | ||||
|  | ||||
| class FramePublisher: | ||||
|     """ | ||||
|     Camera controller that publish events from camera | ||||
|     """ | ||||
|  | ||||
|     def __init__(self, mqtt_client: mqtt.Client, frame_topic: str, objects_topic: str, objects_threshold: float, | ||||
|                  img_width: int, img_height: int): | ||||
|         self._mqtt_client = mqtt_client | ||||
| @@ -25,6 +32,7 @@ class FramePublisher: | ||||
|         self._img_width = img_width | ||||
|         self._img_height = img_height | ||||
|         self._pipeline = self._configure_pipeline() | ||||
|         self._stop = False | ||||
|  | ||||
|     def _configure_pipeline(self) -> dai.Pipeline: | ||||
|         logger.info("configure pipeline") | ||||
| @@ -53,7 +61,6 @@ class FramePublisher: | ||||
|         xout_rgb = pipeline.create(dai.node.XLinkOut) | ||||
|         xout_rgb.setStreamName("rgb") | ||||
|  | ||||
|  | ||||
|         # Properties | ||||
|         cam_rgb.setBoardSocket(dai.CameraBoardSocket.RGB) | ||||
|         cam_rgb.setPreviewSize(width=self._img_width, height=self._img_height) | ||||
| @@ -72,7 +79,11 @@ class FramePublisher: | ||||
|         logger.info("pipeline configured") | ||||
|         return pipeline | ||||
|  | ||||
|     def run(self): | ||||
|     def run(self) -> None: | ||||
|         """ | ||||
|         Start event loop | ||||
|         :return: | ||||
|         """ | ||||
|         # Connect to device and start pipeline | ||||
|         with dai.Device(self._pipeline) as device: | ||||
|             logger.info('MxId: %s', device.getDeviceInfo().getMxId()) | ||||
| @@ -87,12 +98,15 @@ class FramePublisher: | ||||
|             q_rgb = device.getOutputQueue(name="rgb", maxSize=queue_size, blocking=False) | ||||
|             q_nn = device.getOutputQueue(name="nn", maxSize=queue_size, blocking=False) | ||||
|  | ||||
|             self._stop = False | ||||
|             while True: | ||||
|                 if self._stop: | ||||
|                     return | ||||
|                 try: | ||||
|                     logger.debug("wait for new frame") | ||||
|                     inRgb = q_rgb.get()  # blocking call, will wait until a new data has arrived | ||||
|                     in_rgb = q_rgb.get()  # blocking call, will wait until a new data has arrived | ||||
|  | ||||
|                     im_resize = inRgb.getCvFrame() | ||||
|                     im_resize = in_rgb.getCvFrame() | ||||
|  | ||||
|                     is_success, im_buf_arr = cv2.imencode(".jpg", im_resize) | ||||
|                     byte_im = im_buf_arr.tobytes() | ||||
| @@ -127,14 +141,14 @@ class FramePublisher: | ||||
|                         for i in range(boxes.shape[0]): | ||||
|                             bbox = boxes[i] | ||||
|                             logger.debug("new object detected: %s", str(bbox)) | ||||
|                             o = events.events_pb2.Object() | ||||
|                             o.type = events.events_pb2.TypeObject.ANY | ||||
|                             o.top = bbox[0].astype(float) | ||||
|                             o.right = bbox[3].astype(float) | ||||
|                             o.bottom = bbox[2].astype(float) | ||||
|                             o.left = bbox[1].astype(float) | ||||
|                             o.confidence = scores[i].astype(float) | ||||
|                             objs.append(o) | ||||
|                             obj = events.events_pb2.Object() | ||||
|                             obj.type = events.events_pb2.TypeObject.ANY | ||||
|                             obj.top = bbox[0].astype(float) | ||||
|                             obj.right = bbox[3].astype(float) | ||||
|                             obj.bottom = bbox[2].astype(float) | ||||
|                             obj.left = bbox[1].astype(float) | ||||
|                             obj.confidence = scores[i].astype(float) | ||||
|                             objs.append(obj) | ||||
|                         objects_msg.objects.extend(objs) | ||||
|  | ||||
|                         objects_msg.frame_ref.name = frame_msg.id.name | ||||
| @@ -147,5 +161,13 @@ class FramePublisher: | ||||
|                                                   qos=0, | ||||
|                                                   retain=False) | ||||
|  | ||||
|                 except Exception as e: | ||||
|                     logger.exception("unexpected error: %s", str(e)) | ||||
|                 # pylint: disable=broad-except # bad frame or event must not stop loop | ||||
|                 except Exception as excpt: | ||||
|                     logger.exception("unexpected error: %s", str(excpt)) | ||||
|  | ||||
|     def stop(self): | ||||
|         """ | ||||
|         Stop event loop, if loop is not running, do nothing | ||||
|         :return: | ||||
|         """ | ||||
|         self._stop = True | ||||
|   | ||||
							
								
								
									
										241
									
								
								poetry.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										241
									
								
								poetry.lock
									
									
									
										generated
									
									
									
								
							| @@ -1,3 +1,18 @@ | ||||
| [[package]] | ||||
| name = "astroid" | ||||
| version = "2.12.12" | ||||
| description = "An abstract syntax tree for Python with inference support." | ||||
| category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=3.7.2" | ||||
|  | ||||
| [package.dependencies] | ||||
| lazy-object-proxy = ">=1.4.0" | ||||
| wrapt = [ | ||||
|     {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, | ||||
|     {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "attrs" | ||||
| version = "22.1.0" | ||||
| @@ -107,6 +122,17 @@ category = "main" | ||||
| optional = false | ||||
| python-versions = ">=3.6" | ||||
|  | ||||
| [[package]] | ||||
| name = "dill" | ||||
| version = "0.3.5.1" | ||||
| description = "serialize all of python" | ||||
| category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" | ||||
|  | ||||
| [package.extras] | ||||
| graph = ["objgraph (>=1.7.2)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "google" | ||||
| version = "3.0.0" | ||||
| @@ -134,6 +160,20 @@ category = "dev" | ||||
| optional = false | ||||
| python-versions = "*" | ||||
|  | ||||
| [[package]] | ||||
| name = "isort" | ||||
| version = "5.10.1" | ||||
| description = "A Python utility / library to sort Python imports." | ||||
| category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=3.6.1,<4.0" | ||||
|  | ||||
| [package.extras] | ||||
| colors = ["colorama (>=0.4.3,<0.5.0)"] | ||||
| pipfile-deprecated-finder = ["pipreqs", "requirementslib"] | ||||
| plugins = ["setuptools"] | ||||
| requirements-deprecated-finder = ["pip-api", "pipreqs"] | ||||
|  | ||||
| [[package]] | ||||
| name = "jmespath" | ||||
| version = "1.0.1" | ||||
| @@ -142,6 +182,22 @@ category = "main" | ||||
| optional = false | ||||
| python-versions = ">=3.7" | ||||
|  | ||||
| [[package]] | ||||
| name = "lazy-object-proxy" | ||||
| version = "1.7.1" | ||||
| description = "A fast and thorough lazy object proxy." | ||||
| category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=3.6" | ||||
|  | ||||
| [[package]] | ||||
| name = "mccabe" | ||||
| version = "0.7.0" | ||||
| description = "McCabe checker, plugin for flake8" | ||||
| category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=3.6" | ||||
|  | ||||
| [[package]] | ||||
| name = "numpy" | ||||
| version = "1.23.4" | ||||
| @@ -188,6 +244,18 @@ python-versions = "*" | ||||
| [package.extras] | ||||
| proxy = ["PySocks"] | ||||
|  | ||||
| [[package]] | ||||
| name = "platformdirs" | ||||
| version = "2.5.2" | ||||
| description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." | ||||
| category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=3.7" | ||||
|  | ||||
| [package.extras] | ||||
| docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx (>=4)", "sphinx-autodoc-typehints (>=1.12)"] | ||||
| test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "pluggy" | ||||
| version = "1.0.0" | ||||
| @@ -224,6 +292,28 @@ category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" | ||||
|  | ||||
| [[package]] | ||||
| name = "pylint" | ||||
| version = "2.15.4" | ||||
| description = "python code static checker" | ||||
| category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=3.7.2" | ||||
|  | ||||
| [package.dependencies] | ||||
| astroid = ">=2.12.11,<=2.14.0-dev0" | ||||
| colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} | ||||
| dill = ">=0.2" | ||||
| isort = ">=4.2.5,<6" | ||||
| mccabe = ">=0.6,<0.8" | ||||
| platformdirs = ">=2.2.0" | ||||
| tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} | ||||
| tomlkit = ">=0.10.1" | ||||
|  | ||||
| [package.extras] | ||||
| spelling = ["pyenchant (>=3.2,<4.0)"] | ||||
| testutils = ["gitpython (>3)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "pyparsing" | ||||
| version = "3.0.9" | ||||
| @@ -330,6 +420,14 @@ category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=3.7" | ||||
|  | ||||
| [[package]] | ||||
| name = "tomlkit" | ||||
| version = "0.11.5" | ||||
| description = "Style preserving TOML library" | ||||
| category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=3.6,<4.0" | ||||
|  | ||||
| [[package]] | ||||
| name = "urllib3" | ||||
| version = "1.26.12" | ||||
| @@ -343,12 +441,24 @@ brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] | ||||
| secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] | ||||
| socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "wrapt" | ||||
| version = "1.14.1" | ||||
| description = "Module for decorators, wrappers and monkey patching." | ||||
| category = "dev" | ||||
| optional = false | ||||
| python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" | ||||
|  | ||||
| [metadata] | ||||
| lock-version = "1.1" | ||||
| python-versions = "^3.10" | ||||
| content-hash = "b165038947d8a9e0e256c91b449c4cbd1e65ccfd0e65f271d002fc8e21e2640e" | ||||
| content-hash = "c241f1088945e1b451684386b6aac16ba85a85394c94c8a19099b5ebea05b53f" | ||||
|  | ||||
| [metadata.files] | ||||
| astroid = [ | ||||
|     {file = "astroid-2.12.12-py3-none-any.whl", hash = "sha256:72702205200b2a638358369d90c222d74ebc376787af8fb2f7f2a86f7b5cc85f"}, | ||||
|     {file = "astroid-2.12.12.tar.gz", hash = "sha256:1c00a14f5a3ed0339d38d2e2e5b74ea2591df5861c0936bb292b84ccf3a78d83"}, | ||||
| ] | ||||
| attrs = [ | ||||
|     {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, | ||||
|     {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, | ||||
| @@ -413,6 +523,10 @@ depthai = [ | ||||
|     {file = "depthai-2.17.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:de7b5e4a15b0a9e15fdf19c5388e6aa9629ecc25a955675d400173f9a2dd199b"}, | ||||
|     {file = "depthai-2.17.4.0.tar.gz", hash = "sha256:b8e3c2eaa643c64e737435adaa23d54e3fda58baad1477f5176908689473a85f"}, | ||||
| ] | ||||
| dill = [ | ||||
|     {file = "dill-0.3.5.1-py2.py3-none-any.whl", hash = "sha256:33501d03270bbe410c72639b350e941882a8b0fd55357580fbc873fba0c59302"}, | ||||
|     {file = "dill-0.3.5.1.tar.gz", hash = "sha256:d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86"}, | ||||
| ] | ||||
| google = [ | ||||
|     {file = "google-3.0.0-py2.py3-none-any.whl", hash = "sha256:889cf695f84e4ae2c55fbc0cfdaf4c1e729417fa52ab1db0485202ba173e4935"}, | ||||
|     {file = "google-3.0.0.tar.gz", hash = "sha256:143530122ee5130509ad5e989f0512f7cb218b2d4eddbafbad40fd10e8d8ccbe"}, | ||||
| @@ -425,10 +539,57 @@ iniconfig = [ | ||||
|     {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, | ||||
|     {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, | ||||
| ] | ||||
| isort = [ | ||||
|     {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, | ||||
|     {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, | ||||
| ] | ||||
| jmespath = [ | ||||
|     {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"}, | ||||
|     {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, | ||||
| ] | ||||
| lazy-object-proxy = [ | ||||
|     {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a57d51ed2997e97f3b8e3500c984db50a554bb5db56c50b5dab1b41339b37e36"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd45683c3caddf83abbb1249b653a266e7069a09f486daa8863fb0e7496a9fdb"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8561da8b3dd22d696244d6d0d5330618c993a215070f473b699e00cf1f3f6443"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fccdf7c2c5821a8cbd0a9440a456f5050492f2270bd54e94360cac663398739b"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp310-cp310-win32.whl", hash = "sha256:898322f8d078f2654d275124a8dd19b079080ae977033b713f677afcfc88e2b9"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:85b232e791f2229a4f55840ed54706110c80c0a210d076eee093f2b2e33e1bfd"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:46ff647e76f106bb444b4533bb4153c7370cdf52efc62ccfc1a28bdb3cc95442"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12f3bb77efe1367b2515f8cb4790a11cffae889148ad33adad07b9b55e0ab22c"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c19814163728941bb871240d45c4c30d33b8a2e85972c44d4e63dd7107faba44"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e40f2013d96d30217a51eeb1db28c9ac41e9d0ee915ef9d00da639c5b63f01a1"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2052837718516a94940867e16b1bb10edb069ab475c3ad84fd1e1a6dd2c0fcfc"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win32.whl", hash = "sha256:6a24357267aa976abab660b1d47a34aaf07259a0c3859a34e536f1ee6e76b5bb"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:6aff3fe5de0831867092e017cf67e2750c6a1c7d88d84d2481bd84a2e019ec35"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6a6e94c7b02641d1311228a102607ecd576f70734dc3d5e22610111aeacba8a0"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ce15276a1a14549d7e81c243b887293904ad2d94ad767f42df91e75fd7b5b6"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e368b7f7eac182a59ff1f81d5f3802161932a41dc1b1cc45c1f757dc876b5d2c"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6ecbb350991d6434e1388bee761ece3260e5228952b1f0c46ffc800eb313ff42"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:553b0f0d8dbf21890dd66edd771f9b1b5f51bd912fa5f26de4449bfc5af5e029"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win32.whl", hash = "sha256:c7a683c37a8a24f6428c28c561c80d5f4fd316ddcf0c7cab999b15ab3f5c5c69"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:df2631f9d67259dc9620d831384ed7732a198eb434eadf69aea95ad18c587a28"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07fa44286cda977bd4803b656ffc1c9b7e3bc7dff7d34263446aec8f8c96f88a"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dca6244e4121c74cc20542c2ca39e5c4a5027c81d112bfb893cf0790f96f57e"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91ba172fc5b03978764d1df5144b4ba4ab13290d7bab7a50f12d8117f8630c38"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:043651b6cb706eee4f91854da4a089816a6606c1428fd391573ef8cb642ae4f7"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b9e89b87c707dd769c4ea91f7a31538888aad05c116a59820f28d59b3ebfe25a"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp38-cp38-win32.whl", hash = "sha256:9d166602b525bf54ac994cf833c385bfcc341b364e3ee71e3bf5a1336e677b55"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:8f3953eb575b45480db6568306893f0bd9d8dfeeebd46812aa09ca9579595148"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dd7ed7429dbb6c494aa9bc4e09d94b778a3579be699f9d67da7e6804c422d3de"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70ed0c2b380eb6248abdef3cd425fc52f0abd92d2b07ce26359fcbc399f636ad"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7096a5e0c1115ec82641afbdd70451a144558ea5cf564a896294e346eb611be1"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f769457a639403073968d118bc70110e7dce294688009f5c24ab78800ae56dc8"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:39b0e26725c5023757fc1ab2a89ef9d7ab23b84f9251e28f9cc114d5b59c1b09"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp39-cp39-win32.whl", hash = "sha256:2130db8ed69a48a3440103d4a520b89d8a9405f1b06e2cc81640509e8bf6548f"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61"}, | ||||
|     {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, | ||||
| ] | ||||
| mccabe = [ | ||||
|     {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, | ||||
|     {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, | ||||
| ] | ||||
| numpy = [ | ||||
|     {file = "numpy-1.23.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:95d79ada05005f6f4f337d3bb9de8a7774f259341c70bc88047a1f7b96a4bcb2"}, | ||||
|     {file = "numpy-1.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:926db372bc4ac1edf81cfb6c59e2a881606b409ddc0d0920b988174b2e2a767f"}, | ||||
| @@ -475,6 +636,10 @@ packaging = [ | ||||
| paho-mqtt = [ | ||||
|     {file = "paho-mqtt-1.6.1.tar.gz", hash = "sha256:2a8291c81623aec00372b5a85558a372c747cbca8e9934dfe218638b8eefc26f"}, | ||||
| ] | ||||
| platformdirs = [ | ||||
|     {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, | ||||
|     {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, | ||||
| ] | ||||
| pluggy = [ | ||||
|     {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, | ||||
|     {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, | ||||
| @@ -502,6 +667,10 @@ py = [ | ||||
|     {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, | ||||
|     {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, | ||||
| ] | ||||
| pylint = [ | ||||
|     {file = "pylint-2.15.4-py3-none-any.whl", hash = "sha256:629cf1dbdfb6609d7e7a45815a8bb59300e34aa35783b5ac563acaca2c4022e9"}, | ||||
|     {file = "pylint-2.15.4.tar.gz", hash = "sha256:5441e9294335d354b7bad57c1044e5bd7cce25c433475d76b440e53452fa5cb8"}, | ||||
| ] | ||||
| pyparsing = [ | ||||
|     {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, | ||||
|     {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, | ||||
| @@ -576,7 +745,77 @@ tomli = [ | ||||
|     {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, | ||||
|     {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, | ||||
| ] | ||||
| tomlkit = [ | ||||
|     {file = "tomlkit-0.11.5-py3-none-any.whl", hash = "sha256:f2ef9da9cef846ee027947dc99a45d6b68a63b0ebc21944649505bf2e8bc5fe7"}, | ||||
|     {file = "tomlkit-0.11.5.tar.gz", hash = "sha256:571854ebbb5eac89abcb4a2e47d7ea27b89bf29e09c35395da6f03dd4ae23d1c"}, | ||||
| ] | ||||
| urllib3 = [ | ||||
|     {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"}, | ||||
|     {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"}, | ||||
| ] | ||||
| wrapt = [ | ||||
|     {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, | ||||
|     {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, | ||||
|     {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, | ||||
|     {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, | ||||
|     {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, | ||||
|     {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, | ||||
|     {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, | ||||
|     {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, | ||||
|     {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, | ||||
|     {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, | ||||
|     {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, | ||||
|     {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, | ||||
|     {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, | ||||
|     {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, | ||||
|     {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, | ||||
|     {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, | ||||
|     {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, | ||||
|     {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, | ||||
|     {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, | ||||
|     {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, | ||||
|     {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, | ||||
|     {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, | ||||
|     {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, | ||||
|     {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, | ||||
|     {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, | ||||
|     {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, | ||||
|     {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, | ||||
|     {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, | ||||
|     {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, | ||||
|     {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, | ||||
|     {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, | ||||
|     {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, | ||||
|     {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, | ||||
|     {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, | ||||
|     {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, | ||||
|     {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, | ||||
|     {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, | ||||
|     {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, | ||||
|     {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, | ||||
|     {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, | ||||
|     {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, | ||||
|     {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, | ||||
|     {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, | ||||
|     {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, | ||||
|     {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, | ||||
|     {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, | ||||
|     {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, | ||||
|     {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, | ||||
|     {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, | ||||
|     {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, | ||||
|     {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, | ||||
|     {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, | ||||
|     {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, | ||||
|     {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, | ||||
|     {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, | ||||
|     {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, | ||||
|     {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, | ||||
|     {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, | ||||
|     {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, | ||||
|     {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, | ||||
|     {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, | ||||
|     {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, | ||||
|     {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, | ||||
|     {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, | ||||
| ] | ||||
|   | ||||
| @@ -23,6 +23,10 @@ protobuf = "^4.21.8" | ||||
| [tool.poetry.group.test.dependencies] | ||||
| pytest = "^7.1.3" | ||||
|  | ||||
|  | ||||
| [tool.poetry.group.dev.dependencies] | ||||
| pylint = "^2.15.4" | ||||
|  | ||||
| [build-system] | ||||
| requires = ["poetry-core>=1.0.0", "poetry-dynamic-versioning"] | ||||
| build-backend = "poetry_dynamic_versioning.backend" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user