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 # pylint: disable=too-many-arguments, redefined-builtin, duplicate-code """Callback actions for various options.""" from __future__ import annotations import abc import argparse import sys import warnings from collections.abc import Callable, Sequence from pathlib import Path from typing import TYPE_CHECKING, Any from pylint import exceptions, extensions, interfaces, utils if TYPE_CHECKING: from pylint.config.help_formatter import _HelpFormatter from pylint.lint import PyLinter from pylint.lint.run import Run class _CallbackAction(argparse.Action): """Custom callback action.""" @abc.abstractmethod def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = None, ) -> None: raise NotImplementedError # pragma: no cover class _DoNothingAction(_CallbackAction): """Action that just passes. This action is used to allow pre-processing of certain options without erroring when they are then processed again by argparse. """ def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = None, ) -> None: return None class _ExtendAction(argparse._AppendAction): """Action that adds the value to a pre-existing list. It is directly copied from the stdlib implementation which is only available on 3.8+. """ def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = None, ) -> None: assert isinstance(values, (tuple, list)) current = getattr(namespace, self.dest, []) assert isinstance(current, list) current.extend(values) setattr(namespace, self.dest, current) class _AccessRunObjectAction(_CallbackAction): """Action that has access to the Run object.""" def __init__( self, option_strings: Sequence[str], dest: str, nargs: None = None, const: None = None, default: None = None, type: None = None, choices: None = None, required: bool = False, help: str = "", metavar: str = "", **kwargs: Run, ) -> None: self.run = kwargs["Run"] super().__init__( option_strings, dest, 0, const, default, type, choices, required, help, metavar, ) @abc.abstractmethod def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = None, ) -> None: raise NotImplementedError # pragma: no cover class _MessageHelpAction(_CallbackAction): """Display the help message of a message.""" def __init__( self, option_strings: Sequence[str], dest: str, nargs: None = None, const: None = None, default: None = None, type: None = None, choices: None = None, required: bool = False, help: str = "", metavar: str = "", **kwargs: Run, ) -> None: self.run = kwargs["Run"] super().__init__( option_strings, dest, "+", const, default, type, choices, required, help, metavar, ) def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[str] | None, option_string: str | None = "--help-msg", ) -> None: assert isinstance(values, (list, tuple)) values_to_print: list[str] = [] for msg in values: assert isinstance(msg, str) values_to_print += utils._check_csv(msg) self.run.linter.msgs_store.help_message(values_to_print) sys.exit(0) class _ListMessagesAction(_AccessRunObjectAction): """Display all available messages.""" def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = "--list-enabled", ) -> None: self.run.linter.msgs_store.list_messages() sys.exit(0) class _ListMessagesEnabledAction(_AccessRunObjectAction): """Display all enabled messages.""" def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = "--list-msgs-enabled", ) -> None: self.run.linter.list_messages_enabled() sys.exit(0) class _ListCheckGroupsAction(_AccessRunObjectAction): """Display all the check groups that pylint knows about.""" def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = "--list-groups", ) -> None: for check in self.run.linter.get_checker_names(): print(check) sys.exit(0) class _ListConfidenceLevelsAction(_AccessRunObjectAction): """Display all the confidence levels that pylint knows about.""" def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = "--list-conf-levels", ) -> None: for level in interfaces.CONFIDENCE_LEVELS: print(f"%-18s: {level}") sys.exit(0) class _ListExtensionsAction(_AccessRunObjectAction): """Display all extensions under pylint.extensions.""" def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = "--list-extensions", ) -> None: for filename in Path(extensions.__file__).parent.iterdir(): if filename.suffix == ".py" and not filename.stem.startswith("_"): extension_name, _, _ = filename.stem.partition(".") print(f"pylint.extensions.{extension_name}") sys.exit(0) class _FullDocumentationAction(_AccessRunObjectAction): """Display the full documentation.""" def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = "--full-documentation", ) -> None: utils.print_full_documentation(self.run.linter) sys.exit(0) class _GenerateRCFileAction(_AccessRunObjectAction): """Generate a pylintrc file.""" def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = "--generate-rcfile", ) -> None: # TODO: 2.x: Deprecate this after the auto-upgrade functionality of # pylint-config is sufficient. with warnings.catch_warnings(): warnings.filterwarnings("ignore", category=DeprecationWarning) self.run.linter.generate_config(skipsections=("Commands",)) sys.exit(0) class _GenerateConfigFileAction(_AccessRunObjectAction): """Generate a .toml format configuration file.""" def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = "--generate-toml-config", ) -> None: print(self.run.linter._generate_config_file()) sys.exit(0) class _ErrorsOnlyModeAction(_AccessRunObjectAction): """Turn on errors-only mode. Error mode: * disable all but error messages * disable the 'miscellaneous' checker which can be safely deactivated in debug * disable reports * do not save execution information """ def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = "--errors-only", ) -> None: self.run.linter._error_mode = True class _LongHelpAction(_AccessRunObjectAction): """Display the long help message.""" def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = "--long-help", ) -> None: formatter: _HelpFormatter = self.run.linter._arg_parser._get_formatter() # type: ignore[assignment] # Add extra info as epilog to the help message self.run.linter._arg_parser.epilog = formatter.get_long_description() print(self.run.linter.help()) sys.exit(0) class _AccessLinterObjectAction(_CallbackAction): """Action that has access to the Linter object.""" def __init__( self, option_strings: Sequence[str], dest: str, nargs: None = None, const: None = None, default: None = None, type: None = None, choices: None = None, required: bool = False, help: str = "", metavar: str = "", **kwargs: PyLinter, ) -> None: self.linter = kwargs["linter"] super().__init__( option_strings, dest, 1, const, default, type, choices, required, help, metavar, ) @abc.abstractmethod def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = None, ) -> None: raise NotImplementedError # pragma: no cover class _XableAction(_AccessLinterObjectAction): """Callback action for enabling or disabling a message.""" def _call( self, xabling_function: Callable[[str], None], values: str | Sequence[Any] | None, option_string: str | None, ) -> None: assert isinstance(values, (tuple, list)) for msgid in utils._check_csv(values[0]): try: xabling_function(msgid) except ( exceptions.DeletedMessageError, exceptions.MessageBecameExtensionError, ) as e: self.linter._stashed_messages[ (self.linter.current_name, "useless-option-value") ].append((option_string, str(e))) except exceptions.UnknownMessageError: self.linter._stashed_messages[ (self.linter.current_name, "unknown-option-value") ].append((option_string, msgid)) @abc.abstractmethod def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = "--disable", ) -> None: raise NotImplementedError # pragma: no cover class _DisableAction(_XableAction): """Callback action for disabling a message.""" def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = "--disable", ) -> None: self._call(self.linter.disable, values, option_string) class _EnableAction(_XableAction): """Callback action for enabling a message.""" def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = "--enable", ) -> None: self._call(self.linter.enable, values, option_string) class _OutputFormatAction(_AccessLinterObjectAction): """Callback action for setting the output format.""" def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = "--enable", ) -> None: assert isinstance(values, (tuple, list)) assert isinstance( values[0], str ), "'output-format' should be a comma separated string of reporters" self.linter._load_reporters(values[0]) class _AccessParserAction(_CallbackAction): """Action that has access to the ArgumentParser object.""" def __init__( self, option_strings: Sequence[str], dest: str, nargs: None = None, const: None = None, default: None = None, type: None = None, choices: None = None, required: bool = False, help: str = "", metavar: str = "", **kwargs: argparse.ArgumentParser, ) -> None: self.parser = kwargs["parser"] super().__init__( option_strings, dest, 0, const, default, type, choices, required, help, metavar, ) @abc.abstractmethod def __call__( self, parser: argparse.ArgumentParser, namespace: argparse.Namespace, values: str | Sequence[Any] | None, option_string: str | None = None, ) -> None: raise NotImplementedError # pragma: no cover