Skip to main content

JPEG-LS for Python via CharLS C++ Library

Project description

pyjpegls

Note
This is a fork of the original CharPyLS repository created to be able to add fixes and adaptions, as that repo is not maintained anymore. The rest of this file is unchanged from the original readme.

JPEG-LS for Python via CharLS C++ Library

I wrote this interface to enable easy access to the awesome JPEG-LS lossless image compression algorithm from within my Python application. I had no need to read/write anyone else's JPEG-LS image files, but rather I needed to compress some data structures internal to my application. This data was similar in nature to greyscale imagery such that it was an easy choice to leverage the existing CharLS C++ library I found on codeplex.com. I did eventually incorporate some basic file I/O functionality for my unit tests, and that's why I list Pillow below as a dependency.

I have tested this code on Windows 7 x64, Windows 8 x64, and Ubuntu x64. Note, even though this package has the odd name "CharPyLS", you will import it into your module as "jpeg_ls". Here is a quick example of using this tool to compress an image to a buffer in memory. For more details, check out the examples included within the source code.

    # Read in an image from an existing PNG file.
    fname_img = 'test/image.png'
    data_image = data_io.read_PIL(fname_img)

    # Compress image data to a sequence of bytes.
    data_buffer = jpeg_ls.encode(data_image)

    # Sizes.
    size_png = os.path.getsize(fname_img)
    print('Size of RGB 8-bit image data:  {:n}'.format(len(data_image.tostring())))
    print('Size of PNG encoded data file: {:n}'.format(size_png))
    print('Size of JPEG-LS encoded data:  {:n}'.format(len(data_buffer)))

    # Decompress.
    data_image_b = jpeg_ls.decode(data_buffer)

    # Compare.
    is_same = (data_image == data_image_b).all()
    print('Restored data is identical to original: {:s}'.format(str(is_same)))

The output generated by the above example should look like the following:

Size of RGB 8-bit image data:  5038848
Size of PNG encoded data file: 2409950
Size of JPEG-LS encoded data:  2088357
Restored data is identical to original: True

About JPEG-LS

  • From Wikipedia article: JPEG-LS (ISO-14495-1/ITU-T.87) is an accepted lossless image compression standard derived from the Hewlett Packard LOCO algorithm.
  • From CharLS codeplex site: CharLS is an optimized implementation of the JPEG-LS standard for lossless and near-lossless image compression. JPEG-LS is a low-complexity standard that matches JPEG 2000 compression ratios. In terms of speed, CharLS outperforms open source and commercial JPEG LS implementations.

Dependencies

  • Numpy
  • Cython (only for building and installing, not for everyday use)
  • Pillow (friendly fork of PIL, used here for file I/O with the example and during unit tests)
  • CharLS (source included as subfolder)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyjpegls-1.0.4.tar.gz (14.4 kB view details)

Uploaded Source

Built Distributions

pyjpegls-1.0.4-cp311-cp311-win_amd64.whl (96.1 kB view details)

Uploaded CPython 3.11 Windows x86-64

pyjpegls-1.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (925.7 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pyjpegls-1.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (949.5 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

pyjpegls-1.0.4-cp311-cp311-macosx_11_0_arm64.whl (122.0 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

pyjpegls-1.0.4-cp311-cp311-macosx_10_9_x86_64.whl (123.7 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

pyjpegls-1.0.4-cp310-cp310-win_amd64.whl (95.9 kB view details)

Uploaded CPython 3.10 Windows x86-64

pyjpegls-1.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (916.8 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pyjpegls-1.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (940.3 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

pyjpegls-1.0.4-cp310-cp310-macosx_11_0_arm64.whl (122.9 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

pyjpegls-1.0.4-cp310-cp310-macosx_10_9_x86_64.whl (124.3 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

pyjpegls-1.0.4-cp39-cp39-win_amd64.whl (96.9 kB view details)

Uploaded CPython 3.9 Windows x86-64

pyjpegls-1.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (926.1 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pyjpegls-1.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (951.5 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

pyjpegls-1.0.4-cp39-cp39-macosx_11_0_arm64.whl (122.6 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

pyjpegls-1.0.4-cp39-cp39-macosx_10_9_x86_64.whl (124.9 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

pyjpegls-1.0.4-cp38-cp38-win_amd64.whl (97.0 kB view details)

Uploaded CPython 3.8 Windows x86-64

pyjpegls-1.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (930.4 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pyjpegls-1.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (956.1 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

pyjpegls-1.0.4-cp38-cp38-macosx_11_0_arm64.whl (122.2 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

pyjpegls-1.0.4-cp38-cp38-macosx_10_9_x86_64.whl (124.0 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

pyjpegls-1.0.4-cp37-cp37m-win_amd64.whl (96.4 kB view details)

Uploaded CPython 3.7m Windows x86-64

pyjpegls-1.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (916.7 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

pyjpegls-1.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (940.4 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

pyjpegls-1.0.4-cp37-cp37m-macosx_10_9_x86_64.whl (123.1 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

Details for the file pyjpegls-1.0.4.tar.gz.

File metadata

  • Download URL: pyjpegls-1.0.4.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for pyjpegls-1.0.4.tar.gz
Algorithm Hash digest
SHA256 19de9b8537ab19fe1c06effd73000c7d477e02b2d21365e9d1f4a0da60baa5d3
MD5 c2f16f4fd12f812da54f493724c94bbf
BLAKE2b-256 56ce844ee89867384aef338d7701ee46e2041c817e46c2b1b8bc8aa9d1bf7207

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyjpegls-1.0.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 96.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for pyjpegls-1.0.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 075dd7bb532ca0ead3d361dc5c3c8f85236de3c95c42dd645909b6ac44641d39
MD5 dca0c1f5f5d1bd7d1cc1c3ece323c393
BLAKE2b-256 d8a060c665acaaa05d1e4abbbba3a03dddb0d691074a5499afd616c0f9a335d4

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d30c96cf2b876b93b1b696ed820621dc7092160adc53a34e7c43d4f6291ce992
MD5 a4b21524344584d1ef9737698b582c2b
BLAKE2b-256 406de6eb18759694e7ed8df9682d83ace2129cc93f82ff2a5900561c9f9d6af0

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5961ea18ff2a65ca96bbb1ec1b9e04fdd8166676cbe16932a031ea16f52f0506
MD5 0f33363383146de4060e19dda6e7b35c
BLAKE2b-256 b48d5c4bd0c71293778d9b1d20adfdf0ef8409c2f182efb76a30cd3f19b058b2

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 72e47b41a1b1fef82ea05cc91cb7b97dedad844c3a323432b57e434b41ca7706
MD5 ee9142f0498c486769d09bd363ab172a
BLAKE2b-256 77ffabe37a363e795cc01ba320111b1bed593621e6dacfb9bc7bf49f74c0d80f

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c4fb3040782130707b7c7afc9ebec0fce4e7907dba27fbcf41407f7c948f430e
MD5 51b1c92599f2a1f8779d0d2ac8f3a2ee
BLAKE2b-256 00b3bbee78d04b82ed7995fe396c2c94013cb9436f584a5bd194982b51ef59c6

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyjpegls-1.0.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 95.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for pyjpegls-1.0.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4deaa4c609f39d160826de3269b023a9ee024682cc8d010c8e0bbb9b5d223015
MD5 18da644e9075bbb21b35ed0f92a9c018
BLAKE2b-256 dd88f88f994849e6ba2fb1b5f1fb4d41273ac295a5ba421378c1f46a7b989433

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cfbc5ca97ff97a3176d28f53c885251050a9b56ca88584a8d476b70051c3d3c7
MD5 17e0ef652682ad7c0f0810234e949a79
BLAKE2b-256 13aea7f2e5db00ed93ab8fde10d701ceba662752acca139382453c977d399a0d

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3f276a8604e15a5af9fb93596679ac248c2eb7c6bb451949d4b0d8fba010233a
MD5 0a74de2a0652030d52f6bb1b669350f2
BLAKE2b-256 f1516f4e0e26ae0202a1a2690c04a909a4bec32ec21a1f223ecc273bd83d2b56

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e12e28805994f4243f9ed88f51afb3f8e12992a9eeaebcb73e060ba04259e853
MD5 6ca18ab434e05aea8c13b31c652edf9a
BLAKE2b-256 b353fcfaf44b290ca5ab99dcd37adf8de409f5e25c4c7733a0d43cc24bb982f1

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c5abca4c8f4aac4dd4f6b2650e56878e0dda90d366b3153f79e079f0debd6473
MD5 103b828a0f079e4ff5a977b69c18cb42
BLAKE2b-256 55d44c8bb206486192d6d9b64b7331ec16d1f0af510e62d3ec4dc05621bfb725

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pyjpegls-1.0.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 96.9 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for pyjpegls-1.0.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 c82c1d38036f78f1a04a9dc003d6970de5d88b16911f26275a07c3504d877f9b
MD5 8f2c27c709888fcfd66c923df1851e53
BLAKE2b-256 725e3230ac89187c58b9b64df1042f105858a256397a73470d8f75042812ad87

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 14c12822a8c6d82f21b493e01e9032b53632315a1692f4535ee99ae587c3c4b6
MD5 0432865dec444fc8797de6396b609bac
BLAKE2b-256 48b15b8d70c56ad53be84b5061ea385249100521839346458632f14661cea02b

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bb66f7ceb2bf340b3a457cda2e1a4ccfd6909407f451220ed98f55a0dffbe998
MD5 c9d0f307542d237dfe2449c389568626
BLAKE2b-256 24438f338fff11ae2da3a3f8c2a6246ec23630811cd696dadd3f9f15f4de8158

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 07b9172452cb34f52fcc3931ca30b07aa8f83c2f5eff5a4dff4be37c37e6bc6d
MD5 fc19d4db0f7a299a18ceb9155922eea3
BLAKE2b-256 a3cc0a2b9725fc571b13d6a433edd8521622df9a6055c3387121039f68a0b50b

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 999272c843dac51981414a013dee42bf4b7ab2f0c84322293ef5282a2e5d60d6
MD5 ea7f00bd6b48c581f3a5adf83ba97933
BLAKE2b-256 fd4e5c3745d1c42a66746083a26bdd990877d04673513bcde9dff97b59e61a1d

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pyjpegls-1.0.4-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 97.0 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for pyjpegls-1.0.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 24b76bbca5542dd020be35589417111e2bd43a753447112bedc47dcaf07ae233
MD5 3d4f732db55cc4c556702ee711f082ad
BLAKE2b-256 56be39359dbde8a1be5fce491ca181ef7e0ea878b301c22a292184b270d55d79

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1fcf684167a6a412beb739e302b548a6720dc313af942b8001d69a68ab741c2d
MD5 5222788a424e80d4c445677c544a14b5
BLAKE2b-256 50a087bbad9941044ab6384e94dcbf97c9fd05bdd80b06bdbb7557fb7b9ae509

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 21e850b46d1efb006d1f70ef95d8fca10adc03d98e639d233b8432f647cffb58
MD5 b206d66d93e966e5e19a87387db28020
BLAKE2b-256 32cf6b71dc5d3a25f705d57c0a47e5b38870541d09c4e0cc1549bae4bc131cf1

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d16d40ed4a03cce5ca53bc46a93fe0aa20f2f06d3a680655dc4fb2fe0a14af78
MD5 ab9c40071f7204c81d54a2e4e9eb7d43
BLAKE2b-256 db365b3839f814c1f18bacd6a679ce6f5e5eca43009a0aafc4d3d68b399063a4

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4ab9b498b4534caeb2519dc33b7ad958d9cd1efdd36aa86945001d61e2e826ae
MD5 57878f6010f4f44530efceccb7d69582
BLAKE2b-256 2116ba9f418f05706a60a6f3fb62fdc200cf46fc327eafb0559127931cd61d8f

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: pyjpegls-1.0.4-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 96.4 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for pyjpegls-1.0.4-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 ea741d8d9452b0b2602a61efed6b5ae6dc170f9948b82d25feedf81da8d7d2bc
MD5 f349a66574fffb186198cfc8bdc4a7e4
BLAKE2b-256 995158bbe8cfb4464e6304771be09b9adc120cd9aeaf28d9ec664f9da4d23fd1

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d4e3a9e205db9c0731e51d7df87cd598c24ce57ebfd4903305f6127b361029ed
MD5 d1e9ef7353e79939ed479b6cf936ba12
BLAKE2b-256 c9ca3b0b400f337122ea3edd854fc8ca0b01c2d687945e9a1e93687d0cc47bcc

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 94b86e2c2d65f59e76e67148584188ac78ea5ab713150a92126e2f172e1ab2ea
MD5 c1624af794aa7c87b44503be910d885f
BLAKE2b-256 6bb9bd300c2433ece5f2d528af2f514a6c4645a099e05438027e99f952689e19

See more details on using hashes here.

File details

Details for the file pyjpegls-1.0.4-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pyjpegls-1.0.4-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 13534ea3fcfa44885fdf0400f21f1ee524bbfc8c2fa0e789235f982b5ecc0339
MD5 84c838ab5a782e6acf345157e606682f
BLAKE2b-256 d9299b6ae405b91da0d9db7c8ea8993cd13d9fb4e5ea427dc70239c359913ae2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page