コード例 #1
0
def run(mode, argument):

    logging.info('-'*30)
    logging.info('Checking ' + argument)

    if mode == 'directory':
        data = projectdata.get_data(os.path.abspath(argument))
        logging.info('Found ' + data.get('name', 'nothing'))
    elif mode == 'file':
        data = distributiondata.get_data(os.path.abspath(argument))
        logging.info('Found ' + data.get('name', 'nothing'))
    else:
        # It's probably a package name
        data = pypidata.get_data(argument)
        logging.info('Found ' + data.get('name', 'nothing'))

    rating = ratings.rate(data)

    logging.info('-'*30)
    for problem in rating[1]:
        # XXX It would be nice with a * pointlist instead, but that requires
        # that we know how wide the terminal is and nice word-breaks, so that's
        # for later.
        logging.info(problem)
    if rating[1]:
        logging.info('-'*30)
    logging.info('Final rating: ' + str(rating[0]) + '/10')
    logging.info(ratings.LEVELS[rating[0]])
    logging.info('-'*30)

    return rating[0]
コード例 #2
0
ファイル: __init__.py プロジェクト: pennyarcade/py_pov
def run(mode, argument):

    logging.info('-'*30)
    logging.info('Checking ' + argument)

    if mode == 'directory':
        data = projectdata.get_data(os.path.abspath(argument))
        logging.info('Found ' + data.get('name', 'nothing'))
    elif mode == 'file':
        data = distributiondata.get_data(os.path.abspath(argument))
        logging.info('Found ' + data.get('name', 'nothing'))
    else:
        # It's probably a package name
        data = pypidata.get_data(argument)
        logging.info('Found ' + data.get('name', 'nothing'))

    rating = ratings.rate(data)

    logging.info('-'*30)
    for problem in rating[1]:
        # XXX It would be nice with a * pointlist instead, but that requires
        # that we know how wide the terminal is and nice word-breaks, so that's
        # for later.
        logging.info(problem)
    if rating[1]:
        logging.info('-'*30)
    logging.info('Final rating: ' + str(rating[0]) + '/10')
    logging.info(ratings.LEVELS[rating[0]])
    logging.info('-'*30)

    return rating[0]
コード例 #3
0
    def test_distribute(self, projectdatamock):
        datafile = resource_filename(__name__, os.path.join("testdata", "jsondata", "distribute.json"))
        with open(datafile, "rt", encoding="UTF-8") as file:
            projectdatamock.return_value = json.load(file)

        proxystub.set_debug_context("distributedata.py", xmlrpclib.ServerProxy, False)

        data = pypidata.get_data("distribute")
        rating = rate(data)

        # build + older versions of setuptools works, later setuptools does not, so
        # we can get two different results here:
        self.assertEqual(
            rating,
            (
                7,
                [
                    "The classifiers should specify what minor versions of Python "
                    "you support as well as what major version.",
                    "You should have three or more owners of the project on PyPI.",
                    "Your Cheese may have spoiled!! The only way to gather metadata from your package was to execute "
                    "a patched setup.py. This indicates that your package is using very old packaging techniques, "
                    "(or that your setup.py isn't executable at all), and Pyroma will soon regard that as a "
                    "complete failure!\nPlease modernize your packaging! If it is already modern, this is a bug.",
                ],
            ),
        )
コード例 #4
0
    def test_distribute(self):
        real_urlopen = urllib.urlopen
        real_server_proxy = xmlrpclib.ServerProxy
        try:
            xmlrpclib.ServerProxy = ProxyStub(
                "distributedata.py", xmlrpclib.ServerProxy, False
            )
            urllib.urlopen = urlopenstub
            data = pypidata.get_data("distribute")
            rating = rate(data)

            self.assertEqual(
                rating,
                (
                    9,
                    [
                        "The classifiers should specify what minor versions of Python "
                        "you support as well as what major version.",
                        "You should have three or more owners of the project on PyPI.",
                    ],
                ),
            )
        finally:
            xmlrpclib.ServerProxy = real_server_proxy
            urllib.urlopen = real_urlopen
