Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: nhairs/python-json-logger
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v3.0.1
Choose a base ref
...
head repository: nhairs/python-json-logger
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v3.1.0
Choose a head ref
  • 8 commits
  • 27 files changed
  • 1 contributor

Commits on Apr 1, 2024

  1. Fix CHANGELOG PR reference

    nhairs committed Apr 1, 2024
    Configuration menu
    Copy the full SHA
    2767589 View commit details
    Browse the repository at this point in the history

Commits on May 5, 2024

  1. Split core functionality and support orjson and msgspec (#9)

    ## Summary of changes
    
    ### Refactor common functionality into base module
    This allows support multiple JSON encoders by having common
    functionality in `pythonjsonlogger.core` and then specialist formatters
    for each encoder.
    
    This is useful / needed, as not all JSON encoders support the
    `json.dumps` or `json.JSONEncoder` interfaces exactly. This enables us
    to support other JSON encoders like orjson and msgspec. In the future we
    may add support for other encoders.
    
    ### Better handling for custom styles
    Achieved by mimicking `logging.Formatter.__init__` without actually
    calling it.
    
    A code snippet is worth `2**10` words:
    
    ```python
    from pythonjsonlogger.core import BaseJsonLogger
    
    class CommaSupport(BaseJsonFormatter):
        def parse(self) -> list[str]:
            if isinstance(self._style, str) and self._style == ",":
                return self._fmt.split(",")
            return super().parse()
    
    f = CommaSupport("message,asctime", style=",", validate=False)
    ```
    
    ### Rename `jsonlogger` module to `json` module
    
    Compatibility is maintained for the moment using `__getattr__` in
    `__init__`.
    
    This is to enable more consistent naming of implementation specific
    module names. It also stops throwing around the word "logger" when this
    module only contains formatters.
    
    ### Add support for orjson
    [orjson](https://github.com/ijl/orjson) is a high performance (and more
    JSON spec correct) encoder. Given how many logging calls may occur -
    having a performant formatter available is important.
    
    This includes ensuring it is covered in tests on appropriate platforms.
    
    Note: orjson is not supported on pypy, and currently does not build for
    py313.
    
    ### Add support for msgspec
    [msgspec](https://jcristharif.com/msgspec/index.html) is another library
    containing a high performance JSON encoder.
    
    Note: msgspec is not supported on pypy, and currently does not build for
    py313.
    
    ### Drops python 3.7 support
    This is primary due do making use of the
    [`validate`](https://docs.python.org/3/library/logging.html#formatter-objects)
    argument. I was also having issues with CI because python 3.7 is not support on most "latest"
    nhairs authored May 5, 2024
    1 Configuration menu
    Copy the full SHA
    49f69fb View commit details
    Browse the repository at this point in the history
  2. Add build to dev dependencies

    nhairs committed May 5, 2024
    Configuration menu
    Copy the full SHA
    390b356 View commit details
    Browse the repository at this point in the history
  3. Add tests for common types (#11)

    This PR adds tests for common types to ensure that they are being
    encoded
    nhairs authored May 5, 2024
    Configuration menu
    Copy the full SHA
    59439e9 View commit details
    Browse the repository at this point in the history

Commits on May 14, 2024

  1. Improve non-standard type encoding (#12)

    This PR improves the JSON encoding of non-standard types by introducing
    and using the `.defaults` module. The `.defaults` module adds helper
    functions that can test and apply formatting for types not supported by
    a given encoder.
    
    Please note that in doing so, some outputs of the `JsonFormatter` have
    changed. That said these changes return more "reasonable" results rather
    the the original `str(o)` fallback.
    
    For more detailed list of changes to the encoders see the CHANGELOG.
    
    ## Test Plan
    Have added additional tests and now check for specific output.
    nhairs authored May 14, 2024
    Configuration menu
    Copy the full SHA
    b37c54b View commit details
    Browse the repository at this point in the history

Commits on May 18, 2024

  1. Support missing rename fields and preserve order (#13)

    Fixes #6
    Fixes #7
    
    Changes also prevent double renaming of fields.
    
    ## Test plan
    
    Run tests
    nhairs authored May 18, 2024
    Configuration menu
    Copy the full SHA
    1160ae8 View commit details
    Browse the repository at this point in the history

Commits on May 28, 2024

  1. Move documentation to mkdocs (#14)

    This pull request moves the existing documentation to `mkdocs` for
    generation.
    
    This includes setting links for use with GitHub Pages.
    
    ## Test Plan
    
    View the docs locally using `mkdocs serve`.
    nhairs authored May 28, 2024
    1 Configuration menu
    Copy the full SHA
    42107cd View commit details
    Browse the repository at this point in the history
  2. Release 3.1.0

    nhairs committed May 28, 2024
    Configuration menu
    Copy the full SHA
    e2b40e4 View commit details
    Browse the repository at this point in the history
Loading