Skip to main content

Official Saxonica python package for the SaxonC-HE 12.5.0 processor: for XSLT 3.0, XQuery 3.1, XPath 3.1 and XML Schema processing.

Project description

Welcome to SaxonC-HE

This is the official Saxonica Python wheel package for Saxon, an XML document processor. SaxonC provides APIs to run XSLT 3.0 transformations, XQuery 3.1 queries, XPath 3.1, and XML Schema validation.

The SaxonC release comes in separate wheels for the three product editions:

  • saxonche (SaxonC-HE: open-source Home Edition)
  • saxoncpe (SaxonC-PE: Professional Edition)
  • saxoncee (SaxonC-EE: Enterprise Edition)

SaxonC-PE and SaxonC-EE are commercial products that require a valid license key. Licenses can be purchased from the Saxonica online store. Alternatively a 30-day evaluation license is available free of charge. By downloading the software, you are agreeing to our terms and conditions.

For full documentation for the latest SaxonC release, see the SaxonC 12 documentation.

Why choose SaxonC?

The main reason for using SaxonC in preference to other XML tools available for Python is that it supports all the latest W3C standards: XSLT 3.0, XPath 3.1, XQuery 3.1, and XSD 1.1. It even includes experimental support for the draft 4.0 specifications currently under development.

About SaxonC

SaxonC is a version of Saxon developed by compiling the Java source code to native executables that run on the C/C++ platform, with extensions for PHP and Python. All features of Saxon have been ported, other than those (such as collations) that are necessarily platform dependent. In particular, SaxonC provides processing in XSLT, XQuery and XPath, and Schema validation. It therefore makes these processing capabilities available to a plethora of other languages that are strongly coupled to C/C++ such as PHP, Perl, Python, and Ruby.

About Saxonica

Saxon is developed by Saxonica, a company created in 2004 by Michael Kay, who was the editor of the XSLT 2.0 and 3.0 specifications in W3C. The original Saxon product on the Java platform has been continually developed for over 20 years, and has acquired a reputation for standards conformance, performance, and reliability.

Installation

pip install saxonche

Getting started

Either import the whole API:

from saxonche import *

Or specific modules:

from saxonche import PySaxonProcessor

The SaxonC API includes classes for constructing XDM data models and for a variety of processors. For full details see the SaxonC Python API documentation.

The following short example shows how to get the Saxon version from the PySaxonProcessor:

from saxonche import PySaxonProcessor

with PySaxonProcessor(license=False) as proc:
	print(proc.version)

It will print something like this:

SaxonC-HE 12.5.0 from Saxonica

Note: license=False requests the open-source version of Saxon, whereas license=True requests the commercial product - which requires a license file. SaxonC looks for the license key in the directory identified by the environment variable SAXONC_HOME. To explicitly set the location of the license key, create a licensed PySaxonProcessor and set the licenseFileLocation property on it before doing anything else:

from saxoncee import PySaxonProcessor

with PySaxonProcessor(license=True) as proc:
    proc.set_configuration_property("http://saxon.sf.net/feature/licenseFileLocation",
                                    "/path/to/saxon-license.lic")
    ...

Example: Running a transformation

The following basic example shows how an XSLT stylesheet can be run against a source XML document in Python using SaxonC:

from saxonche import *

with PySaxonProcessor(license=False) as proc:
 
xsltproc = proc.new_xslt30_processor()
document = proc.parse_xml(xml_text="<doc><item>text1</item><item>text2</item><item>text3</item></doc>")
executable = xsltproc.compile_stylesheet(stylesheet_file="test.xsl")
output = executable.transform_to_string(xdm_node=document)
print(output)

For more Python examples, and further details about installing and configuring the product, see the SaxonC 12 documentation.

Using pylint on a project which uses saxonche

Because the saxonche is a C extension, you will need to either configure Pylint to load the module to avoid pylint errors like:

E0611: No name 'PySaxonProcessor' in module 'saxonche' (no-name-in-module)
$ pylint --extension-pkg-allow-list=saxonche  my_module.py

Support

All users are welcome to use the public support site for reporting issues and seeking help (registration required). In addition, many questions are asked and answered on StackOverflow: please use the saxon tag.

Acknowledgement

We learned a lot about how to create Python wheels for Saxon from the Saxonpy wheel package, which is a third-party project on github.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

saxonche-12.5.0-cp312-cp312-win_amd64.whl (19.7 MB view details)

Uploaded CPython 3.12 Windows x86-64

saxonche-12.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.5 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

