Ejemplo n.º 1
0
    def update_requirements(self):
        """
        Fetches the content of the requirements.txt files from GitHub,
        parses the file and adds each requirement to the repo.

        """
        for project_name, specs in self.parse_requirements_file():
            # specs may be empty list if no version is specified in file
            # No need to add to table since we can't check updates.
            if specs:
                # There must be '==' operator in specs.
                operators = [s[0] for s in specs]
                if '==' in operators:
                    # If the project is not registered on PyPI,
                    # we are not adding it.
                    if project_name.lower() in Package.get_all_names():
                        self.add_new_requirement(project_name, specs)

        self.last_check = datetime.utcnow()
Ejemplo n.º 2
0
    def update_requirements(self):
        """
        Fetches the content of the requirements.txt files from GitHub,
        parses the file and adds each requirement to the repo.

        """
        for project_name, specs in self.parse_requirements_file():
            # specs may be empty list if no version is specified in file
            # No need to add to table since we can't check updates.
            if specs:
                # There must be '==' operator in specs.
                operators = [s[0] for s in specs]
                if '==' in operators:
                    # If the project is not registered on PyPI,
                    # we are not adding it.
                    if project_name.lower() in Package.get_all_names():
                        self.add_new_requirement(project_name, specs)

        self.last_check = datetime.utcnow()
Ejemplo n.º 3
0
    def _update_requirements(self, force=False):
        try:
            content = self.fetch_requirements(force=force)
        except RequirementsNotModified:
            logger.info("requirements.txt file not modified")
            return
        except RequirementsNotFound:
            logger.info("requirements.txt file not found")
            self.requirements.clear()
            return
        except InvalidToken:
            logger.info("invalid token, deleting user: %s", self.user.name)
            db.session.delete(self.user)
            return

        try:
            requirements = Repo.parse_requirements_file(content)
        except RequirementParseError as e:
            logger.warning("parsing error for %s: %s", self.name, e)
            self.requirements.clear()
            return

        tracked_packages = set()
        for package_name, specs in requirements:
            # specs may be empty list if no version is specified in file
            # No need to add to table since we can't check updates.
            if specs:
                # There must be '==' operator in specs.
                operators = [s[0] for s in specs]
                if '==' in operators:
                    package_name = package_name.lower()
                    # If the project is not registered on PyPI,
                    # we are not adding it.
                    if package_name in Package.get_all_names():
                        tracked_packages.add(package_name)
                        self.add_new_requirement(package_name, specs)

        # Delete removed requirements
        for req in list(self.requirements):
            if req.package.name not in tracked_packages:
                self.requirements.remove(req)
Ejemplo n.º 4
0
    def _update_requirements(self, force=False):
        try:
            content = self.fetch_requirements(force=force)
        except RequirementsNotModified:
            logger.info("requirements.txt file not modified")
            return
        except RequirementsNotFound:
            logger.info("requirements.txt file not found")
            self.requirements.clear()
            return
        except InvalidToken:
            logger.info("invalid token, deleting user: %s", self.user.name)
            db.session.delete(self.user)
            return

        try:
            requirements = Repo.parse_requirements_file(content)
        except RequirementParseError as e:
            logger.warning("parsing error for %s: %s", self.name, e)
            self.requirements.clear()
            return

        tracked_packages = set()
        for package_name, specs in requirements:
            # specs may be empty list if no version is specified in file
            # No need to add to table since we can't check updates.
            if specs:
                # There must be '==' operator in specs.
                operators = [s[0] for s in specs]
                if '==' in operators:
                    package_name = package_name.lower()
                    # If the project is not registered on PyPI,
                    # we are not adding it.
                    if package_name in Package.get_all_names():
                        tracked_packages.add(package_name)
                        self.add_new_requirement(package_name, specs)

        # Delete removed requirements
        for req in list(self.requirements):
            if req.package.name not in tracked_packages:
                self.requirements.remove(req)