Exemple #1
0
    def test_error_if_end_date_before_earliest_available(self) -> None:
        # Arrange
        end_date = "2000-01-01"
        package = "pip"
        mocked_url = "https://pypistats.org/api/packages/pip/python_major"
        mocked_response = """{
            "data": [
                {"category": "2", "date": "2018-11-01", "downloads": 2008344},
                {"category": "3", "date": "2018-11-01", "downloads": 280299},
                {"category": "null", "date": "2018-11-01", "downloads": 7122}
            ],
            "package": "pip",
            "type": "python_major_downloads"
        }"""

        respx.get(mocked_url).respond(content=mocked_response)
        # Act / Assert
        with pytest.raises(
                ValueError,
                match=
                r"Requested end date \(2000-01-01\) is before earliest available "
                r"data \(2018-11-01\), because data is only available for 180 days. "
                "See https://pypistats.org/about#data",
        ):
            pypistats.python_major(package, end_date=end_date)
Exemple #2
0
    def test_warn_if_start_date_before_earliest_available(self):
        # Arrange
        start_date = "2000-01-01"
        package = "pip"
        mocked_url = "https://pypistats.org/api/packages/pip/python_major"
        mocked_response = """{
            "data": [
                {"category": "2", "date": "2018-11-01", "downloads": 2008344},
                {"category": "3", "date": "2018-11-01", "downloads": 280299},
                {"category": "null", "date": "2018-11-01", "downloads": 7122}
            ],
            "package": "pip",
            "type": "python_major_downloads"
        }"""

        with requests_mock.Mocker() as m:
            m.get(mocked_url, text=mocked_response)
            # Act / Assert
            with pytest.warns(
                    UserWarning,
                    match=
                    r"Requested start date \(2000-01-01\) is before earliest "
                    r"available data \(2018-11-01\), because data is only available "
                    "for 180 days. "
                    "See https://pypistats.org/about#data",
            ):
                pypistats.python_major(package, start_date=start_date)
Exemple #3
0
    def test_python_major_json(self) -> None:
        # Arrange
        package = "pip"
        mocked_url = "https://pypistats.org/api/packages/pip/python_major"
        mocked_response = """{
            "data": [
                {"category": "2", "date": "2018-11-01", "downloads": 2008344},
                {"category": "3", "date": "2018-11-01", "downloads": 280299},
                {"category": "null", "date": "2018-11-01", "downloads": 7122}
            ],
            "package": "pip",
            "type": "python_major_downloads"
        }"""
        expected_output = """{
            "data": [
                {"category": "2", "downloads": 2008344},
                {"category": "3", "downloads": 280299},
                {"category": "null", "downloads": 7122}
            ],
            "package": "pip",
            "type": "python_major_downloads"
        }"""

        # Act
        respx.get(mocked_url).respond(content=mocked_response)
        output = pypistats.python_major(package, format="json")

        # Assert
        assert json.loads(output) == json.loads(expected_output)
Exemple #4
0
    def test_python_major_json(self):
        # Arrange
        package = "pip"
        mocked_url = "https://pypistats.org/api/packages/pip/python_major"
        mocked_response = """{
            "data": [
                {"category": "2", "date": "2018-11-01", "downloads": 2008344},
                {"category": "3", "date": "2018-11-01", "downloads": 280299},
                {"category": "null", "date": "2018-11-01", "downloads": 7122}
            ],
            "package": "pip",
            "type": "python_major_downloads"
        }"""
        expected_output = """{
            "data": [
                {"category": "2", "downloads": 2008344},
                {"category": "3", "downloads": 280299},
                {"category": "null", "downloads": 7122}
            ],
            "package": "pip",
            "type": "python_major_downloads"
        }"""

        # Act
        with requests_mock.Mocker() as m:
            m.get(mocked_url, text=mocked_response)
            output = pypistats.python_major(package, format="json")

        # Assert
        self.assertEqual(json.loads(output), json.loads(expected_output))
Exemple #5
0
def python_major(args):  # pragma: no cover
    print(
        pypistats.python_major(
            args.package,
            version=args.version,
            start_date=args.start_date,
            end_date=args.end_date,
            format=args.format,
            total="daily" if args.daily else
            ("monthly" if args.monthly else "all"),
        ))
Exemple #6
0
def python_major(args: argparse.Namespace) -> None:  # pragma: no cover
    print(
        pypistats.python_major(
            args.package,
            version=args.version,
            start_date=args.start_date,
            end_date=args.end_date,
            format=args.format,
            total="daily" if args.daily else
            ("monthly" if args.monthly else "all"),
            color=args.color,
            verbose=args.verbose,
        ))