saxonche-12.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (22.5 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

saxonche-12.5.0-cp312-cp312-macosx_11_0_arm64.whl (20.0 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

saxonche-12.5.0-cp312-cp312-macosx_10_9_x86_64.whl (20.0 MB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

saxonche-12.5.0-cp311-cp311-win_amd64.whl (19.7 MB view details)

Uploaded CPython 3.11 Windows x86-64

saxonche-12.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.6 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

saxonche-12.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (22.6 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

saxonche-12.5.0-cp311-cp311-macosx_11_0_arm64.whl (20.0 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

saxonche-12.5.0-cp311-cp311-macosx_10_9_x86_64.whl (20.0 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

saxonche-12.5.0-cp310-cp310-win_amd64.whl (19.7 MB view details)

Uploaded CPython 3.10 Windows x86-64

saxonche-12.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

saxonche-12.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (22.5 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

saxonche-12.5.0-cp310-cp310-macosx_11_0_arm64.whl (20.0 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

saxonche-12.5.0-cp310-cp310-macosx_10_9_x86_64.whl (20.0 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

saxonche-12.5.0-cp39-cp39-win_amd64.whl (19.7 MB view details)

Uploaded CPython 3.9 Windows x86-64

saxonche-12.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.4 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

saxonche-12.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (22.5 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

saxonche-12.5.0-cp39-cp39-macosx_11_0_arm64.whl (20.0 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

saxonche-12.5.0-cp39-cp39-macosx_10_9_x86_64.whl (20.0 MB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

saxonche-12.5.0-cp38-cp38-win_amd64.whl (19.7 MB view details)

Uploaded CPython 3.8 Windows x86-64

saxonche-12.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.5 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

saxonche-12.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (22.5 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

saxonche-12.5.0-cp38-cp38-macosx_11_0_arm64.whl (20.0 MB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

saxonche-12.5.0-cp38-cp38-macosx_10_9_x86_64.whl (20.0 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

Details for the file saxonche-12.5.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bcdfc89a6ea6fb0e6b796cd55b6496cd21fc813110a692ed49a3457a47cafe31
MD5 04aaa9539af8e9697058477d2cb17f32
BLAKE2b-256 2a66c2303d0f5266d40085407cee487b30366446bdb61135b959c875e1fe48b7

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 78f4f606165f2d9c14c871132c3b3fd2ecaaa8a2f3d6a624c63f56524cef7470
MD5 c2b0c202f1690f02344fb5d4874eb30c
BLAKE2b-256 76cb439fca18dce85321e50a7f82d9963934d2a443128abdc7861cc5cb349942

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2374c58755944fa1bed6a5275eac2c988f132b461da15a33c66f79548b81f043
MD5 fceda06d66829f53495b48ab396ba250
BLAKE2b-256 d95213486e53a09cf493afa9c37d8ec96a3261707132fabb1445e588bdbe7a41

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 620d586392ef7084ba8d0c6747bed2193da49cd137866ba619c479185fa24ed4
MD5 be2a3c483dfc6e7ff44fc069f5a374b0
BLAKE2b-256 5128a02b53ff75eeeb66d21402283f29517ad025e5b0766aec390ed84c0d1085

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bc3f406ed0529ef56a796a3ddb66608047bc4d641ead57891b6924dfe0234f90
MD5 23b3fcaa539d5f2b7a73bfc8a15f530f
BLAKE2b-256 548a1696522b1de1c259d1844b1f91ff1f7a3ebc9350a762e3dced47b00635e9

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a2d30fbe608390a9e32e27d8065696df398d3c56c5a776fd5e794e940d42b14b
MD5 d67c4f84666af1fd1e5dd4fe9c13c326
BLAKE2b-256 8e331cbf5607699b1eb823bf120b21b2769f3db9798d76a466e200df7d4271c2

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 620849d0411e32a20193099106ddfe97d3ba07aa4b76ef0edab94920fdae0b34
MD5 ca383bca63a0bef6a4bc4f598beb9d20
BLAKE2b-256 c310c5a981264acca896ee869caef22e5d61d08827cd468a870da02f0cfa46d2

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bfa0f72280e518bc48cb2dc648534ec9cde8da3e7f1b4a60beca8ca29c9ede31
MD5 51ef2580d903d65c273906e146b72634
BLAKE2b-256 cbf36854faadad8822986e25a593891f54e3c647852283292e3fd405e6f959fa

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 38a735bc7e7f7ec8fd31cf8d88d6880ea76d21f2c3da151c2d86a589f6cd6603
MD5 9d91aafef407b356bd04666cdc3ac6c8
BLAKE2b-256 4ed5013dce06296ba66ff784bab7012a02761cdc83d4f6ada13c99be3191a24e

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8ab8ff38eba50b86c547dfe62494e8525e49737fb8c111377a530f8e4aba5398
MD5 757a8c85a4162fdf9acb9429bbf63382
BLAKE2b-256 a8916bfe1f6162d7ece9548b1be172a79c97b664ac46cb8ae95ebaabea3183ed

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 df4ac7ef8420477184f4aa48ed5e696fef7b787d61aadfb6b62695afbb204a79
MD5 91833797176e5f90ebee550e37999de3
BLAKE2b-256 b6e1c71341d66f5bfbaa470a1503ee2cfff21dfb7adf26267df0a316c5734603

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5079210932e6d6a77d638a5acc15a438a91ea47f4e322ae2ae8a8e2b1be40689
MD5 65f1499b1d4f11e4d17d05f873c064e8
BLAKE2b-256 4e5f4be9d8b76fbd6ba2f617268902d5d673130f688b2e4cfe01d9c89d0aab65

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 638895fc495e22a582e1d25dcc8b15c3fb94f645788bbff0efc0765287cd1fe1
MD5 d7c5e799d8597234d3d042079a888d8c
BLAKE2b-256 e085c9a565894c72b55d33a06ef652e6dd90d041816b34e5cf345fae93c09e94

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c03ce719be633ddfd70198cb469d1f27e67062e5220eb810001b16a1061f5f43
MD5 853ac99f686896e2bbf049658b541162
BLAKE2b-256 b62bc2ed8137d89af5585b5a0a6cfdcb91582cc90d25ef51c83c3f8abc7b4fe9

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3f84604bc47721b2fc1df3106083e264d6dede5eec1934000376d61b3ad73c0b
MD5 44e1c0a2fcdc91b1add79e1e9083d4cc
BLAKE2b-256 03086bdccf3deb44c1291bd1c5270a5006eaea06b7a6c8dee08cf3a0ff369e71

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: saxonche-12.5.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 19.7 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for saxonche-12.5.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 26e0b1cfb7f99aed581c5c175db811a5cddfe860816b19bbeab4fdb1a7327fd6
MD5 a21b025ba3e9c9fd598fec9eca9e954a
BLAKE2b-256 3c04caee90de56c0cc13710db98738ae9bb45225c630f284e828c00b53d76f2c

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cc22f5ea64e118bcae1599962b8a6b3ccdcd9da6eef14328f9eebd59ee2a4c88
MD5 24e4dc902d032e61d42d34eb90b01e00
BLAKE2b-256 e524c4663fbdc5e6c935d01265ceed4feae5affa219ba8952e6bac35b89b1d09

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7f4f9852684d70d708f36abc35e1da059b793b5e67d0d490c091c466fbce6d0f
MD5 2781e5353c44f614d3322caec55ddb48
BLAKE2b-256 5f0031051ad41fdc1f4969ad886bed598fec3817b97f7ee52523dc34e832fbd3

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8f926d4158a280bca25a8b1d87c98e0901c881c0d190f066dba415cb63d7361a
MD5 88138b2b7d4c28a67244259eebcab8ab
BLAKE2b-256 abef8548ba33c82df2901ff374ed46f09f44e946132351669a115f775d2d4d9b

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4128c46466561b891ab07276043b94b37762187aa0a5a38331a3870e180907b1
MD5 fbc7d2e0f2cb8d41598686829b2b162f
BLAKE2b-256 bb6a19294972c0126a3543b085bb356a013e154c5a839090073944a28402ff08

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: saxonche-12.5.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 19.7 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for saxonche-12.5.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 cbe5ff6b06a924e3f762ae359b5ec2fac9e5fe7febe6b0de95feca177fba7332
MD5 d2d0eff1fa700be7e8dfd9af01055a64
BLAKE2b-256 5cd7ebe7806ca37c2df9bec7464548c5579bf9c72aa31610eb932523ba25471b

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7648002a76fcbd7c078fe91db52a93130a1b88932e5f7cd846f2ee5c91c89ff0
MD5 12aa6808bf2d58185d73f07880b03998
BLAKE2b-256 e7f602d5e2411dd383ce471e169826da829856a585b4c8d684c91e8bd1670c8f

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 957f28de384ad3c24125f761ad0d10a5d62e6aa5123775e845cb28303a8717c7
MD5 37bf01ab7e5a47ab3400d2c696aba517
BLAKE2b-256 a413066669344c5de15f6276202ba6cf97e738817b26c839eb3e93486582d79b

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 98d9647d37a166be9b2402bad389aaf28e5979258a672a6db86c1f48baf9db7e
MD5 b74f6d7c2d66d81c43870c1f48cc5e43
BLAKE2b-256 6e1ce0a1e47a0b4aa75dc78eca0f0b8bef62dea8e8ac6b3498f0e72689417717

See more details on using hashes here.

File details

Details for the file saxonche-12.5.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for saxonche-12.5.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f05d0679d2355721adb6d1cd98968f698e46c7cc3c85d4f604315deef1ae82ec
MD5 071041d3270a99fad22bfa5e59898988
BLAKE2b-256 de7a635f507f29617734bae672e494d52f9d477526b6b33e2b8e879b1be33e57

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