class documentation

Check characters that could be used to hide bad code to humans. This includes: - Bidirectional Unicode (see https://trojansource.codes/) - Bad ASCII characters (see PEP672) If a programmer requires to use such a character they should use the escaped version, that is also much easier to read and does not depend on the editor used. The Checker also includes a check that UTF-16 and UTF-32 are not used to encode Python files. At the time of writing Python supported only UTF-8. See https://stackoverflow.com/questions/69897842/ and https://bugs.python.org/issue1503789 for background.

Method process_module Perform the actual check by checking module stream.
Class Variable msgs Undocumented
Class Variable name Name of the provider.
Class Method _find_line_matches Find all matches of BAD_CHARS within line.
Static Method _determine_codec Determine the codec from the given stream.
Static Method _is_invalid_codec Undocumented
Static Method _is_unicode Undocumented
Method _check_bidi_chars Look for Bidirectional Unicode, if we use unicode.
Method _check_codec Check validity of the codec.
Method _check_invalid_chars Look for chars considered bad.

Inherited from BaseChecker (via BaseRawFileChecker):

Method __eq__ Permit to assert Checkers are equal.
Method __gt__ Sorting of checkers.
Method __hash__ Make Checker hashable.
Method __init__ Checker instances should have the linter as argument.
Method __repr__ Undocumented
Method __str__ This might be incomplete because multiple classes inheriting BaseChecker can have the same name.
Method add_message Undocumented
Method check_consistency Check the consistency of msgid.
Method close Called after visiting project (i.e set of modules).
Method create_message_definition_from_tuple Undocumented
Method get_full_documentation Undocumented
Method get_map_data Undocumented
Method get_message_definition Undocumented
Method open Called before visiting project (i.e. set of modules).
Method reduce_map_data Undocumented
Class Variable enabled Undocumented
Class Variable options Options provided by this provider.
Class Variable reports Undocumented
Instance Variable linter Undocumented
Property messages Undocumented

Inherited from _ArgumentsProvider (via BaseRawFileChecker, BaseChecker):

Method get_option_def DEPRECATED: Return the dictionary defining an option given its name.
Method level.setter Undocumented
Method load_defaults DEPRECATED: Initialize the provider using default values.
Method option_attrname DEPRECATED: Get the config attribute corresponding to opt.
Method option_value DEPRECATED: Get the current value for the given option.
Method options_and_values DEPRECATED.
Method options_by_section DEPRECATED: Return an iterator on options grouped by section.
Method set_option DEPRECATED: Method called to set an option (registered in the options list).
Class Variable option_groups_descs Option groups of this provider and their descriptions.
Property config Undocumented
Property level Undocumented
Instance Variable _arguments_manager The manager that will parse and register any options provided.
Instance Variable _level Undocumented
def process_module(self, node: nodes.Module): (source)

Perform the actual check by checking module stream.

Name of the provider.

@classmethod
def _find_line_matches(cls, line: bytes, codec: str) -> dict[int, _BadChar]: (source)

Find all matches of BAD_CHARS within line. Args: line: the input codec: that will be used to convert line/or search string into Return: A dictionary with the column offset and the BadASCIIChar

@staticmethod
def _determine_codec(stream: io.BytesIO) -> tuple[str, int]: (source)

Determine the codec from the given stream. first tries https://www.python.org/dev/peps/pep-0263/ and if this fails also checks for BOMs of UTF-16 and UTF-32 to be future-proof. Args: stream: The byte stream to analyse Returns: A tuple consisting of: - normalized codec name - the line in which the codec was found Raises: SyntaxError: if failing to detect codec

@staticmethod
def _is_invalid_codec(codec: str) -> bool: (source)

Undocumented

@staticmethod
def _is_unicode(codec: str) -> bool: (source)

Undocumented

def _check_bidi_chars(self, line: bytes, lineno: int, codec: str): (source)

Look for Bidirectional Unicode, if we use unicode.

def _check_codec(self, codec: str, codec_definition_line: int): (source)

Check validity of the codec.

def _check_invalid_chars(self, line: bytes, lineno: int, codec: str): (source)

Look for chars considered bad.