Best Python code snippet using prospector_python
__init__.py
Source:__init__.py  
...22        self.workdir = os.getcwd()23        self.profile, self.strictness = self._get_profile(self.workdir, self.config)24        self.libraries = self._find_used_libraries(self.config, self.profile)25        self.tools_to_run = self._determine_tool_runners(self.config, self.profile)26        self.ignores = self._determine_ignores(self.config, self.profile, self.libraries)27        self.configured_by = {}28        self.messages = []29    def get_tools(self, found_files):30        self.configured_by = {}31        runners = []32        for tool_name in self.tools_to_run:33            tool = tools.TOOLS[tool_name]()34            config_result = tool.configure(self, found_files)35            if config_result is None:36                configured_by = None37                messages = []38            else:39                configured_by, messages = config_result40                if messages is None:41                    messages = []42            self.configured_by[tool_name] = configured_by43            self.messages += messages44            runners.append(tool)45        return runners46    def get_output_report(self):47        # Get the output formatter48        if self.config.output_format is not None:49            output_report = self.config.output_format50        else:51            output_report = [(self.profile.output_format, self.profile.output_target)]52        for index, report in enumerate(output_report):53            if not all(report):54                output_report[index] = (report[0] or "grouped", report[1] or [])55        return output_report56    def _configure_prospector(self):57        # first we will configure prospector as a whole58        mgr = cfg.build_manager()59        config = mgr.retrieve(*cfg.build_default_sources())60        return config, mgr.arguments61    def _get_work_path(self, config, arguments):62        # Figure out what paths we're prospecting63        if config["path"]:64            paths = [self.config["path"]]65        elif arguments["checkpath"]:66            paths = arguments["checkpath"]67        else:68            paths = [os.getcwd()]69        return paths70    def _get_profile(self, path, config):71        # Use the specified profiles72        profile_provided = False73        if len(config.profiles) > 0:74            profile_provided = True75        cmdline_implicit = []76        # if there is a '.prospector.ya?ml' or a '.prospector/prospector.ya?ml' or equivalent landscape config77        # file then we'll include that78        profile_name = None79        if not profile_provided:80            for possible_profile in AUTO_LOADED_PROFILES:81                prospector_yaml = os.path.join(path, possible_profile)82                if os.path.exists(prospector_yaml) and os.path.isfile(prospector_yaml):83                    profile_provided = True84                    profile_name = possible_profile85                    break86        strictness = None87        if profile_provided:88            if profile_name is None:89                profile_name = config.profiles[0]90                extra_profiles = config.profiles[1:]91            else:92                extra_profiles = config.profiles93            strictness = "from profile"94        else:95            # Use the preconfigured prospector profiles96            profile_name = "default"97            extra_profiles = []98        if config.doc_warnings is not None and config.doc_warnings:99            cmdline_implicit.append("doc_warnings")100        if config.test_warnings is not None and config.test_warnings:101            cmdline_implicit.append("test_warnings")102        if config.no_style_warnings is not None and config.no_style_warnings:103            cmdline_implicit.append("no_pep8")104        if config.full_pep8 is not None and config.full_pep8:105            cmdline_implicit.append("full_pep8")106        if config.member_warnings is not None and config.member_warnings:107            cmdline_implicit.append("member_warnings")108        # Use the strictness profile only if no profile has been given109        if config.strictness is not None and config.strictness:110            cmdline_implicit.append("strictness_%s" % config.strictness)111            strictness = config.strictness112        # the profile path is113        #   * anything provided as an argument114        #   * a directory called .prospector in the check path115        #   * the check path116        #   * prospector provided profiles117        profile_path = config.profile_path118        prospector_dir = os.path.join(path, ".prospector")119        if os.path.exists(prospector_dir) and os.path.isdir(prospector_dir):120            profile_path.append(prospector_dir)121        profile_path.append(path)122        profile_path.append(BUILTIN_PROFILE_PATH)123        try:124            forced_inherits = cmdline_implicit + extra_profiles125            profile = ProspectorProfile.load(profile_name, profile_path, forced_inherits=forced_inherits)126        except CannotParseProfile as cpe:127            sys.stderr.write(128                "Failed to run:\nCould not parse profile %s as it is not valid YAML\n%s\n"129                % (cpe.filepath, cpe.get_parse_message())130            )131            sys.exit(1)132        except ProfileNotFound as nfe:133            sys.stderr.write(134                "Failed to run:\nCould not find profile %s. Search path: %s\n" % (nfe.name, ":".join(nfe.profile_path))135            )136            sys.exit(1)137        else:138            return profile, strictness139    def _find_used_libraries(self, config, profile):140        libraries = []141        # Bring in adaptors that we automatically detect are needed142        if config.autodetect and profile.autodetect is True:143            for found_dep in autodetect_libraries(self.workdir):144                libraries.append(found_dep)145        # Bring in adaptors for the specified libraries146        for name in set(config.uses + profile.uses):147            if name not in libraries:148                libraries.append(name)149        return libraries150    def _determine_tool_runners(self, config, profile):151        if config.tools is None:152            # we had no command line settings for an explicit list of153            # tools, so we use the defaults154            to_run = set(DEFAULT_TOOLS)155            # we can also use any that the profiles dictate156            for tool in tools.TOOLS.keys():157                if profile.is_tool_enabled(tool):158                    to_run.add(tool)159        else:160            to_run = set(config.tools)161            # profiles have no say in the list of tools run when162            # a command line is specified163        for tool in config.with_tools:164            to_run.add(tool)165        for tool in config.without_tools:166            if tool in to_run:167                to_run.remove(tool)168        if config.tools is None and len(config.with_tools) == 0 and len(config.without_tools) == 0:169            for tool in tools.TOOLS.keys():170                enabled = profile.is_tool_enabled(tool)171                if enabled is None:172                    enabled = tool in DEFAULT_TOOLS173                if tool in to_run and not enabled:174                    to_run.remove(tool)175        return sorted(list(to_run))176    def _determine_ignores(self, config, profile, libraries):177        # Grab ignore patterns from the options178        ignores = []179        for pattern in config.ignore_patterns + profile.ignore_patterns:180            if pattern is None:181                # this can happen if someone has a profile with an empty ignore-patterns value, eg:182                #183                #  ignore-patterns:184                #  uses: django185                continue186            try:187                ignores.append(re.compile(pattern))188            except sre_constants.error:189                pass190        # Convert ignore paths into patterns...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