コード例 #5
0
def run(mode, argument):

    logging.info("-" * 30)
    logging.info("Checking " + argument)

    if mode == "directory":
        data = projectdata.get_data(os.path.abspath(argument))
        logging.info("Found " + data.get("name", "nothing"))
    elif mode == "file":
        data = distributiondata.get_data(os.path.abspath(argument))
        logging.info("Found " + data.get("name", "nothing"))
    else:
        # It's probably a package name
        data = pypidata.get_data(argument)
        logging.info("Found " + data.get("name", "nothing"))

    rating = ratings.rate(data)

    logging.info("-" * 30)
    for problem in rating[1]:
        # XXX It would be nice with a * pointlist instead, but that requires
        # that we know how wide the terminal is and nice word-breaks, so that's
        # for later.
        logging.info(problem)
    if rating[1]:
        logging.info("-" * 30)
    logging.info("Final rating: " + str(rating[0]) + "/10")
    logging.info(ratings.LEVELS[rating[0]])
    logging.info("-" * 30)

    return rating[0]
コード例 #6
0
    def test_complete(self, projectdatamock):
        datafile = resource_filename(__name__, os.path.join("testdata", "jsondata", "complete.json"))
        with open(datafile, "rt", encoding="UTF-8") as file:
            projectdatamock.return_value = json.load(file)

        proxystub.set_debug_context("completedata.py", xmlrpclib.ServerProxy, False)

        data = pypidata.get_data("complete")
        rating = rate(data)

        self.assertEqual(rating, (10, []))
コード例 #7
0
ファイル: tests.py プロジェクト: pennyarcade/py_pov
    def test_complete(self):
        real_urlopen = urllib.urlopen
        real_server_proxy = xmlrpclib.ServerProxy
        try:
            xmlrpclib.ServerProxy = ProxyStub('completedata.py',
                                              xmlrpclib.ServerProxy, False)
            urllib.urlopen = urlopenstub
            data = pypidata.get_data('complete')
            rating = rate(data)

            self.assertEqual(rating, (10, []))
        finally:
            xmlrpclib.ServerProxy = real_server_proxy
            urllib.urlopen = real_urlopen
コード例 #8
0
    def test_distribute(self):
        real_urlopen = urllib.urlopen
        real_server_proxy = xmlrpclib.ServerProxy
        try:
            xmlrpclib.ServerProxy = ProxyStub('distributedata.py',
                                              xmlrpclib.ServerProxy, False)
            urllib.urlopen = urlopenstub
            data = pypidata.get_data('distribute')
            rating = rate(data)

            self.assertEqual(rating, (8, [
                'The classifiers should specify what minor versions of Python '
                'you support as well as what major version.',
                "The license specification 'PSF or ZPL' is not listed as a common name for 'License :: OSI Approved :: Zope Public License'. Expected 'ZPL'.",
                'You should have three or more owners of the project on PyPI.'
            ]))
        finally:
            xmlrpclib.ServerProxy = real_server_proxy
            urllib.urlopen = real_urlopen
コード例 #9
0
    def test_distribute(self):
        real_urlopen = urllib.urlopen
        real_server_proxy = xmlrpclib.ServerProxy
        try:
            xmlrpclib.ServerProxy = ProxyStub('distributedata.py',
                                              xmlrpclib.ServerProxy, False)
            urllib.urlopen = urlopenstub
            data = pypidata.get_data('distribute')
            rating = rate(data)

            self.assertEqual(rating, (9, [
                'The classifiers should specify what minor versions of Python '
                'you support as well as what major version.',
                'You might want to host your documentation on readthedocs.org.',
                'You should have three or more owners of the project on PyPI.'
            ]))
        finally:
            xmlrpclib.ServerProxy = real_server_proxy
            urllib.urlopen = real_urlopen
コード例 #10
0
    def test_distribute(self, projectdatamock):
        datafile = resource_filename(
            __name__, os.path.join("testdata", "jsondata", "distribute.json")
        )
        with open(datafile, "rt", encoding="UTF-8") as file:
            projectdatamock.return_value = json.load(file)

        proxystub.set_debug_context("distributedata.py", xmlrpclib.ServerProxy, False)

        data = pypidata.get_data("distribute")
        rating = rate(data)

        self.assertEqual(
            rating,
            (
                9,
                [
                    "The classifiers should specify what minor versions of Python "
                    "you support as well as what major version.",
                    "You should have three or more owners of the project on PyPI.",
                ],
            ),
        )