Skip to content

Commit 4609b17

Browse files
authored
Merge pull request #38 from docentYT/development
v3.1.1
2 parents dde31e9 + 0efefb9 commit 4609b17

File tree

6 files changed

+39
-25
lines changed

6 files changed

+39
-25
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [3.1.1] - 2025-10-24
9+
10+
### Changed
11+
- Better url parameters join in `changeset.get_query()`
12+
- Better url parameters join in `elements.get_query()`
13+
- Better url parameters join in `user.get_query()`
14+
15+
### Fixed
16+
- `time_one` and `time_two` params for `changeset.get_query()` should not be joined with `&` [#37](https://github.com/docentYT/osm_easy_api/issues/37)
17+
818
## [3.1.0] - 2025-10-08
919

1020
### Added

src/osm_easy_api/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"""Python package for parsing osm diffs and communicating with the OpenStreetMap api."""
2-
VERSION = "3.1.0"
2+
VERSION = "3.1.1"
33

44
from . import data_classes
55
from . import diff

src/osm_easy_api/api/endpoints/changeset.py

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -132,28 +132,29 @@ def get_query(self, left: float | None = None, bottom: float | None = None, righ
132132
Returns:
133133
list[Changeset]: List of Changeset objects.
134134
"""
135-
param = "?"
136-
if left or bottom or right or top: param += f"bbox={left},{bottom},{right},{top}&"
137-
if user_id: param += f"user={user_id}&"
138-
if display_name: param += f"display_name={display_name}&"
139-
if time_one: param += f"time={time_one}&"
140-
if time_two: param += f",{time_two}&"
141-
if open: param += f"open={open}&"
142-
if closed: param += f"closed={closed}&"
135+
params = []
136+
if left or bottom or right or top: params.append(f"bbox={left},{bottom},{right},{top}")
137+
if user_id: params.append(f"user={user_id}")
138+
if display_name: params.append(f"display_name={display_name}")
139+
if time_one:
140+
time_param = f"time={time_one}"
141+
if time_two:
142+
time_param += f",{time_two}"
143+
params.append(time_param)
144+
145+
if open: params.append(f"open={open}")
146+
if closed: params.append(f"closed={closed}")
143147
if changesets_id:
144-
param += f"changesets={changesets_id[0]}"
145-
changesets_id.pop(0)
146-
for id in changesets_id:
147-
param += f",{id}"
148-
param += "&"
149-
param+=f"order={order}"
150-
param+=f"&limit={limit}"
148+
changesets = ",".join(map(str, changesets_id))
149+
params.append(f"changesets={changesets}")
150+
151+
params.append(f"order={order}")
152+
params.append(f"limit={limit}")
151153

152154
generator = self.outer._request_generator(
153155
method=self.outer._RequestMethods.GET,
154-
url=join_url(self.outer._url.changeset["get_query"], param),
156+
url=join_url(self.outer._url.changeset["get_query"], "?" + "&".join(params)),
155157
custom_status_code_exceptions={400: ValueError("Invalid arguments: {TEXT}")})
156-
157158
return self._xml_to_changesets_list(generator)
158159

159160
def update(self, id: int, comment: str | None = None, tags: Tags | None = None) -> Changeset:

src/osm_easy_api/api/endpoints/elements.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,7 @@ def get_query(self, element_type: Type[Node_Way_Relation], ids: list[int]) -> li
173173
list[Node_Way_Relation]: List of elements you are looking for.
174174
"""
175175
element_name = element_type.__name__.lower() + 's'
176-
param = f"?{element_name}="
177-
for id in ids: param += f"{id},"
178-
param = param[:-1]
176+
param = f"?{element_name}=" + ",".join(map(str, ids))
179177
url = self.outer._url.elements["multi_fetch"].format(element_type=element_name) + param
180178
generator = self.outer._request_generator(
181179
method=self.outer._RequestMethods.GET,

src/osm_easy_api/api/endpoints/user.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,7 @@ def get_query(self, ids: list[int]) -> list[User]:
7878
Returns:
7979
list[User]: List of User objects.
8080
"""
81-
param = ""
82-
for id in ids:
83-
param += f"{id},"
84-
param = param[:-1]
81+
param = ",".join(map(str, ids))
8582
generator = self.outer._request_generator(
8683
method=self.outer._RequestMethods.GET,
8784
url=self.outer._url.user["get_query"] + param)

tests/api/test_api_changeset.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,14 @@ def test_get_query(self):
9595
changeset_list = self.API.changeset.get_query(user_id=18179, limit=1)
9696
self.assertEqual(changeset_list.__len__(), 1)
9797

98+
responses.add(**{
99+
"method": responses.GET,
100+
"url": "https://test.pl/api/0.6/changesets/?display_name=Map_Rivers&time=1970-11-29%2016:30:00,2025-10-16%2014:24:23&order=newest&limit=100",
101+
"body": body,
102+
"status": 200
103+
})
104+
changeset_list = self.API.changeset.get_query(display_name="Map_Rivers", order="newest", time_one="1970-11-29 16:30:00", time_two="2025-10-16 14:24:23")
105+
98106
@responses.activate
99107
def test_update(self):
100108
responses.add(**{

0 commit comments

Comments
 (0)