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)
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)
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)
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))
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"), ))
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, ))