Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add feature (#704) Check if args/kwargs are JSON Serializable while running locally #1154

Merged
merged 13 commits into from
Sep 15, 2022

Conversation

monkut
Copy link
Collaborator

@monkut monkut commented Jul 27, 2022

Description

When running an async @task locally, the args and kwargs are passed as they are (even if they're not JSON Serializable).
This PR runs a validate_json_seralizable() check on args/kwargs passed to the function when running locally, calling json.dumps() on the arguments to allow related exceptions to propagate.

This allow developers to identify asynchronous task related JSON serialization errors prior to deployment.

GitHub Issues

#704

- JSON unserializable content passed to asyncronous task during local develop will raise exception on purpose to allow developers to catch JSON unserializable errors during development.

:white_check_mark: add `test_async_call_arg_not_json_seralizable` testcase
:fire: remove unnecessary coding comment in `test_async.py`
@monkut monkut changed the title add feature (#705) Check if args/kwargs are JSON Serializable while running locally add feature (#704) Check if args/kwargs are JSON Serializable while running locally Jul 27, 2022
@coveralls
Copy link

coveralls commented Jul 27, 2022

Coverage Status

Coverage increased (+0.07%) to 73.703% when pulling 86b7868 on feature/issue-704-check-args-json-serializable into bef5c5a on master.

Copy link
Collaborator

@hellno hellno left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

great work! ran into these errors myself on AWS, will make the dev experience a bit better 🥳
only two minor comments :)

zappa/utilities.py Outdated Show resolved Hide resolved
tests/tests_async.py Outdated Show resolved Hide resolved
@monkut monkut requested a review from hellno August 12, 2022 04:55
Copy link
Member

@javulticat javulticat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a few suggestions for very minor things - great work! 🥇

tests/tests_async.py Outdated Show resolved Hide resolved
zappa/utilities.py Outdated Show resolved Hide resolved
tests/tests_async.py Outdated Show resolved Hide resolved
monkut and others added 4 commits September 2, 2022 10:46
Co-authored-by: javulticat <31746850+javulticat@users.noreply.github.com>
…n-serializable' into feature/issue-704-check-args-json-serializable
Copy link
Collaborator

@hellno hellno left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good to me!

@monkut monkut merged commit c048ea2 into master Sep 15, 2022
Ian288 pushed a commit to tackle-io/Zappa that referenced this pull request Jul 11, 2023
…ile running locally (zappa#1154)

* ✨ add feature (zappa#705)
- JSON unserializable content passed to asyncronous task during local develop will raise exception on purpose to allow developers to catch JSON unserializable errors during development.

:white_check_mark: add `test_async_call_arg_not_json_seralizable` testcase
:fire: remove unnecessary coding comment in `test_async.py`

* :art: fix flake8

* :pencil: fix typo
:wrench: add specific `UnserializableJsonError` exception for clarity

* :white_check_mark: expand testcase to include custome exception, `UnserializableJsonError`.

* :art: run isort/black

* :fire: remove unnecessary assert

Co-authored-by: javulticat <31746850+javulticat@users.noreply.github.com>

* :recycle: simplify `validate_json_serializable()` to accept *args, **kwargs as per review comment

* :fire: remove unnecessary import and use `object()` as unserializable_object sample.

Co-authored-by: javulticat <31746850+javulticat@users.noreply.github.com>
BarNehemia added a commit to Lightricks/Zappa that referenced this pull request Aug 10, 2023
…zappa-0.57.0

* commit '0b1eab14ca39c3a3bfb4e915347e07495171dcba': (27 commits)
  updating workflow actions to remove deprecation warnings (zappa#1243)
  📝 CHANGELOG.md update for 0.57.0 (zappa#1246)
  fixing compatibility with Django 4.2 (zappa#1237)
  Update Readme with patreon and donors (zappa#1234)
  adding support for Python 3.10 (zappa#1231)
  Nose to pytest (zappa#1239)
  lint: updating code style with `make black` (zappa#1238)
  Alternative way to check if running in Docker (zappa#1204)
  📝 CHANGELOG.md update for 0.56.0 release (zappa#1187)
  Improve `get_best_match_zone()` to match by most matched components instead of by length of domain (zappa#1193)
  Bypass python version runtime check when code run in docker (zappa#1180)
  Be able to pass in a batch window when using batch size (zappa#1118)
  Correction to README. (zappa#1177)
  (zappa#908) Update BINARY_SUPPORT to use Content-Encoding to identify if data is binary (zappa#1155)
  Remove special check for Django<1.7, fix for zappa#1158  (zappa#1159)
  Resolve (zappa#410) Logs are missing query strings (zappa#1165)
  Handle spaces in x-forwared-for/remove six (zappa#1127) (zappa#1163)
  add feature (zappa#704) Check if args/kwargs are JSON Serializable while running locally (zappa#1154)
  docs: Add documentation for s3 event object key_filters (zappa#1169)
  Add feature pyenv virtualenv detecting .python-version file (zappa#1153)
  ...

# Conflicts:
#	zappa/cli.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants