PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 131
# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html # For details: https://github.com/PyCQA/pylint/blob/main/LICENSE # Copyright (c) https://github.com/PyCQA/pylint/blob/main/CONTRIBUTORS.txt from __future__ import annotations import copy import optparse # pylint: disable=deprecated-module import pathlib import re import warnings from collections.abc import Callable, Sequence from re import Pattern from typing import Any from pylint import utils # pylint: disable=unused-argument def _csv_validator( _: Any, name: str, value: str | list[str] | tuple[str] ) -> Sequence[str]: return utils._check_csv(value) # pylint: disable=unused-argument def _regexp_validator( _: Any, name: str, value: str | re.Pattern[str] ) -> re.Pattern[str]: if hasattr(value, "pattern"): return value # type: ignore[return-value] return re.compile(value) # pylint: disable=unused-argument def _regexp_csv_validator( _: Any, name: str, value: str | list[str] ) -> list[re.Pattern[str]]: return [_regexp_validator(_, name, val) for val in _csv_validator(_, name, value)] def _regexp_paths_csv_validator( _: Any, name: str, value: str | list[Pattern[str]] ) -> list[Pattern[str]]: if isinstance(value, list): return value patterns = [] for val in _csv_validator(_, name, value): patterns.append( re.compile( str(pathlib.PureWindowsPath(val)).replace("\\", "\\\\") + "|" + pathlib.PureWindowsPath(val).as_posix() ) ) return patterns def _choice_validator(choices: list[Any], name: str, value: Any) -> Any: if value not in choices: msg = "option %s: invalid value: %r, should be in %s" raise optparse.OptionValueError(msg % (name, value, choices)) return value def _yn_validator(opt: str, _: str, value: Any) -> bool: if isinstance(value, int): return bool(value) if isinstance(value, str): value = value.lower() if value in {"y", "yes", "true"}: return True if value in {"n", "no", "false"}: return False msg = "option %s: invalid yn value %r, should be in (y, yes, true, n, no, false)" raise optparse.OptionValueError(msg % (opt, value)) def _multiple_choice_validator(choices: list[Any], name: str, value: Any) -> Any: values = utils._check_csv(value) for csv_value in values: if csv_value not in choices: msg = "option %s: invalid value: %r, should be in %s" raise optparse.OptionValueError(msg % (name, csv_value, choices)) return values def _non_empty_string_validator( # pragma: no cover # Unused opt: Any, _: str, value: str ) -> str: if not value: msg = "indent string can't be empty." raise optparse.OptionValueError(msg) return utils._unquote(value) def _multiple_choices_validating_option( # pragma: no cover # Unused opt: optparse.Option, name: str, value: Any ) -> Any: return _multiple_choice_validator( opt.choices, name, value # type: ignore[attr-defined] ) def _py_version_validator(_: Any, name: str, value: Any) -> tuple[int, int, int]: if not isinstance(value, tuple): try: value = tuple(int(val) for val in value.split(".")) except (ValueError, AttributeError): raise optparse.OptionValueError( f"Invalid format for {name}, should be version string. E.g., '3.8'" ) from None return value # type: ignore[no-any-return] VALIDATORS: dict[str, Callable[[Any, str, Any], Any] | Callable[[Any], Any]] = { "string": utils._unquote, "int": int, "float": float, "glob_paths_csv": _csv_validator, "regexp": lambda pattern: re.compile(pattern or ""), "regexp_csv": _regexp_csv_validator, "regexp_paths_csv": _regexp_paths_csv_validator, "csv": _csv_validator, "yn": _yn_validator, "choice": lambda opt, name, value: _choice_validator(opt["choices"], name, value), "confidence": lambda opt, name, value: _multiple_choice_validator( opt["choices"], name, value ), "multiple_choice": lambda opt, name, value: _multiple_choice_validator( opt["choices"], name, value ), "non_empty_string": _non_empty_string_validator, "py_version": _py_version_validator, } def _call_validator(opttype: str, optdict: Any, option: str, value: Any) -> Any: if opttype not in VALIDATORS: raise TypeError(f'Unsupported type "{opttype}"') try: return VALIDATORS[opttype](optdict, option, value) # type: ignore[call-arg] except TypeError: try: return VALIDATORS[opttype](value) # type: ignore[call-arg] except Exception as e: raise optparse.OptionValueError( f"{option} value ({value!r}) should be of type {opttype}" ) from e def _validate(value: Any, optdict: Any, name: str = "") -> Any: """Return a validated value for an option according to its type. optional argument name is only used for error message formatting """ try: _type = optdict["type"] except KeyError: return value return _call_validator(_type, optdict, name, value) # pylint: disable=no-member class Option(optparse.Option): TYPES = optparse.Option.TYPES + ( "glob_paths_csv", "regexp", "regexp_csv", "regexp_paths_csv", "csv", "yn", "confidence", "multiple_choice", "non_empty_string", "py_version", ) ATTRS = optparse.Option.ATTRS + ["hide", "level"] TYPE_CHECKER = copy.copy(optparse.Option.TYPE_CHECKER) TYPE_CHECKER["glob_paths_csv"] = _csv_validator TYPE_CHECKER["regexp"] = _regexp_validator TYPE_CHECKER["regexp_csv"] = _regexp_csv_validator TYPE_CHECKER["regexp_paths_csv"] = _regexp_paths_csv_validator TYPE_CHECKER["csv"] = _csv_validator TYPE_CHECKER["yn"] = _yn_validator TYPE_CHECKER["confidence"] = _multiple_choices_validating_option TYPE_CHECKER["multiple_choice"] = _multiple_choices_validating_option TYPE_CHECKER["non_empty_string"] = _non_empty_string_validator TYPE_CHECKER["py_version"] = _py_version_validator def __init__(self, *opts: Any, **attrs: Any) -> None: # TODO: 3.0: Remove deprecated class warnings.warn( "Option has been deprecated and will be removed in pylint 3.0", DeprecationWarning, stacklevel=2, ) super().__init__(*opts, **attrs) if hasattr(self, "hide") and self.hide: self.help = optparse.SUPPRESS_HELP def _check_choice(self) -> None: if self.type in {"choice", "multiple_choice", "confidence"}: if self.choices is None: # type: ignore[attr-defined] raise optparse.OptionError( "must supply a list of choices for type 'choice'", self ) if not isinstance(self.choices, (tuple, list)): # type: ignore[attr-defined] raise optparse.OptionError( # pylint: disable-next=consider-using-f-string "choices must be a list of strings ('%s' supplied)" % str(type(self.choices)).split("'")[1], # type: ignore[attr-defined] self, ) elif self.choices is not None: # type: ignore[attr-defined] raise optparse.OptionError( f"must not supply choices for type {self.type!r}", self ) optparse.Option.CHECK_METHODS[2] = _check_choice # type: ignore[index] def process( # pragma: no cover # Argparse self, opt: Any, value: Any, values: Any, parser: Any ) -> int: assert isinstance(self.dest, str) if self.callback and self.callback.__module__ == "pylint.lint.run": return 1 # First, convert the value(s) to the right type. Howl if any # value(s) are bogus. value = self.convert_value(opt, value) if self.type == "named": existent = getattr(values, self.dest) if existent: existent.update(value) value = existent # And then take whatever action is expected of us. # This is a separate method to make life easier for # subclasses to add new actions. return self.take_action(self.action, self.dest, opt, value, values, parser)