marqetive-lib 0.2.3__tar.gz → 0.2.5__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.
Files changed (38) hide show
  1. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/PKG-INFO +1 -1
  2. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/pyproject.toml +1 -1
  3. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/twitter/client.py +8 -3
  4. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/twitter/media.py +22 -0
  5. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/README.md +0 -0
  6. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/__init__.py +0 -0
  7. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/core/__init__.py +0 -0
  8. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/core/base.py +0 -0
  9. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/core/client.py +0 -0
  10. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/core/exceptions.py +0 -0
  11. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/core/models.py +0 -0
  12. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/factory.py +0 -0
  13. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/__init__.py +0 -0
  14. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/instagram/__init__.py +0 -0
  15. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/instagram/client.py +0 -0
  16. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/instagram/exceptions.py +0 -0
  17. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/instagram/media.py +0 -0
  18. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/instagram/models.py +0 -0
  19. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/linkedin/__init__.py +0 -0
  20. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/linkedin/client.py +0 -0
  21. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/linkedin/exceptions.py +0 -0
  22. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/linkedin/media.py +0 -0
  23. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/linkedin/models.py +0 -0
  24. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/tiktok/__init__.py +0 -0
  25. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/tiktok/client.py +0 -0
  26. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/tiktok/exceptions.py +0 -0
  27. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/tiktok/media.py +0 -0
  28. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/tiktok/models.py +0 -0
  29. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/twitter/__init__.py +0 -0
  30. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/twitter/exceptions.py +0 -0
  31. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/platforms/twitter/models.py +0 -0
  32. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/py.typed +0 -0
  33. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/utils/__init__.py +0 -0
  34. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/utils/file_handlers.py +0 -0
  35. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/utils/helpers.py +0 -0
  36. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/utils/media.py +0 -0
  37. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/utils/oauth.py +0 -0
  38. {marqetive_lib-0.2.3 → marqetive_lib-0.2.5}/src/marqetive/utils/retry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: marqetive-lib
3
- Version: 0.2.3
3
+ Version: 0.2.5
4
4
  Summary: Modern Python utilities for web APIs
5
5
  Keywords: api,utilities,web,http,marqetive
6
6
  Requires-Python: >=3.12
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [project]
6
6
  name = "marqetive-lib"
7
- version = "0.2.3"
7
+ version = "0.2.5"
8
8
  description = "Modern Python utilities for web APIs"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -621,6 +621,9 @@ class TwitterClient(SocialMediaPlatform):
621
621
  url=HttpUrl(media_url),
622
622
  )
623
623
 
624
+ except PlatformAuthError:
625
+ # Re-raise auth errors (including TwitterUnauthorizedError) directly
626
+ raise
624
627
  except Exception as e:
625
628
  raise MediaUploadError(
626
629
  f"Failed to upload media: {e}",
@@ -914,9 +917,11 @@ class TwitterClient(SocialMediaPlatform):
914
917
  return MediaAttachment(
915
918
  media_id=result.media_id,
916
919
  media_type=MediaType.IMAGE, # Simplified type
917
- url=HttpUrl(media_url)
918
- if media_url.startswith("http")
919
- else HttpUrl(f"file://{media_url}"),
920
+ url=(
921
+ HttpUrl(media_url)
922
+ if media_url.startswith("http")
923
+ else HttpUrl(f"file://{media_url}")
924
+ ),
920
925
  )
921
926
 
922
927
  except Exception as e:
@@ -25,6 +25,7 @@ from marqetive.core.exceptions import (
25
25
  MediaUploadError,
26
26
  )
27
27
  from marqetive.core.models import ProgressEvent, ProgressStatus
28
+ from marqetive.platforms.twitter.exceptions import TwitterUnauthorizedError
28
29
  from marqetive.utils.file_handlers import download_file
29
30
  from marqetive.utils.media import (
30
31
  detect_mime_type,
@@ -399,6 +400,17 @@ class TwitterMediaManager:
399
400
 
400
401
  try:
401
402
  return await _do_upload()
403
+ except httpx.HTTPStatusError as e:
404
+ if e.response.status_code == 401:
405
+ raise TwitterUnauthorizedError(
406
+ "Unauthorized: Invalid or expired access token",
407
+ error_code=89,
408
+ ) from e
409
+ raise MediaUploadError(
410
+ f"Simple upload failed: {e}",
411
+ platform="twitter",
412
+ media_type=detect_mime_type(file_path),
413
+ ) from e
402
414
  except httpx.HTTPError as e:
403
415
  raise MediaUploadError(
404
416
  f"Simple upload failed: {e}",
@@ -701,6 +713,16 @@ class TwitterMediaManager:
701
713
  response.raise_for_status()
702
714
  logger.info(f"Added alt text to media: {media_id}")
703
715
 
716
+ except httpx.HTTPStatusError as e:
717
+ if e.response.status_code == 401:
718
+ raise TwitterUnauthorizedError(
719
+ "Unauthorized: Invalid or expired access token",
720
+ error_code=89,
721
+ ) from e
722
+ raise MediaUploadError(
723
+ f"Failed to add alt text: {e}",
724
+ platform="twitter",
725
+ ) from e
704
726
  except httpx.HTTPError as e:
705
727
  raise MediaUploadError(
706
728
  f"Failed to add alt text: {e}",
File without changes