lhpapi 1.0.1__tar.gz → 1.0.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- /.pytest_cache
2
- /dist
3
- /src/lhpapi/__pycache__
4
- /tests/__pycache__
1
+ /.pytest_cache
2
+ /dist
3
+ /src/lhpapi/__pycache__
4
+ /tests/__pycache__
@@ -1,3 +1,11 @@
1
+ ## 1.0.3 (2024-10-02)
2
+ ### Fixed
3
+ - Fix BE encoding
4
+
5
+ ## 1.0.2 (2024-03-03)
6
+ ### Fixed
7
+ - Update minimum required Python version to 3.11 due to usage of datetime.UTC
8
+
1
9
  ## 1.0.1 (2024-03-02)
2
10
  ### Fixed
3
11
  - Fix `last_update` for BE pegel
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: lhpapi
3
- Version: 1.0.1
3
+ Version: 1.0.3
4
4
  Summary: API to retrieve data from the Länderübergreifendes Hochwasser Portal (LHP)
5
5
  Project-URL: Homepage, https://github.com/stephan192/lhpapi
6
6
  Project-URL: Issues, https://github.com/stephan192/lhpapi/issues
@@ -11,7 +11,7 @@ Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: License :: OSI Approved :: MIT License
12
12
  Classifier: Operating System :: OS Independent
13
13
  Classifier: Programming Language :: Python :: 3
14
- Requires-Python: >=3.8
14
+ Requires-Python: >=3.11
15
15
  Requires-Dist: beautifulsoup4>=4.12.2
16
16
  Requires-Dist: lxml>=4.9.4
17
17
  Requires-Dist: requests>=2.31.0
@@ -4,13 +4,13 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "lhpapi"
7
- version = "1.0.1"
7
+ version = "1.0.3"
8
8
  authors = [
9
9
  { name="stephan192", email="stephan192@outlook.com" },
10
10
  ]
11
11
  description = "API to retrieve data from the Länderübergreifendes Hochwasser Portal (LHP)"
12
12
  readme = "README.md"
13
- requires-python = ">=3.8"
13
+ requires-python = ">=3.11"
14
14
  keywords = ["lhpapi", "lhp", "hochwasser"]
15
15
  classifiers = [
16
16
  "Development Status :: 5 - Production/Stable",
@@ -52,24 +52,6 @@ def fetch_json(url: str, timeout: float = 10.0) -> Any:
52
52
  return json_data
53
53
 
54
54
 
55
- def fetch_soup(
56
- url: str, timeout: float = 10.0, remove_xml: bool = False
57
- ) -> BeautifulSoup:
58
- """Fetch data via soup."""
59
- response = get(url=url, timeout=timeout)
60
- # Override encoding by real educated guess (required for e.g. SH)
61
- response.encoding = response.apparent_encoding
62
- response.raise_for_status()
63
- if remove_xml and (
64
- (response.text.find('<?xml version="1.0" encoding="ISO-8859-15" ?>')) == 0
65
- ):
66
- text = response.text[response.text.find("<!DOCTYPE html>") :]
67
- soup = BeautifulSoup(text, "lxml")
68
- else:
69
- soup = BeautifulSoup(response.text, "lxml")
70
- return soup
71
-
72
-
73
55
  def fetch_text(url: str, timeout: float = 10.0, forced_encoding: str = None) -> str:
74
56
  """Fetch data via text."""
75
57
  response = get(url=url, timeout=timeout)
@@ -82,6 +64,15 @@ def fetch_text(url: str, timeout: float = 10.0, forced_encoding: str = None) ->
82
64
  return response.text
83
65
 
84
66
 
67
+ def fetch_soup(
68
+ url: str, timeout: float = 10.0, forced_encoding: str = None
69
+ ) -> BeautifulSoup:
70
+ """Fetch data via soup."""
71
+ text = fetch_text(url=url, timeout=timeout, forced_encoding=forced_encoding)
72
+ soup = BeautifulSoup(text, "lxml")
73
+ return soup
74
+
75
+
85
76
  def calc_stage(level: float, stage_levels: list[float]) -> int:
86
77
  """Calc stage from level and stage levels."""
87
78
  if (level is None) or all(sl is None for sl in stage_levels):
@@ -107,6 +107,7 @@ def update_BB(static_data: StaticData) -> DynamicData: # pylint: disable=invali
107
107
  lines = page.split("\n")
108
108
  # Parse data
109
109
  start_found = False
110
+ stage_valid = False
110
111
  prev_line = None
111
112
  for line in lines:
112
113
  line = line.strip()
@@ -21,7 +21,7 @@ def init_BE(ident: str) -> StaticData: # pylint: disable=invalid-name
21
21
  # Get data
22
22
  page = fetch_soup(
23
23
  "https://wasserportal.berlin.de/start.php?anzeige=tabelle_ow&messanzeige=ms_ow_berlin",
24
- remove_xml=True,
24
+ forced_encoding="ISO-8859-15",
25
25
  )
26
26
  # Parse data
27
27
  table = page.find("table", id="pegeltab")
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes