Skip to main content

Python interface for the OPA Rego Language and Runtime

Project description

regopy

Rego is the native query language of the Open Policy Agent project. If you want to learn more about Rego as a language, and its various use cases, we refer you to the language documentation above which OPA provides.

This module is a wrapper around rego-cpp, an open source cross-platform C++ implementation of the Rego language compiler and runtime developed and maintained by Microsoft. You can learn more about that project here. As much as possible in this wrapper we try to provide idiomatic Python interfaces to the Rego query engine. We hope the project is of use to those wishing to leverage the power of Rego within a Python context.

Warning While this project has progressed to the point that we support full Rego language (see Language Support below) we do not support all built-ins. That said, we have verified compliance with the OPA Rego test suite. Even so, it should still be considered experimental software and used with discretion.

Example Usage

from regopy import Interpreter
rego = Interpreter()
print(rego.query("x=5;y=x + (2 - 4 * 0.25) * -3 + 7.4"))
# x = 5
# y = 9.4
input0 = {
    "a": 10,
    "b": "20",
    "c": 30.0,
    "d": True
}
data0 = {
    "one": {
        "bar": "Foo",
        "baz": 5,
        "be": True,
        "bop": 23.4
    },
    "two": {
        "bar": "Bar",
        "baz": 12.3,
        "be": False,
        "bop": 42
    }
}
data1 = {
    "three": {
        "bar": "Baz",
        "baz": 15,
        "be": True,
        "bop": 4.23
    }
}
module = '''
    package objects

    rect := {`width`: 2, "height": 4}
    cube := {"width": 3, `height`: 4, "depth": 5}
    a := 42
    b := false
    c := null
    d := {"a": a, "x": [b, c]}
    index := 1
    shapes := [rect, cube]
    names := ["prod", `smoke1`, "dev"]
    sites := [{"name": "prod"}, {"name": names[index]}, {"name": "dev"}]
    e := {
        a: "foo",
        "three": c,
        names[2]: b,
        "four": d,
    }
    f := e["dev"]
'''
rego.set_input(input)
rego.add_data(data0)
rego.add_data(data1)
rego.add_module("objects", module)
print(rego.query("x=[data.one, input.b, data.objects.sites[1]]"))
# x = [{"bar":"Foo", "baz":5, "be":true, "bop":23.4}, "20", {"name":"smoke1"}]

Language Support

At present we support v0.55.0 of Rego as defined by OPA, with the following grammar:

module          = package { import } policy
package         = "package" ref
import          = "import" ref [ "as" var ]
policy          = { rule }
rule            = [ "default" ] rule-head { rule-body }
rule-head       = ( ref | var ) ( rule-head-set | rule-head-obj | rule-head-func | rule-head-comp )
rule-head-comp  = [ assign-operator term ] [ "if" ]
rule-head-obj   = "[" term "]" [ assign-operator term ] [ "if" ]
rule-head-func  = "(" rule-args ")" [ assign-operator term ] [ "if" ]
rule-head-set   = "contains" term [ "if" ] | "[" term "]"
rule-args       = term { "," term }
rule-body       = [ "else" [ assign-operator term ] [ "if" ] ] ( "{" query "}" ) | literal
query           = literal { ( ";" | ( [CR] LF ) ) literal }
literal         = ( some-decl | expr | "not" expr ) { with-modifier }
with-modifier   = "with" term "as" term
some-decl       = "some" term { "," term } { "in" expr }
expr            = term | expr-call | expr-infix | expr-every | expr-parens | unary-expr
expr-call       = var [ "." var ] "(" [ expr { "," expr } ] ")"
expr-infix      = expr infix-operator expr
expr-every      = "every" var { "," var } "in" ( term | expr-call | expr-infix ) "{" query "}"
expr-parens     = "(" expr ")"
unary-expr      = "-" expr
membership      = term [ "," term ] "in" term
term            = ref | var | scalar | array | object | set | membership | array-compr | object-compr | set-compr
array-compr     = "[" term "|" query "]"
set-compr       = "{" term "|" query "}"
object-compr    = "{" object-item "|" query "}"
infix-operator  = assign-operator | bool-operator | arith-operator | bin-operator
bool-operator   = "==" | "!=" | "<" | ">" | ">=" | "<="
arith-operator  = "+" | "-" | "*" | "/"
bin-operator    = "&" | "|"
assign-operator = ":=" | "="
ref             = ( var | array | object | set | array-compr | object-compr | set-compr | expr-call ) { ref-arg }
ref-arg         = ref-arg-dot | ref-arg-brack
ref-arg-brack   = "[" ( scalar | var | array | object | set | "_" ) "]"
ref-arg-dot     = "." var
var             = ( ALPHA | "_" ) { ALPHA | DIGIT | "_" }
scalar          = string | NUMBER | TRUE | FALSE | NULL
string          = STRING | raw-string
raw-string      = "`" { CHAR-"`" } "`"
array           = "[" term { "," term } "]"
object          = "{" object-item { "," object-item } "}"
object-item     = ( scalar | ref | var ) ":" term
set             = empty-set | non-empty-set
non-empty-set   = "{" term { "," term } "}"
empty-set       = "set(" ")"

Definitions:

[]     optional (zero or one instances)
{}     repetition (zero or more instances)
|      alternation (one of the instances)
()     grouping (order of expansion)
STRING JSON string
NUMBER JSON number
TRUE   JSON true
FALSE  JSON false
NULL   JSON null
CHAR   Unicode character
ALPHA  ASCII characters A-Z and a-z
DIGIT  ASCII characters 0-9
CR     Carriage Return
LF     Line Feed

Builtins

At the moment only support a few builtins, but are actively working on adding all the standard builtins. The following builtins are currently supported:

  • aggregates
  • arrays
  • bits
  • casts
  • numbers
  • objects
  • regex
  • semver
  • sets
  • strings
  • types
  • units
  • miscellaneous
    • base64_encode
    • base64_decode
    • json.marshal
    • opa.runtime
    • print
    • time.now_ns

Compatibility with the OPA Rego Go implementation

Our goal is to achieve and maintain full compatibility with the reference Go implementation. We have developed a test driver which runs the same tests and validates that we produce the same outputs. At this stage we pass all the non-builtin specific test suites, which we clone from the OPA repository. To build with the OPA tests available for testing, use one of the following presets:

  • release-clang-opa
  • release-opa

At present, we are NOT passing the following test suites in full:

  • base64*
  • crypto*
  • glob*
  • graphql
  • invalidkeyerror
  • json*
  • jwt*
  • net*
  • planner-ir
  • providers-aws
  • reachable
  • urlbuiltins
  • walkbuiltin

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

regopy-0.3.10.tar.gz (14.3 kB view details)

Uploaded Source

Built Distributions

regopy-0.3.10-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.1 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

regopy-0.3.10-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (6.6 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686

regopy-0.3.10-pp310-pypy310_pp73-macosx_10_15_x86_64.whl (7.1 MB view details)

Uploaded PyPy macOS 10.15+ x86-64

regopy-0.3.10-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.1 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

regopy-0.3.10-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (6.6 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686

regopy-0.3.10-pp39-pypy39_pp73-macosx_10_15_x86_64.whl (7.1 MB view details)

Uploaded PyPy macOS 10.15+ x86-64

regopy-0.3.10-cp312-cp312-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.12 Windows x86-64

regopy-0.3.10-cp312-cp312-win32.whl (930.8 kB view details)

Uploaded CPython 3.12 Windows x86

regopy-0.3.10-cp312-cp312-musllinux_1_1_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

regopy-0.3.10-cp312-cp312-musllinux_1_1_i686.whl (6.4 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ i686

regopy-0.3.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

regopy-0.3.10-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (6.6 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

regopy-0.3.10-cp312-cp312-macosx_11_0_arm64.whl (7.8 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

regopy-0.3.10-cp312-cp312-macosx_10_15_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.12 macOS 10.15+ x86-64

regopy-0.3.10-cp311-cp311-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.11 Windows x86-64

regopy-0.3.10-cp311-cp311-win32.whl (931.1 kB view details)

Uploaded CPython 3.11 Windows x86

regopy-0.3.10-cp311-cp311-musllinux_1_1_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

regopy-0.3.10-cp311-cp311-musllinux_1_1_i686.whl (6.4 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

regopy-0.3.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

regopy-0.3.10-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (6.6 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

regopy-0.3.10-cp311-cp311-macosx_11_0_arm64.whl (7.8 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

regopy-0.3.10-cp311-cp311-macosx_10_15_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.11 macOS 10.15+ x86-64

regopy-0.3.10-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10 Windows x86-64

regopy-0.3.10-cp310-cp310-win32.whl (930.1 kB view details)

Uploaded CPython 3.10 Windows x86

regopy-0.3.10-cp310-cp310-musllinux_1_1_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

regopy-0.3.10-cp310-cp310-musllinux_1_1_i686.whl (6.4 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

regopy-0.3.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

regopy-0.3.10-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (6.6 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

regopy-0.3.10-cp310-cp310-macosx_11_0_arm64.whl (7.8 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

regopy-0.3.10-cp310-cp310-macosx_10_15_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.10 macOS 10.15+ x86-64

regopy-0.3.10-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9 Windows x86-64

regopy-0.3.10-cp39-cp39-win32.whl (930.0 kB view details)

Uploaded CPython 3.9 Windows x86

regopy-0.3.10-cp39-cp39-musllinux_1_1_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

regopy-0.3.10-cp39-cp39-musllinux_1_1_i686.whl (6.4 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

regopy-0.3.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

regopy-0.3.10-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (6.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

regopy-0.3.10-cp39-cp39-macosx_11_0_arm64.whl (7.8 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

regopy-0.3.10-cp39-cp39-macosx_10_15_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

regopy-0.3.10-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8 Windows x86-64

regopy-0.3.10-cp38-cp38-win32.whl (930.1 kB view details)

Uploaded CPython 3.8 Windows x86

regopy-0.3.10-cp38-cp38-musllinux_1_1_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

regopy-0.3.10-cp38-cp38-musllinux_1_1_i686.whl (6.4 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

regopy-0.3.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

regopy-0.3.10-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (6.6 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

regopy-0.3.10-cp37-cp37m-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.7m Windows x86-64

regopy-0.3.10-cp37-cp37m-win32.whl (930.7 kB view details)

Uploaded CPython 3.7m Windows x86

regopy-0.3.10-cp37-cp37m-musllinux_1_1_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

regopy-0.3.10-cp37-cp37m-musllinux_1_1_i686.whl (6.4 MB view details)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

regopy-0.3.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.1 MB view details)

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

regopy-0.3.10-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (6.6 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686

File details

Details for the file regopy-0.3.10.tar.gz.

File metadata

  • Download URL: regopy-0.3.10.tar.gz
  • Upload date:
  • Size: 14.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0b4

File hashes

Hashes for regopy-0.3.10.tar.gz
Algorithm Hash digest
SHA256 85e6be5065dd7957f5aaf256285a67dd99a08632294afefbf939658689494b36
MD5 c218df1da38436e879153042a975d0bf
BLAKE2b-256 2892d38ea4c59a6d612fe5235bacbb2c96abc73cb384301ef62f37284f060f44

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1c46afc191c056240500d1bcd6847e2a8a3bc49533bd8a7884ba3ae3ecc14dcb
MD5 e862cf17e8c7ad511376475548500889
BLAKE2b-256 ad85c2d68fb7efa5e1cb3974e3ffd751d064bcae2e882e9cc4a69075fe2571a5

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d0631d997635758d8b2769268f842e7030fa2265b5928a734f55b2909148ed3f
MD5 c704f55c7bb606b078f39ef4ae1c7db0
BLAKE2b-256 926fe8b5f0dec848bb1eb1cf31b836df1e6bc0dcae779ad1ac52b595bf088d89

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-pp310-pypy310_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-pp310-pypy310_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 89dac0c1e8090d577091409d6cf3487b063d139827c55f3587fb69be9893f1f7
MD5 5ced667c585ad0c6d27f65d659189592
BLAKE2b-256 5153ddfe292471027a9272309bbab5110c25c88619068cd3f5eca6182fbc88b5

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 69a7bce4f6fbc25ab5b9c6cca003d6f1cd6602c8fcf6ada5758bdca05109f269
MD5 bfdbc5770e8a901dd9cef52b818c717e
BLAKE2b-256 c3309afd887658cd4b6bbcc20404e73746a23c45943f7113de9992e340a6fc9a

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 416779d4fafb3b834cae63670a70b63dc2b047150ac410ff1730ee74993d5efd
MD5 e80b1de3e09ae57a5ea505c01c4d1433
BLAKE2b-256 0ce9e5e0391e955802953c2850c09ca9ebab73563f311822170c37756246a85c

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-pp39-pypy39_pp73-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-pp39-pypy39_pp73-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 afe6b8f1bc477913e45f90fa157eadbd8bb7607cfe0eb3d1361a4e0d567ff5a3
MD5 3d20c2e26236bc01b226ac214d9b9145
BLAKE2b-256 9fd2cd5050b506153adb3f8abc260caa99f08eb93f245103b9bb51b02392e43a

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: regopy-0.3.10-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0b4

File hashes

Hashes for regopy-0.3.10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 08aa4977886baf09652ce68ec2525ebb848b99670393844e3070985b6cd72ac5
MD5 d68021dc644e8182c1688975babb90fb
BLAKE2b-256 20c1638ae32400d84d578abba91b56597d52ea9b96cfbcbf9baec991d889fe55

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp312-cp312-win32.whl.

File metadata

  • Download URL: regopy-0.3.10-cp312-cp312-win32.whl
  • Upload date:
  • Size: 930.8 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0b4

File hashes

Hashes for regopy-0.3.10-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 4630b3bc626229247d7629f0e878fb128624a1c59dcc3455e1ad1cb18b4ffff0
MD5 d0c59c015941b833eba65c4701b3c401
BLAKE2b-256 cedc3949530aeae5e68db5fcdf5609f2a7cf790d72121b34451b0d70d61f0776

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp312-cp312-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 f9911f1c94b2b2498700f52fec8ab58229e42953cec6e8f54d5900cd4e29c304
MD5 305bc7a37f9cae5636fc106e2bd40025
BLAKE2b-256 f19da1dab9ab64466457fe7752c86d65da26a9e92f820627c4c0d1af0c64a085

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp312-cp312-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp312-cp312-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 27b3ca69d487a2a3f00cd88de9a78fdeddc0d1d1cfba7071c039b584c07520da
MD5 668a2b515910a99dc472fc5ec058fc55
BLAKE2b-256 b15b745a79f81352d1521b0f67649bd86e064df423313efea0950e9dbd0ebe27

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4337a62d4c2dc311d976272ac0870ad0a8d643f494b0d34b4d3c074411468250
MD5 daf96c3fd5edfd4f36f914ad2cb3f217
BLAKE2b-256 9a02096d877dc4b128842e4a0603c481865fbb9c4229d376a1b06780e5298327

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fac6e916508eaf3219297669fb8987b5cde7c2cf5afafc8e33f9c221e62821f8
MD5 21ac62f3a1a203da1fcae58b564143a9
BLAKE2b-256 6edb588ae6e37aacc07192f429258894ada33ce8b16fe9a58d2d7f08faa1c3b0

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ced5d41ac41d4e0ca248a1ac431eb3b4d53b64cb5118c68dee20a85b55236472
MD5 74c81e7cfe703468dd49decac0186288
BLAKE2b-256 320be9ed64eedc4bd18056551c3999968902279ab727380c4ad66f6f78162eca

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 702bebc522c6423c7f74e19f367479508b3ff40d7147d0325378c96990b33e1b
MD5 a60435323ce483038998500e40a1d71c
BLAKE2b-256 204b3c64d533b3769c7b30fa0d95dd8c31a6973632886925682dc18f729eb3b4

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: regopy-0.3.10-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0b4

File hashes

Hashes for regopy-0.3.10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9b07d97b555110267688808fe8c89b162e6ffd6caf350b77a59b85e6c3c52c78
MD5 db5e2c3ce7a7fdc36b7259ba3b8a4342
BLAKE2b-256 6a39e634e441063aadc06272c153c95744ff3c47bf2ec436780b9a69ffce1b10

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp311-cp311-win32.whl.

File metadata

  • Download URL: regopy-0.3.10-cp311-cp311-win32.whl
  • Upload date:
  • Size: 931.1 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0b4

File hashes

Hashes for regopy-0.3.10-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 a35a81e13516b7d09e0ba9d0442e0242f4b2315f81a2554e2901c33d93fc22e8
MD5 00fb35ba0dfff79cf225529089eb9174
BLAKE2b-256 42442817d7ae0d8c6de45e20a5c36a9e1b76465c7733000515f60727ec70116e

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 a8049a1cc57e461f6867ebcee759fb4f01dfee89efb1d31969ea8be69e152b6c
MD5 cc723368da72c36227644aa246a150d5
BLAKE2b-256 1302ece9b2f0e15f81a893054524909188017cb27513a12b702a1587a25464fa

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp311-cp311-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp311-cp311-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 d68ed6f26398736cff948e640421d4c51a4ebee534eb56160b72bce6af74a52b
MD5 f946b2af32e056c76ffaf22c5c0740ac
BLAKE2b-256 0ca4b6cc7790fdb52cb59cbb957341ee911384f82eef969fdd7448876808728b

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 24e64c9e5654f46f71c960218ce26642958dc725b647241f44f47e59527b3363
MD5 100adb3463c91ccd3981b9f5f199e6c9
BLAKE2b-256 8139444ffb34607ef585c72db2d7ff869cead9449617c2a43bfee3bcbbfe93c6

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f3ae5ae26524d473057db563d7bdf5f9fd30cc362da9c1c6e06f27d461474c98
MD5 abadf9560c1b52fb34ce8975c3d1f2a6
BLAKE2b-256 54549094951912ed121932fc5d240c11c15444c2920e27182f191afe2394b4e6

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cba0820d12772d6f6b8adddce191eb3c0cac4034026bc8c4fc48635b294a8934
MD5 6625cf75fe2c2287ec5196b13f812afe
BLAKE2b-256 c76f25c58575c8b7cd1f845309cc9479911fbb3b1d9cc289a76f20e80305b379

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 62940a73532f2193b9d7bc55d5de542d275224350138eb6a5ba228e22f9dc2c0
MD5 de2f5fa59bee70a9ee94562ff568e530
BLAKE2b-256 5f3108bb197df81b314613e957539a7d9dd4c9283b5483f4a258835088afd26b

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: regopy-0.3.10-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0b4

File hashes

Hashes for regopy-0.3.10-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 80c44fa0f24574091080242816030ed5a7121373a12bb6706df79cb9379b2109
MD5 3b90b703facca7104ecf55c5229ed488
BLAKE2b-256 4397ad8d7785c2b090cbaaeec390e6a313393b567687ecda8bef37a999cd063a

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp310-cp310-win32.whl.

File metadata

  • Download URL: regopy-0.3.10-cp310-cp310-win32.whl
  • Upload date:
  • Size: 930.1 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0b4

File hashes

Hashes for regopy-0.3.10-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 cb68511ec4ec70e975213ee7decf877edfce50162e9dcb651d0e130ca998ba7f
MD5 e562f928e0e695f90b3e2edd593ffc06
BLAKE2b-256 26125563244d970aa889abb5b401ae0394b3301842a4def67e8dead0e18c8921

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 376bb5fb1a9d04c285bee169bd88593247f0b23ad83da2dc6bd7c0c73744d65b
MD5 71a998bed5fd01ee95be50cefa4e764b
BLAKE2b-256 0ac6cef57bdfb1c2750ba4c1708b5cebff13caa4431c7823cdcab530fabd3100

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp310-cp310-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 81d017b8f85eecfb4698300c9ea198b3c2ca6bf318f768e7fba135ea92172689
MD5 3b7e25f27a53b3ea79170b0afe0fc679
BLAKE2b-256 463a85cef8277c641886ab85bcba183a6706916a68957ae9b2aa90753efcfe53

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 70965a98006745b5d10817be6a0fbe1d776c181b0da5003c59640b5087a3296d
MD5 7deadbb23d05d187250cd2efee4ead5b
BLAKE2b-256 821ba6f453c85f1f3d69dce3d9c0730601f5a9cb64f142c793585fc2786ccc34

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7ec3a1373a779cbb902027e659e3f1e33c96c50398de6f0f5de439de8192a999
MD5 52dbeb2ec94275831138ea6cf56833ab
BLAKE2b-256 d7bc75b21c76b9a0c8650c78645119d1bdf944fff72c0c13bd644c700169a386

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e7dadb8589ecb83b886c90a9eea0c3e3ceb75765f86bcb5b075730e18780d41a
MD5 ae4efdd40ca75131af00769ce3dc8d1d
BLAKE2b-256 6b0cbdcab34bfd828acbfef93931e88a4b89ce5c333abd4672efd20e902502eb

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 28ada18d57da0283cfb766159629ca884e7236cf3fb849a376fc174f11f5df9a
MD5 3493ac00b69dd8b2c8dcdde214e9d6aa
BLAKE2b-256 10b78e897f34a619419cf738e3e279cd40bddbb80afc984499f31a8b55d652c2

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: regopy-0.3.10-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0b4

File hashes

Hashes for regopy-0.3.10-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 3eeff0039eb976ef04e8580164724f69f12b97fcf919d0af4a27ff77310c2de6
MD5 f3c8b133f2cf7d0be1b1ad9999aec6fa
BLAKE2b-256 d639b85259772870d3ad4b7c9a96ec5cf03d79ea5a7499adad4db0768d93cd48

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp39-cp39-win32.whl.

File metadata

  • Download URL: regopy-0.3.10-cp39-cp39-win32.whl
  • Upload date:
  • Size: 930.0 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0b4

File hashes

Hashes for regopy-0.3.10-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 a59bba96af345e263c98f9a93f8b286ed21f56ffdf7eff9b7456c1b77892ccef
MD5 297829dc5a07d31cf5466d9de134ab1d
BLAKE2b-256 78dd0063d1e8324e99949f6b1566b9f3a9c2e070ac834a1933e820a45dd45bf1

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 82a21733fd16d484656f26277c3914f8b4b0c8829bbb62898e2114a4b2910107
MD5 f9dfa37c8376c8468c68ef8ad743ddf9
BLAKE2b-256 7825e72c88f3dc68098a9b69e28dad48a4ce750cc8e977c3393a275ca12be325

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp39-cp39-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp39-cp39-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 3e5f6517298a7f9623c9772bf29967d9c6589fcff191c35212e88ec42ea26d61
MD5 3e2e0b647dd63425d622fc34ea5d91e5
BLAKE2b-256 5fe1052ba1d629b8fbf5844bfc388a185fbbf4f648e651747eccd3f0824064ce

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4b8f93f604aec52d5aa7632359f8bfbbe4b17a95ea5a3b1566dd1f6653a5e7d9
MD5 5965293267df641e1dbbe01ca1b2e3f5
BLAKE2b-256 1a97ff547ac469dc3d83746d053f1c7f4e6c8845759f18b9a01be6f345dfeec8

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e290c16464ae2a28f230e2d6ca01cafb84c1a692154aa4f2eaaa7cd693af0525
MD5 6bc47c5f80b95cd3ac5118d316254eb4
BLAKE2b-256 9c2ddeffc7f182c0a823789a8b137455c4c8595c0b7fd88ce0c7ee85da96d683

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1a06bd3753c4ef6bebb4408a0ede9c90d154c628d056183dc67d9e5cb9cf44db
MD5 0f179bfd13b5dc04f858abe473587a0d
BLAKE2b-256 765073f5b5dae11e9f9761a892cff178810772938a58f4ad81e6156e977175af

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 ee8994db815f3f67d114e02a8b46801dbff3c16bacc3b0ffc023b86cfe93f0a2
MD5 5403609e8f02689efdaef4cab69593d5
BLAKE2b-256 e95d95237534700159e7b2544d4608cea8e43f4cd9b14590ab6a71f1ad47e9a2

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: regopy-0.3.10-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0b4

File hashes

Hashes for regopy-0.3.10-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 95e2e3c5005bb5bdcfc9f3f12cd26aa60ccbf0a8ddd4cd65fbe6cdf1b3abf904
MD5 4cf7a49b5d62f21aa5b08ea00a64e42d
BLAKE2b-256 3db1d6c0c6a4b443dd6f2e5bec8ff7928559603c31cfada421533602676d0924

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp38-cp38-win32.whl.

File metadata

  • Download URL: regopy-0.3.10-cp38-cp38-win32.whl
  • Upload date:
  • Size: 930.1 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0b4

File hashes

Hashes for regopy-0.3.10-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 802c9a74a22a3f21b124ca5c42c386a1b4ea80f6d3affc622a2160b282cd1a53
MD5 61196fab8c07f4889b5ffe132b4e2f03
BLAKE2b-256 4e118b10a2eb2b875ca87cf2492c78d77b2743feec5a1f72c17b5b6a691b5bc5

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 8c933c167ad578b2d3b834b6ef90d6d6ca0e14b0be9aaa3472ab9ef66fa802f6
MD5 392ed100c9ba2595b9fb6f2097ae568d
BLAKE2b-256 53f0a3fbfef8e787c2b8c868d939bcfff4d94c2f1e877e882f0ba1ecec2b30a3

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp38-cp38-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp38-cp38-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 027efb95202b745de5e87f4ff993103030af31defc89b3c7a7dcfbe3b59a88cc
MD5 04aa92f1e1b1fed7467bcf18595f1d23
BLAKE2b-256 6edd5ed44cbb170148cdab02c135cb50888189de926ea38e827190f99a4c9d29

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bcbc47c321de1ef79218e675b8dc66bad54810931b8dfa1c203794f467d71504
MD5 0f924cfd5102935530192ce55714fca7
BLAKE2b-256 06f0d2a50aae0dc837e4eee3ff0621ca40eb403f5785c82ede15599c1fee4702

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 13f9bec22e58aa2ed654544ec482035d1f8df80998769a89321a4b21956e4900
MD5 ea608dd4bd19a602a10f6ac6cf88d733
BLAKE2b-256 66a874f33ad527e827b1efbbaffa68e0c9c6530d7d479af1479063475227a453

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: regopy-0.3.10-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0b4

File hashes

Hashes for regopy-0.3.10-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 28524bcd598feb26397583a63fb5a2e56511adb9cc421d368a8db3f1d34e100b
MD5 c667d26120128ea7cceb7830bf563efb
BLAKE2b-256 aa909a72d24aed264992034383a01f9f50e6dff68d9c5c01a304ae4c85de879f

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp37-cp37m-win32.whl.

File metadata

  • Download URL: regopy-0.3.10-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 930.7 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.0b4

File hashes

Hashes for regopy-0.3.10-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 2adf90e1ade3d89f1ff4c3acabce0a44e30319fce5e3aa82257a63fde6f5f8f3
MD5 19869753ef08a775f633bce5bc7c7685
BLAKE2b-256 8a2bce5ef6afb3cf825e78ffa0b5294756672c1c3885b43e32a68cd1e9e9c54a

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp37-cp37m-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 0e3920b0ebedfd5256595b7f05fb57ff1160fb2796e008a154dc1466f270d777
MD5 59b041e93514122db62315468e131b69
BLAKE2b-256 3ae3b3b11371286e5640a7e8840c0e483584fe1a951a0f9901d7099a37f0650c

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp37-cp37m-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 d2b081de8ac828f32b4d0569480f458814d7f6e6ae0f2e03d567442062f44b1c
MD5 9e002d28850a9c0077538ae1a2d4f1d5
BLAKE2b-256 afcfd1a8112ed182a5607ef66c28f051c384845ba3f3a1d3900237b1c3fdf844

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 70bee1ecd33f9cc72ede3c28ea2f41111c36ae8ff8149b0361a9602a81671e5e
MD5 d1bdb83046039a2d4476b9321ced8986
BLAKE2b-256 b615eed8a272accdca429bf0b8d4e847f4a87cc353cef87458ac9809778d00b6

See more details on using hashes here.

File details

Details for the file regopy-0.3.10-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for regopy-0.3.10-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a8cb54019c3527cb626ffb4ff4817ae20f663f45a5a5b54da47ae3bcd9fa8627
MD5 9d1fe2bbaefc90448ddde36ab742fda5
BLAKE2b-256 e7d69d9bc3075fe53de2fbe2fcdf405a076539876b7aec30a31ee08861e6de8c

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