Skip to content

Commit c86efa9

Browse files
authored
Merge pull request #257 from reportportal/develop
Release
2 parents 161612d + 1cbcfa1 commit c86efa9

File tree

12 files changed

+135
-85
lines changed

12 files changed

+135
-85
lines changed

CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
# Changelog
22

33
## [Unreleased]
4+
### Added
5+
- All Requests now have their names, by @HardNorth
6+
### Removed
7+
- `NOT_FOUND` constant, as it only causes infinite issues, by @HardNorth
8+
9+
## [5.6.2]
410
### Fixed
511
- Issue [#246](https://github.com/reportportal/client-Python/issues/246): Invalid return type, by @HardNorth
612
### Changed
7-
- `helpers.common_helpers.gen_attributes` function now accepts refactored, by @HardNorth
13+
- `helpers.common_helpers.gen_attributes` function was refactored, by @HardNorth
814

915
## [5.6.1]
1016
### Added

reportportal_client/_internal/aio/tasks.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from asyncio import Future
2020
from typing import Any, Awaitable, Coroutine, Generator, Generic, List, Optional, TypeVar, Union
2121

22-
from reportportal_client._internal.static.defines import NOT_FOUND
2322
from reportportal_client.aio.tasks import BlockingOperationError, Task
2423

2524
_T = TypeVar("_T")
@@ -58,7 +57,7 @@ def blocking_result(self) -> _T:
5857
result = self.result()
5958
else:
6059
result = self.__loop.run_until_complete(self)
61-
return result if result is not NOT_FOUND else None
60+
return result
6261

6362

6463
class ThreadedTask(Generic[_T], Task[_T]):
@@ -91,8 +90,7 @@ def blocking_result(self) -> _T:
9190
:return: execution result or raise an error, or return immediately if already executed
9291
"""
9392
if self.done():
94-
result = self.result()
95-
return result if result is not NOT_FOUND else None
93+
return self.result()
9694
if not self.__loop.is_running() or self.__loop.is_closed():
9795
raise BlockingOperationError("Running loop is not alive")
9896
start_time = time.time()
@@ -101,8 +99,7 @@ def blocking_result(self) -> _T:
10199
time.sleep(sleep_time)
102100
if not self.done():
103101
raise BlockingOperationError("Timed out waiting for the task execution")
104-
result = self.result()
105-
return result if result is not NOT_FOUND else None
102+
return self.result()
106103

107104

108105
class BatchedTaskFactory:

reportportal_client/_internal/static/defines.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,5 +80,4 @@ class Priority(enum.IntEnum):
8080
ATTRIBUTE_LENGTH_LIMIT = ATTRIBUTE_LIMIT
8181
DEFAULT_PRIORITY = Priority.PRIORITY_MEDIUM
8282
LOW_PRIORITY = Priority.PRIORITY_LOW
83-
NOT_FOUND = _PresenceSentinel()
8483
NOT_SET = _PresenceSentinel()

reportportal_client/aio/client.py

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
from reportportal_client._internal.static.abstract import AbstractBaseClass, abstractmethod
5252

5353
# noinspection PyProtectedMember
54-
from reportportal_client._internal.static.defines import NOT_FOUND, NOT_SET
54+
from reportportal_client._internal.static.defines import NOT_SET
5555
from reportportal_client.aio.tasks import Task
5656
from reportportal_client.client import RP, OutputType
5757
from reportportal_client.core.rp_issues import Issue
@@ -225,14 +225,14 @@ async def close(self) -> None:
225225

226226
async def __get_item_url(self, item_id_future: Union[Optional[str], Task[Optional[str]]]) -> Optional[str]:
227227
item_id = await await_if_necessary(item_id_future)
228-
if item_id is NOT_FOUND or item_id is None:
228+
if not item_id:
229229
logger.warning("Attempt to make request for non-existent id.")
230230
return None
231231
return root_uri_join(self.base_url_v2, "item", item_id)
232232

233233
async def __get_launch_url(self, launch_uuid_future: Union[Optional[str], Task[Optional[str]]]) -> Optional[str]:
234234
launch_uuid = await await_if_necessary(launch_uuid_future)
235-
if launch_uuid is NOT_FOUND or launch_uuid is None:
235+
if not launch_uuid:
236236
logger.warning("Attempt to make request for non-existent launch.")
237237
return None
238238
return root_uri_join(self.base_url_v2, "launch", launch_uuid, "finish")
@@ -270,7 +270,9 @@ async def start_launch(
270270
rerun_of=rerun_of,
271271
).payload
272272

273-
response = await AsyncHttpRequest((await self.session()).post, url=url, json=request_payload).make()
273+
response = await AsyncHttpRequest(
274+
(await self.session()).post, url=url, json=request_payload, name="start_launch"
275+
).make()
274276
if not response:
275277
return None
276278

@@ -345,11 +347,13 @@ async def start_test_item(
345347
uuid=uuid,
346348
).payload
347349

348-
response = await AsyncHttpRequest((await self.session()).post, url=url, json=request_payload).make()
350+
response = await AsyncHttpRequest(
351+
(await self.session()).post, url=url, json=request_payload, name="start_test_item"
352+
).make()
349353
if not response:
350354
return None
351355
item_id = await response.id
352-
if item_id is NOT_FOUND or item_id is None:
356+
if not item_id:
353357
logger.warning("start_test_item - invalid response: %s", str(await response.json))
354358
else:
355359
logger.debug("start_test_item - ID: %s", item_id)
@@ -400,7 +404,9 @@ async def finish_test_item(
400404
retry=retry,
401405
retry_of=retry_of,
402406
).payload
403-
response = await AsyncHttpRequest((await self.session()).put, url=url, json=request_payload).make()
407+
response = await AsyncHttpRequest(
408+
(await self.session()).put, url=url, json=request_payload, name="finish_test_item"
409+
).make()
404410
if not response:
405411
return None
406412
message = await response.message
@@ -434,7 +440,7 @@ async def finish_launch(
434440
description=kwargs.get("description"),
435441
).payload
436442
response = await AsyncHttpRequest(
437-
(await self.session()).put, url=url, json=request_payload, name="Finish Launch"
443+
(await self.session()).put, url=url, json=request_payload, name="finish_launch"
438444
).make()
439445
if not response:
440446
return None
@@ -463,15 +469,17 @@ async def update_test_item(
463469
}
464470
item_id = await self.get_item_id_by_uuid(item_uuid)
465471
url = root_uri_join(self.base_url_v1, "item", item_id, "update")
466-
response = await AsyncHttpRequest((await self.session()).put, url=url, json=data).make()
472+
response = await AsyncHttpRequest(
473+
(await self.session()).put, url=url, json=data, name="update_test_item"
474+
).make()
467475
if not response:
468476
return None
469477
logger.debug("update_test_item - Item: %s", item_id)
470478
return await response.message
471479

472480
async def __get_launch_uuid_url(self, launch_uuid_future: Union[str, Task[str]]) -> Optional[str]:
473481
launch_uuid = await await_if_necessary(launch_uuid_future)
474-
if launch_uuid is NOT_FOUND or launch_uuid is None:
482+
if not launch_uuid:
475483
logger.warning("Attempt to make request for non-existent Launch UUID.")
476484
return None
477485
logger.debug("get_launch_info - ID: %s", launch_uuid)
@@ -484,7 +492,7 @@ async def get_launch_info(self, launch_uuid_future: Union[str, Task[str]]) -> Op
484492
:return: Launch information in dictionary.
485493
"""
486494
url = self.__get_launch_uuid_url(launch_uuid_future)
487-
response = await AsyncHttpRequest((await self.session()).get, url=url).make()
495+
response = await AsyncHttpRequest((await self.session()).get, url=url, name="get_launch_info").make()
488496
if not response:
489497
return None
490498
launch_info = None
@@ -497,7 +505,7 @@ async def get_launch_info(self, launch_uuid_future: Union[str, Task[str]]) -> Op
497505

498506
async def __get_item_uuid_url(self, item_uuid_future: Union[Optional[str], Task[Optional[str]]]) -> Optional[str]:
499507
item_uuid = await await_if_necessary(item_uuid_future)
500-
if item_uuid is NOT_FOUND or item_uuid is None:
508+
if not item_uuid:
501509
logger.warning("Attempt to make request for non-existent UUID.")
502510
return None
503511
return root_uri_join(self.base_url_v1, "item", "uuid", item_uuid)
@@ -509,7 +517,7 @@ async def get_item_id_by_uuid(self, item_uuid_future: Union[str, Task[str]]) ->
509517
:return: Test Item ID.
510518
"""
511519
url = self.__get_item_uuid_url(item_uuid_future)
512-
response = await AsyncHttpRequest((await self.session()).get, url=url).make()
520+
response = await AsyncHttpRequest((await self.session()).get, url=url, name="get_item_id").make()
513521
return await response.id if response else None
514522

515523
async def get_launch_ui_id(self, launch_uuid_future: Union[str, Task[str]]) -> Optional[int]:
@@ -549,7 +557,7 @@ async def get_project_settings(self) -> Optional[dict]:
549557
:return: Settings response in Dictionary.
550558
"""
551559
url = root_uri_join(self.base_url_v1, "settings")
552-
response = await AsyncHttpRequest((await self.session()).get, url=url).make()
560+
response = await AsyncHttpRequest((await self.session()).get, url=url, name="get_project_settings").make()
553561
return await response.json if response else None
554562

555563
async def log_batch(self, log_batch: Optional[List[AsyncRPRequestLog]]) -> Optional[Tuple[str, ...]]:
@@ -561,7 +569,7 @@ async def log_batch(self, log_batch: Optional[List[AsyncRPRequestLog]]) -> Optio
561569
url = root_uri_join(self.base_url_v2, "log")
562570
if log_batch:
563571
response = await AsyncHttpRequest(
564-
(await self.session()).post, url=url, data=AsyncRPLogBatch(log_batch).payload
572+
(await self.session()).post, url=url, data=AsyncRPLogBatch(log_batch).payload, name="log"
565573
).make()
566574
if not response:
567575
return None
@@ -639,8 +647,6 @@ def launch_uuid(self) -> Optional[str]:
639647
640648
:return: UUID string.
641649
"""
642-
if self.__launch_uuid is NOT_FOUND:
643-
return None
644650
return self.__launch_uuid
645651

646652
@property
@@ -809,9 +815,10 @@ async def start_test_item(
809815
uuid=uuid,
810816
**kwargs,
811817
)
812-
if item_id and item_id is not NOT_FOUND:
813-
logger.debug("start_test_item - ID: %s", item_id)
814-
self._add_current_item(item_id)
818+
if not item_id:
819+
return None
820+
logger.debug("start_test_item - ID: %s", item_id)
821+
self._add_current_item(item_id)
815822
return item_id
816823

817824
async def finish_test_item(
@@ -972,9 +979,6 @@ async def log(
972979
:param item_id: UUID of the ReportPortal Item the message belongs to.
973980
:return: Response message Tuple if Log message batch was sent or None.
974981
"""
975-
if item_id is NOT_FOUND:
976-
logger.warning("Attempt to log to non-existent item")
977-
return None
978982
rp_file = RPFile(**attachment) if attachment else None
979983
rp_log = AsyncRPRequestLog(self.__launch_uuid, time, rp_file, item_id, level, message)
980984
return await self.__client.log_batch(await self._log_batcher.append_async(rp_log))

reportportal_client/client.py

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
from reportportal_client._internal.static.abstract import AbstractBaseClass
3939

4040
# noinspection PyProtectedMember
41-
from reportportal_client._internal.static.defines import NOT_FOUND
4241
from reportportal_client.core.rp_issues import Issue
4342
from reportportal_client.core.rp_requests import (
4443
HttpRequest,
@@ -408,8 +407,6 @@ def launch_uuid(self) -> Optional[str]:
408407
409408
:return: UUID string
410409
"""
411-
if self.__launch_uuid is NOT_FOUND:
412-
return None
413410
return self.__launch_uuid
414411

415412
@property
@@ -587,6 +584,7 @@ def start_launch(
587584
json=request_payload,
588585
verify_ssl=self.verify_ssl,
589586
http_timeout=self.http_timeout,
587+
name="start_launch",
590588
).make()
591589
if not response:
592590
return None
@@ -638,9 +636,6 @@ def start_test_item(
638636
:param uuid: Test Item UUID to use on start (overrides server one, should be globally unique).
639637
:return: Test Item UUID if successfully started or None.
640638
"""
641-
if parent_item_id is NOT_FOUND:
642-
logger.warning("Attempt to start item for non-existent parent item.")
643-
return None
644639
if parent_item_id:
645640
url = uri_join(self.base_url_v2, "item", parent_item_id)
646641
else:
@@ -667,15 +662,16 @@ def start_test_item(
667662
json=request_payload,
668663
verify_ssl=self.verify_ssl,
669664
http_timeout=self.http_timeout,
665+
name="start_test_item",
670666
).make()
671667
if not response:
672668
return None
673669
item_id = response.id
674-
if item_id is not NOT_FOUND:
675-
logger.debug("start_test_item - ID: %s", item_id)
676-
self._add_current_item(item_id)
677-
else:
670+
if not item_id:
678671
logger.warning("start_test_item - invalid response: %s", str(response.json))
672+
return None
673+
logger.debug("start_test_item - ID: %s", item_id)
674+
self._add_current_item(item_id)
679675
return item_id
680676

681677
def finish_test_item(
@@ -707,7 +703,7 @@ def finish_test_item(
707703
with the 'retry' parameter.
708704
:return: Response message.
709705
"""
710-
if item_id is NOT_FOUND or not item_id:
706+
if not item_id:
711707
logger.warning("Attempt to finish non-existent item")
712708
return None
713709
url = uri_join(self.base_url_v2, "item", item_id)
@@ -724,7 +720,12 @@ def finish_test_item(
724720
retry_of=retry_of,
725721
).payload
726722
response = HttpRequest(
727-
self.session.put, url=url, json=request_payload, verify_ssl=self.verify_ssl, http_timeout=self.http_timeout
723+
self.session.put,
724+
url=url,
725+
json=request_payload,
726+
verify_ssl=self.verify_ssl,
727+
http_timeout=self.http_timeout,
728+
name="finish_test_item",
728729
).make()
729730
if not response:
730731
return None
@@ -748,7 +749,7 @@ def finish_launch(
748749
:param attributes: Launch attributes
749750
"""
750751
if self.use_own_launch:
751-
if self.__launch_uuid is NOT_FOUND or not self.__launch_uuid:
752+
if not self.__launch_uuid:
752753
logger.warning("Attempt to finish non-existent launch")
753754
return None
754755
url = uri_join(self.base_url_v2, "launch", self.__launch_uuid, "finish")
@@ -763,8 +764,8 @@ def finish_launch(
763764
url=url,
764765
json=request_payload,
765766
verify_ssl=self.verify_ssl,
766-
name="Finish Launch",
767767
http_timeout=self.http_timeout,
768+
name="finish_launch",
768769
).make()
769770
if not response:
770771
return None
@@ -793,7 +794,12 @@ def update_test_item(
793794
item_id = self.get_item_id_by_uuid(item_uuid)
794795
url = uri_join(self.base_url_v1, "item", item_id, "update")
795796
response = HttpRequest(
796-
self.session.put, url=url, json=data, verify_ssl=self.verify_ssl, http_timeout=self.http_timeout
797+
self.session.put,
798+
url=url,
799+
json=data,
800+
verify_ssl=self.verify_ssl,
801+
http_timeout=self.http_timeout,
802+
name="update_test_item",
797803
).make()
798804
if not response:
799805
return None
@@ -809,6 +815,7 @@ def _log(self, batch: Optional[List[RPRequestLog]]) -> Optional[Tuple[str, ...]]
809815
files=RPLogBatch(batch).payload,
810816
verify_ssl=self.verify_ssl,
811817
http_timeout=self.http_timeout,
818+
name="log",
812819
).make()
813820
if response:
814821
return response.messages
@@ -833,9 +840,6 @@ def log(
833840
:param item_id: UUID of the ReportPortal Item the message belongs to.
834841
:return: Response message Tuple if Log message batch was sent or None.
835842
"""
836-
if item_id is NOT_FOUND:
837-
logger.warning("Attempt to log to non-existent item")
838-
return None
839843
rp_file = RPFile(**attachment) if attachment else None
840844
rp_log = RPRequestLog(self.__launch_uuid, time, rp_file, item_id, level, message)
841845
return self._log(self._log_batcher.append(rp_log))
@@ -848,7 +852,7 @@ def get_item_id_by_uuid(self, item_uuid: str) -> Optional[str]:
848852
"""
849853
url = uri_join(self.base_url_v1, "item", "uuid", item_uuid)
850854
response = HttpRequest(
851-
self.session.get, url=url, verify_ssl=self.verify_ssl, http_timeout=self.http_timeout
855+
self.session.get, url=url, verify_ssl=self.verify_ssl, http_timeout=self.http_timeout, name="get_item_id"
852856
).make()
853857
return response.id if response else None
854858

@@ -862,7 +866,11 @@ def get_launch_info(self) -> Optional[dict]:
862866
url = uri_join(self.base_url_v1, "launch", "uuid", self.__launch_uuid)
863867
logger.debug("get_launch_info - ID: %s", self.__launch_uuid)
864868
response = HttpRequest(
865-
self.session.get, url=url, verify_ssl=self.verify_ssl, http_timeout=self.http_timeout
869+
self.session.get,
870+
url=url,
871+
verify_ssl=self.verify_ssl,
872+
http_timeout=self.http_timeout,
873+
name="get_launch_info",
866874
).make()
867875
if not response:
868876
return None
@@ -911,7 +919,11 @@ def get_project_settings(self) -> Optional[dict]:
911919
"""
912920
url = uri_join(self.base_url_v1, "settings")
913921
response = HttpRequest(
914-
self.session.get, url=url, verify_ssl=self.verify_ssl, http_timeout=self.http_timeout
922+
self.session.get,
923+
url=url,
924+
verify_ssl=self.verify_ssl,
925+
http_timeout=self.http_timeout,
926+
name="get_project_settings",
915927
).make()
916928
return response.json if response else None
917929

0 commit comments

Comments
 (0)