Skip to main content

Pycarlo - Monte Carlo's Python SDK

Installation

Requires Python 3.10 or greater. Normally you can install and update using pip. For instance:

virtualenv venv
. venv/bin/activate

pip install -U pycarlo

Overview

Pycarlo comprises two components: core and features.

All Monte Carlo API queries and mutations that you could execute via the API are supported via the core library. Operations can be executed as first class objects, using sgqlc, or as raw GQL with variables. In both cases, a consistent object where fields can be referenced by dot notation and the more pythonic snake_case is returned for ease of use.

The features library provides additional convenience for performing common operations like with dbt, circuit breaking, and pii filtering.

Note that credentials are required to use the SDK — either an API key or OAuth client credentials. See our docs on API authentication for details.

Basic usage

Core

from pycarlo.core import Client, Query, Mutation

# First create a client. This creates a session using the 'default' profile from
# '~/.mcd/profiles.ini'. This profile is created automatically via
# `montecarlo configure` on the CLI. See the session subsection for
# customizations, options and alternatives (e.g. using the environment, params,
# named profiles, etc.)
client = Client()

# Now you can can execute a query. For instance, getUser (selecting the email field).
# This would be like executing -
#     curl --location --request POST 'https://api.getmontecarlo.com/graphql' \
#     --header 'x-mcd-id: <ID>' \
#     --header 'x-mcd-token: <TOKEN>' \
#     --header 'Content-Type: application/json' \
#     --data-raw '{"query": "query {getUser {email}}"}'
# Notice how the CamelCase from the Graphql query is converted to snake_case in
# both the request and response.
query = Query()
query.get_user.__fields__('email')
print(client(query).get_user.email)

# You can also execute a query that requires variables. For instance,
# testTelnetConnection (selecting all fields).
query = Query()
query.test_telnet_connection(host='montecarlodata.com', port=443)
print(client(query))

# If necessary, you can always generate (e.g. print) the raw query that would be executed.
print(query)
# query {
#   testTelnetConnection(host: "montecarlodata.com", port: 443) {
#     success
#     validations {
#       type
#       message
#     }
#     warnings {
#       type
#       message
#     }
#   }
# }

# If you are not a fan of sgqlc operations (Query and Mutation) you can also execute any
# raw query using the client. For instance, if we want the first 10 tables from getTables.
get_table_query = """
query getTables{
  getTables(first: 10) {
    edges {
      node {
        fullTableId
      }
    }
  }
}
"""
response = client(get_table_query)
# This returns a Box object where fields can be accessed using dot notation.
# Notice how unlike with the API the response uses the more Pythonic snake_case.
for edge in response.get_tables.edges:
    print(edge.node.full_table_id)
# The response can still be processed as a standard dictionary.
print(response['get_tables']['edges'][0]['node']['full_table_id'])

# You can also execute any mutations too. For instance, generateCollectorTemplate
# (selecting the templateLaunchUrl).
mutation = Mutation()
mutation.generate_collector_template().dc.template_launch_url()
print(client(mutation))

# Any errors will raise a GqlError with details. For instance, executing above with an
# invalid region.
mutation = Mutation()
mutation.generate_collector_template(region='artemis')
print(client(mutation))
# pycarlo.common.errors.GqlError: [
#   {'message': 'Region "\'artemis\'" not currently active.'...
# ]

Examples

Circuit Breaker Example

from pycarlo.core import Client, Session
from pycarlo.features.circuit_breakers import CircuitBreakerService

# Example from our test.snowflake account.
endpoint = "https://api.dev.getmontecarlo.com/graphql"

service = CircuitBreakerService(
    mc_client=Client(Session(mcd_profile="test-snow", endpoint=endpoint)), print_func=print
)
in_breach = service.trigger_and_poll(rule_uuid="87872875-fe80-4963-8ab0-c04397a6daae")
print("That can't be good. Our warehouse is broken." if in_breach else "Go, go, go!.")

Insight Upload Example

from pathlib import Path

import boto3
import requests

from pycarlo.core import Client, Query

MC_CLIENT = Client()
S3_CLIENT = boto3.client("s3")


def upload_insights_to_s3(
    destination_bucket: str,
    desired_file_extension: str = ".csv",
) -> None:
    """
    Example function for listing all insights in an account, and uploading any available
    to S3 as a CSV.
    """
    list_insights_query = Query()
    list_insights_query.get_insights()
    for insight in MC_CLIENT(list_insights_query).get_insights:
        report_name = str(Path(insight.name).with_suffix(desired_file_extension))

        if insight.available:
            report_url_query = Query()
            report_url_query.get_report_url(insight_name=insight.name, report_name=report_name)
            report_url = MC_CLIENT(report_url_query).get_report_url.url

            print(f"Uploading {report_name} to {destination_bucket}.")
            S3_CLIENT.upload_fileobj(
                Fileobj=requests.get(url=report_url, stream=True).raw,
                Bucket=destination_bucket,
                Key=report_name,
            )


if __name__ == "__main__":
    upload_insights_to_s3(destination_bucket="<BUCKET-NAME>")

See Monte Carlo's API reference for all supported queries and mutations.

For details and additional examples on how to map (convert) GraphQL queries to sgqlc operations please refer to the sgqlc docs.

Features

You can use pydoc to retrieve documentation on any feature packages (pydoc pycarlo.features).

For instance for circuit breakers:

pydoc pycarlo.features.circuit_breakers.service

Session configuration

By default, when creating a client the default profile from ~/.mcd/profiles.ini is used. This file created via montecarlo configure on the CLI. See Monte Carlo's CLI reference for more details.

You can override this usage by creating a custom Session. For instance, if you want to pass the ID and Token:

from pycarlo.core import Client, Session

client = Client(session=Session(mcd_id='foo', mcd_token='bar'))

Sessions support the following params:

  • mcd_id: API Key ID.
  • mcd_token: API secret.
  • mcd_profile: Named profile containing credentials. This is created via the CLI (e.g. montecarlo configure --profile-name zeus).
  • mcd_config_path: Path to file containing credentials. Defaults to ~/.mcd/.

You can also specify the API Key, secret or profile name using the following environment variables:

  • MCD_DEFAULT_API_ID
  • MCD_DEFAULT_API_TOKEN
  • MCD_DEFAULT_PROFILE

When creating a session any explicitly passed mcd_id and mcd_token params take precedence, followed by environmental variables and then any config-file options.

Environment variables can be mixed with passed credentials, but not the config-file profile.

We do not recommend passing mcd_token as it is a secret and can be accidentally committed.

Authenticating with OAuth

Instead of an API key, you can authenticate with OAuth client credentials. Pass the OAuth client ID and secret along with your deployment's instance ID (e.g. us1, eu1):

from pycarlo.core import Client, Session

client = Client(session=Session(
    mcd_oauth_client_id='foo',
    mcd_oauth_client_secret='bar',
    mcd_instance_id='us1',
))

OAuth sessions support the following params:

  • mcd_oauth_client_id: OAuth client ID.
  • mcd_oauth_client_secret: OAuth client secret.
  • mcd_instance_id: Deployment instance ID (e.g. us1, eu1), required for OAuth. Found under Account Information → Instance ID in the app.
  • token_endpoint / oauth_api_endpoint: Optional overrides for the token and API endpoints (derived from the API endpoint automatically otherwise).

These can also be set via environment variables:

  • MCD_DEFAULT_OAUTH_CLIENT_ID
  • MCD_DEFAULT_OAUTH_CLIENT_SECRET
  • MCD_DEFAULT_INSTANCE_ID

or stored in a profile via montecarlo configure --oauth. The SDK requests a short-lived access token and refreshes it automatically. As with API keys, prefer a profile or environment variables over passing the secret directly.

Integration Gateway API

There are features that require the Integration Gateway API instead of the regular GraphQL Application API, for example Airflow Callbacks invoked by the airflow-mcd library.

To use the Gateway you need to initialize the Session object passing a scope parameter and then use make_request to invoke Gateway endpoints:

from pycarlo.core import Client, Session

client = Client(session=Session(mcd_id='foo', mcd_token='bar', scope='AirflowCallbacks'))
response = client.make_request(
  path='/airflow/callbacks', method='POST', body={}, timeout_in_seconds=20
)

Advanced configuration

The following values also be set by the environment:

  • MCD_VERBOSE_ERRORS: Enable logging. This includes a trace ID for each session and request.
  • MCD_API_ENDPOINT: Customize the endpoint where queries and mutations are executed.

Enum Backward Compatibility

Unlike the baseline sgqlc behavior, this SDK is designed to maintain backward compatibility when new enum values are added to the Monte Carlo API. If the API returns an enum value that doesn't exist in your SDK version, it will be returned as a string with a warning logged, rather than raising an error. This allows older SDK versions to continue working when new features are added.

To avoid warnings and ensure full feature support, keep your SDK updated to the latest version.

References

License

Apache 2.0 - See the Apache License 2.0 for more information.

Download files

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

Source Distribution

pycarlo-0.15.216.tar.gz (1.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pycarlo-0.15.216-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

File details

Details for the file pycarlo-0.15.216.tar.gz.

File metadata

  • Download URL: pycarlo-0.15.216.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/9.0.0 pkginfo/1.12.1.2 requests/2.34.2 requests-toolbelt/1.0.0 tqdm/4.70.0 CPython/3.10.21

File hashes

Hashes for pycarlo-0.15.216.tar.gz
Algorithm Hash digest
SHA256 51ba1385bd5db5d34dbfc737b6b7b42c8569d58f406b2075ab582c37d7b40a0e
MD5 04707f1a61b606a72face44e898eed58
BLAKE2b-256 06b6e0552ef7e32c3f9d414410cee4fae578e096b0deea63457e30f1590f2fd4

See more details on using hashes here.

File details

Details for the file pycarlo-0.15.216-py3-none-any.whl.

File metadata

  • Download URL: pycarlo-0.15.216-py3-none-any.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/9.0.0 pkginfo/1.12.1.2 requests/2.34.2 requests-toolbelt/1.0.0 tqdm/4.70.0 CPython/3.10.21

File hashes

Hashes for pycarlo-0.15.216-py3-none-any.whl
Algorithm Hash digest
SHA256 ee6f89e9e5f2eeebc6c2c95ddc980dc6754c79f0a58bb902d8a129d86fa98ece
MD5 36cd882b08449845591d348812f04648
BLAKE2b-256 7c20ca4547cbbc40be618d754520cebae3a67014e8fb3ed90b4fbc5cb39c100a

See more details on using hashes here.

Release history Release notifications | RSS feed

0.15.268

2 files

0.15.267

2 files

0.15.266

2 files

0.15.265

2 files

0.15.264

2 files

0.15.263

2 files

0.15.262

2 files

0.15.261

2 files

0.15.260

2 files

0.15.259

2 files

0.15.258

2 files

0.15.257

2 files

0.15.256

2 files

0.15.255

2 files

0.15.254

2 files

0.15.253

2 files

0.15.252

2 files

0.15.251

2 files

0.15.250

2 files

0.15.249

2 files

0.15.248

2 files

0.15.247

2 files

0.15.246

2 files

0.15.245

2 files

0.15.244

2 files

0.15.243

2 files

0.15.242

2 files

0.15.241

2 files

0.15.240

2 files

0.15.239

2 files

0.15.238

2 files

0.15.237

2 files

0.15.236

2 files

0.15.235

2 files

0.15.234

2 files

0.15.233

2 files

0.15.232

2 files

0.15.231

2 files

0.15.230

2 files

0.15.229

2 files

0.15.228

2 files

0.15.227

2 files

0.15.226

2 files

0.15.225

2 files

0.15.224

2 files

0.15.223

2 files

0.15.222

2 files

0.15.221

2 files

0.15.220

2 files

0.15.219

2 files

0.15.218

2 files

0.15.217

2 files

This release

0.15.216 This release

2 files

0.15.215

2 files

0.15.214

2 files

0.15.213

2 files

0.15.212

2 files

0.15.211

2 files

0.15.210

2 files

0.15.209

2 files

0.15.208

2 files

0.15.207

2 files

0.15.206

2 files

0.15.205

2 files

0.15.204

2 files

0.15.203

2 files

0.15.202

2 files

0.15.201

2 files

0.15.200

2 files

0.15.199

2 files

0.15.198

2 files

0.15.197

2 files

0.15.196

2 files

0.15.195

2 files

0.15.194

2 files

0.15.193

2 files

0.15.192

2 files

0.15.191

2 files

0.15.190

2 files

0.15.189

2 files

0.15.188

2 files

0.15.187

2 files

0.15.186

2 files

0.15.185

2 files

0.15.184

2 files

0.15.183

2 files

0.15.182

2 files

0.15.181

2 files

0.15.180

2 files

0.15.179

2 files

0.15.178

2 files

0.15.177

2 files

0.15.176

2 files

0.15.175

2 files

0.15.174

2 files

0.15.173

2 files

0.15.172

2 files

0.15.171

2 files

0.15.170

2 files

0.15.169

2 files

0.15.168

2 files

0.15.167

2 files

0.15.166

2 files

0.15.165

2 files

0.15.164

2 files

0.15.163

2 files

0.15.162

2 files

0.15.161

2 files

0.15.160

2 files

0.15.159

2 files

0.15.158

2 files

0.15.157

2 files

0.15.156

2 files

0.15.155

2 files

0.15.154

2 files

0.15.153

2 files

0.15.152

2 files

0.15.151

2 files

0.15.150

2 files

0.15.149

2 files

0.15.148

2 files

0.15.147

2 files

0.15.146

2 files

0.15.145

2 files

0.15.144

2 files

0.15.143

2 files

0.15.142

2 files

0.15.141

2 files

0.15.140

2 files

0.15.139

2 files

0.15.138

2 files

0.15.137

2 files

0.15.136

2 files

0.15.135

2 files

0.15.134

2 files

0.15.133

2 files

0.15.132

2 files

0.15.131

2 files

0.15.129

2 files

0.15.128

2 files

0.15.127

2 files

0.15.126

2 files

0.15.125

2 files

0.15.124

2 files

0.15.123

2 files

0.15.122

2 files

0.15.121

2 files

0.15.120

2 files

0.15.119

2 files

0.15.118

2 files

0.15.117

2 files

0.15.116

2 files

0.15.115

2 files

0.15.114

2 files

0.15.113

2 files

0.15.112

2 files

0.15.111

2 files

0.15.110

2 files

0.15.109

2 files

0.15.108

2 files

0.15.107

2 files

0.15.106

2 files

0.15.105

2 files

0.15.104

2 files

0.15.103

2 files

0.15.102

2 files

0.15.101

2 files

0.15.100

2 files

0.15.99

2 files

0.15.98

2 files

0.15.97

2 files

0.15.96

2 files

0.15.95

2 files

0.15.94

2 files

0.15.93

2 files

0.15.92

2 files

0.15.91

2 files

0.15.90

2 files

0.15.89

2 files

0.15.88

2 files

0.15.87

2 files

0.15.86

2 files

0.15.85

2 files

0.15.84

2 files

0.15.83

2 files

0.15.82

2 files

0.15.81

2 files

0.15.80

2 files

0.15.79

2 files

0.15.78

2 files

0.15.77

2 files

0.15.76

2 files

0.15.75

2 files

0.15.74

2 files

0.15.73

2 files

0.15.72

2 files

0.15.71

2 files

0.15.70

2 files

0.15.69

2 files

0.15.68

2 files

0.15.67

2 files

0.15.66

2 files

0.15.65

2 files

0.15.64

2 files

0.15.63

2 files

0.15.62

2 files

0.15.61

2 files

0.15.60

2 files

0.15.59

2 files

0.15.58

2 files

0.15.57

2 files

0.15.56

2 files

0.15.55

2 files

0.15.54

2 files

0.15.53

2 files

0.15.52

2 files

0.15.51

2 files

0.15.50

2 files

0.15.49

2 files

0.15.48

2 files

0.15.47

2 files

0.15.46

2 files

0.15.45

2 files

0.15.44

2 files

0.15.43

2 files

0.15.42

2 files

0.15.41

2 files

0.15.40

2 files

0.15.39

2 files

0.15.38

2 files

0.15.37

2 files

0.15.36

2 files

0.15.35

2 files

0.15.34

2 files

0.15.33

2 files

0.15.32

2 files

0.15.31

2 files

0.15.30

2 files

0.15.29

2 files

0.15.28

2 files

0.15.27

2 files

0.15.26

2 files

0.15.25

2 files

0.15.24

2 files

0.15.23

2 files

0.15.22

2 files

0.15.21

2 files

0.15.20

2 files

0.15.19

2 files

0.15.18

2 files

0.15.17

2 files

0.15.16

2 files

0.15.15

2 files

0.15.14

2 files

0.15.13

2 files

0.15.12

2 files

0.15.11

2 files

0.15.10

2 files

0.15.9

2 files

0.15.8

2 files

0.15.7

2 files

0.15.6

2 files

0.15.5

2 files

0.15.4

2 files

0.15.3

2 files

0.15.2

2 files

0.15.1

2 files

0.15.0

2 files

0.14.12

2 files

0.14.10

2 files

0.14.9

2 files

0.14.7

2 files

0.14.6

2 files

0.14.5

2 files

0.14.4

2 files

0.14.3

2 files

0.14.2

2 files

0.14.1

2 files

0.14.0

2 files

0.12.582

2 files

0.12.581

2 files

0.12.580

2 files

0.12.579

2 files

0.12.578

2 files

0.12.577

2 files

0.12.576

2 files

0.12.575

2 files

0.12.573

2 files

0.12.572

2 files

0.12.571

2 files

0.12.570

2 files

0.12.569

2 files

0.12.568

2 files

0.12.567

2 files

0.12.566

2 files

0.12.565

2 files

0.12.564

2 files

0.12.563

2 files

0.12.562

2 files

0.12.561

2 files

0.12.560

2 files

0.12.559

2 files

0.12.558

2 files

0.12.557

2 files

0.12.556

2 files

0.12.555

2 files

0.12.554

2 files

0.12.553

2 files

0.12.552

2 files

0.12.551

2 files

0.12.550

2 files

0.12.549

2 files

0.12.548

2 files

0.12.547

2 files

0.12.546

2 files

0.12.545

2 files

0.12.544

2 files

0.12.543

2 files

0.12.542

2 files

0.12.541

2 files

0.12.540

2 files

0.12.539

2 files

0.12.538

2 files

0.12.537

2 files

0.12.536

2 files

0.12.535

2 files

0.12.534

2 files

0.12.533

2 files

0.12.532

2 files

0.12.531

2 files

0.12.530

2 files

0.12.529

2 files

0.12.528

2 files

0.12.527

2 files

0.12.526

2 files

0.12.525

2 files

0.12.524

2 files

0.12.523

2 files

0.12.522

2 files

0.12.521

2 files

0.12.520

2 files

0.12.519

2 files

0.12.518

2 files

0.12.517

2 files

0.12.516

2 files

0.12.515

2 files

0.12.514

2 files

0.12.513

2 files

0.12.512

2 files

0.12.511

2 files

0.12.510

2 files

0.12.509

2 files

0.12.508

2 files

0.12.507

2 files

0.12.506

2 files

0.12.505

2 files

0.12.504

2 files

0.12.503

2 files

0.12.502

2 files

0.12.501

2 files

0.12.500

2 files

0.12.499

2 files

0.12.498

2 files

0.12.497

2 files

0.12.496

2 files

0.12.495

2 files

0.12.494

2 files

0.12.493

2 files

0.12.492

2 files

0.12.491

2 files

0.12.490

2 files

0.12.489

2 files

0.12.488

2 files

0.12.487

2 files

0.12.486

2 files

0.12.485

2 files

0.12.484

2 files

0.12.483

2 files

0.12.482

2 files

0.12.481

2 files

0.12.480

2 files

0.12.479

2 files

0.12.478

2 files

0.12.477

2 files

0.12.476

2 files

0.12.475

2 files

0.12.474

2 files

0.12.473

2 files

0.12.472

2 files

0.12.471

2 files

0.12.470

2 files

0.12.469

2 files

0.12.468

2 files

0.12.467

2 files

0.12.466

2 files

0.12.465

2 files

0.12.464

2 files

0.12.463

2 files

0.12.462

2 files

0.12.461

2 files

0.12.460

2 files

0.12.459

2 files

0.12.458

2 files

0.12.457

2 files

0.12.456

2 files

0.12.455

2 files

0.12.454

2 files

0.12.453

2 files

0.12.452

2 files

0.12.451

2 files

0.12.450

2 files

0.12.449

2 files

0.12.448

2 files

0.12.447

2 files

0.12.446

2 files

0.12.445

2 files

0.12.444

2 files

0.12.443

2 files

0.12.442

2 files

0.12.441

2 files

0.12.440

2 files

0.12.439

2 files

0.12.438

2 files

0.12.437

2 files

0.12.436

2 files

0.12.435

2 files

0.12.434

2 files

0.12.433

2 files

0.12.432

2 files

0.12.431

2 files

0.12.430

2 files

0.12.429

2 files

0.12.428

2 files

0.12.427

2 files

0.12.426

2 files

0.12.425

2 files

0.12.424

2 files

0.12.423

2 files

0.12.422

2 files

0.12.421

2 files

0.12.420

2 files

0.12.419

2 files

0.12.418

2 files

0.12.417

2 files

0.12.416

2 files

0.12.415

2 files

0.12.414

2 files

0.12.413

2 files

0.12.412

2 files

0.12.411

2 files

0.12.410

2 files

0.12.409

2 files

0.12.408

2 files

0.12.407

2 files

0.12.406

2 files

0.12.405

2 files

0.12.404

2 files

0.12.403

2 files

0.12.402

2 files

0.12.401

2 files

0.12.400

2 files

0.12.399

2 files

0.12.398

2 files

0.12.397

2 files

0.12.396

2 files

0.12.395

2 files

0.12.394

2 files

0.12.393

2 files

0.12.392

2 files

0.12.391

2 files

0.12.390

2 files

0.12.389

2 files

0.12.388

2 files

0.12.387

2 files

0.12.386

2 files

0.12.385

2 files

0.12.384

2 files

0.12.383

2 files

0.12.382

2 files

0.12.381

2 files

0.12.380

2 files

0.12.379

2 files

0.12.378

2 files

0.12.377

2 files

0.12.376

2 files

0.12.375

2 files

0.12.374

2 files

0.12.373

2 files

0.12.372

2 files

0.12.371

2 files

0.12.370

2 files

0.12.369

2 files

0.12.368

2 files

0.12.367

2 files

0.12.366

2 files

0.12.365

2 files

0.12.364

2 files

0.12.363

2 files

0.12.362

2 files

0.12.361

2 files

0.12.360

2 files

0.12.359

2 files

0.12.358

2 files

0.12.357

2 files

0.12.356

2 files

0.12.355

2 files

0.12.354

2 files

0.12.353

2 files

0.12.351

2 files

0.12.350

2 files

0.12.349

2 files

0.12.348

2 files

0.12.347

2 files

0.12.346

2 files

0.12.345

2 files

0.12.344

2 files

0.12.343

2 files

0.12.342

2 files

0.12.341

2 files

0.12.340

2 files

0.12.339

2 files

0.12.338

2 files

0.12.337

2 files

0.12.336

2 files

0.12.335

2 files

0.12.334

2 files

0.12.333

2 files

0.12.332

2 files

0.12.331

2 files

0.12.330

2 files

0.12.329

2 files

0.12.328

2 files

0.12.327

2 files

0.12.326

2 files

0.12.325

2 files

0.12.324

2 files

0.12.323

2 files

0.12.322

2 files

0.12.321

2 files

0.12.320

2 files

0.12.319

2 files

0.12.318

2 files

0.12.317

2 files

0.12.316

2 files

0.12.315

2 files

0.12.314

2 files

0.12.313

2 files

0.12.312

2 files

0.12.311

2 files

0.12.310

2 files

0.12.309

2 files

0.12.308

2 files

0.12.307

2 files

0.12.306

2 files

0.12.305

2 files

0.12.304

2 files

0.12.303

2 files

0.12.302

2 files

0.12.301

2 files

0.12.300

2 files

0.12.299

2 files

0.12.298

2 files

0.12.297

2 files

0.12.296

2 files

0.12.295

2 files

0.12.294

2 files

0.12.293

2 files

0.12.292

2 files

0.12.291

2 files

0.12.290

2 files

0.12.289

2 files

0.12.288

2 files

0.12.287

2 files

0.12.286

2 files

0.12.285

2 files

0.12.284

2 files

0.12.283

2 files

0.12.282

2 files

0.12.281

2 files

0.12.280

2 files

0.12.279

2 files

0.12.278

2 files

0.12.277

2 files

0.12.276

2 files

0.12.275

2 files

0.12.274

2 files

0.12.273

2 files

0.12.272

2 files

0.12.271

2 files

0.12.270

2 files

0.12.269

2 files

0.12.268

2 files

0.12.267

2 files

0.12.266

2 files

0.12.265

2 files

0.12.264

2 files

0.12.263

2 files

0.12.262

2 files

0.12.261

2 files

0.12.260

2 files

0.12.259

2 files

0.12.258

2 files

0.12.257

2 files

0.12.256

2 files

0.12.255

2 files

0.12.254

2 files

0.12.253

2 files

0.12.252

2 files

0.12.251

2 files

0.12.250

2 files

0.12.249

2 files

0.12.248

2 files

0.12.247

2 files

0.12.246

2 files

0.12.245

2 files

0.12.244

2 files

0.12.243

2 files

0.12.242

2 files

0.12.241

2 files

0.12.240

2 files

0.12.239

2 files

0.12.238

2 files

0.12.237

2 files

0.12.236

2 files

0.12.235

2 files

0.12.234

2 files

0.12.233

2 files

0.12.232

2 files

0.12.231

2 files

0.12.230

2 files

0.12.229

2 files

0.12.228

2 files

0.12.227

2 files

0.12.226

2 files

0.12.225

2 files

0.12.224

2 files

0.12.223

2 files

0.12.222

2 files

0.12.221

2 files

0.12.220

2 files

0.12.219

2 files

0.12.218

2 files

0.12.217

2 files

0.12.216

2 files

0.12.215

2 files

0.12.214

2 files

0.12.213

2 files

0.12.212

2 files

0.12.211

2 files

0.12.210

2 files

0.12.209

2 files

0.12.208

2 files

0.12.207

2 files

0.12.206

2 files

0.12.205

2 files

0.12.204

2 files

0.12.203

2 files

0.12.202

2 files

0.12.201

2 files

0.12.200

2 files

0.12.199

2 files

0.12.198

2 files

0.12.197

2 files

0.12.196

2 files

0.12.195

2 files

0.12.194

2 files

0.12.193

2 files

0.12.192

2 files

0.12.191

2 files

0.12.190

2 files

0.12.189

2 files

0.12.188

2 files

0.12.187

2 files

0.12.186

2 files

0.12.185

2 files

0.12.184

2 files

0.12.183

2 files

0.12.182

2 files

0.12.181

2 files

0.12.180

2 files

0.12.179

2 files

0.12.178

2 files

0.12.177

2 files

0.12.176

2 files

0.12.175

2 files

0.12.174

2 files

0.12.173

2 files

0.12.172

2 files

0.12.171

2 files

0.12.170

2 files

0.12.168

2 files

0.12.167

2 files

0.12.166

2 files

0.12.165

2 files

0.12.164

2 files

0.12.163

2 files

0.12.162

2 files

0.12.161

2 files

0.12.160

2 files

0.12.159

2 files

0.12.158

2 files

0.12.157

2 files

0.12.156

2 files

0.12.155

2 files

0.12.154

2 files

0.12.153

2 files

0.12.152

2 files

0.12.151

2 files

0.12.150

2 files

0.12.149

2 files

0.12.148

2 files

0.12.147

2 files

0.12.146

2 files

0.12.145

2 files

0.12.144

2 files

0.12.143

2 files

0.12.142

2 files

0.12.141

2 files

0.12.140

2 files

0.12.139

2 files

0.12.138

2 files

0.12.137

2 files

0.12.136

2 files

0.12.135

2 files

0.12.134

2 files

0.12.133

2 files

0.12.132

2 files

0.12.131

2 files

0.12.130

2 files

0.12.129

2 files

0.12.128

2 files

0.12.127

2 files

0.12.126

2 files

0.12.125

2 files

0.12.124

2 files

0.12.123

2 files

0.12.122

2 files

0.12.121

2 files

0.12.120

2 files

0.12.119

2 files

0.12.118

2 files

0.12.117

2 files

0.12.116

2 files

0.12.115

2 files

0.12.114

2 files

0.12.113

2 files

0.12.112

2 files

0.12.111

2 files

0.12.110

2 files

0.12.109

2 files

0.12.108

2 files

0.12.107

2 files

0.12.106

2 files

0.12.105

2 files

0.12.104

2 files

0.12.103

2 files

0.12.102

2 files

0.12.101

2 files

0.12.100

2 files

0.12.99

2 files

0.12.98

2 files

0.12.97

2 files

0.12.96

2 files

0.12.95

2 files

0.12.94

2 files

0.12.93

2 files

0.12.92

2 files

0.12.91

2 files

0.12.90

2 files

0.12.89

2 files

0.12.88

2 files

0.12.87

2 files

0.12.86

2 files

0.12.85

2 files

0.12.84

2 files

0.12.83

2 files

0.12.82

2 files

0.12.81

2 files

0.12.80

2 files

0.12.79

2 files

0.12.78

2 files

0.12.77

2 files

0.12.76

2 files

0.12.75

2 files

0.12.74

2 files

0.12.73

2 files

0.12.72

2 files

0.12.71

2 files

0.12.70

2 files

0.12.69

2 files

0.12.68

2 files

0.12.67

2 files

0.12.66

2 files

0.12.65

2 files

0.12.64

2 files

0.12.63

2 files

0.12.62

2 files

0.12.61

2 files

0.12.60

2 files

0.12.59

2 files

0.12.58

2 files

0.12.57

2 files

0.12.56

2 files

0.12.55

2 files

0.12.54

2 files

0.12.53

2 files

0.12.52

2 files

0.12.51

2 files

0.12.50

2 files

0.12.49

2 files

0.12.48

2 files

0.12.47

2 files

0.12.46

2 files

0.12.45

2 files

0.12.44

2 files

0.12.43

2 files

0.12.42

2 files

0.12.41

2 files

0.12.40

2 files

0.12.39

2 files

0.12.38

2 files

0.12.37

2 files

0.12.36

2 files

0.12.35

2 files

0.12.34

2 files

0.12.33

2 files

0.12.32

2 files

0.12.31

2 files

0.12.30

2 files

0.12.29

2 files

0.12.28

2 files

0.12.27

2 files

0.12.26

2 files

0.12.25

2 files

0.12.24

2 files

0.12.23

2 files

0.12.22

2 files

0.12.21

2 files

0.12.20

2 files

0.12.19

2 files

0.12.18

2 files

0.12.17

2 files

0.12.16

2 files

0.12.15

2 files

0.12.14

2 files

0.12.13

2 files

0.12.12

2 files

0.12.11

2 files

0.12.10

2 files

0.12.9

2 files

0.12.8

2 files

0.12.7

2 files

0.12.6

2 files

0.12.5

2 files

0.12.4

2 files

0.12.3

2 files

0.12.2

2 files

0.12.1

2 files

0.11.28

2 files

0.11.27

2 files

0.11.26

2 files

0.11.25

2 files

0.11.24

2 files

0.11.23

2 files

0.11.22

2 files

0.11.21

2 files

0.11.20

2 files

0.11.19

2 files

0.11.18

2 files

0.11.17

2 files

0.11.16

2 files

0.11.15

2 files

0.11.14

2 files

0.11.13

2 files

0.11.12

2 files

0.11.11

2 files

0.11.10

2 files

0.11.9

2 files

0.11.8

2 files

0.11.7

2 files

0.11.6

2 files

0.11.5

2 files

0.11.4

2 files

0.11.3

2 files

0.11.2

2 files

0.11.1

2 files

0.11.0

2 files

0.10.235

2 files

0.10.234

2 files

0.10.233

2 files

0.10.232

2 files

0.10.231

2 files

0.10.230

2 files

0.10.229

2 files

0.10.228

2 files

0.10.227

2 files

0.10.226

2 files

0.10.225

2 files

0.10.224

2 files

0.10.223

2 files

0.10.222

2 files

0.10.221

2 files

0.10.220

2 files

0.10.219

2 files

0.10.218

2 files

0.10.217

2 files

0.10.216

2 files

0.10.215

2 files

0.10.214

2 files

0.10.213

2 files

0.10.212

2 files

0.10.211

2 files

0.10.210

2 files

0.10.209

2 files

0.10.208

2 files

0.10.207

2 files

0.10.206

2 files

0.10.205

2 files

0.10.204

2 files

0.10.203

2 files

0.10.202

2 files

0.10.201

2 files

0.10.200

2 files

0.10.199

2 files

0.10.198

2 files

0.10.197

2 files

0.10.196

2 files

0.10.195

2 files

0.10.194

2 files

0.10.193

2 files

0.10.192

2 files

0.10.191

2 files

0.10.190

2 files

0.10.189

2 files

0.10.188

2 files

0.10.187

2 files

0.10.186

2 files

0.10.185

2 files

0.10.184

2 files

0.10.183

2 files

0.10.182

2 files

0.10.181

2 files

0.10.180

2 files

0.10.179

2 files

0.10.178

2 files

0.10.177

2 files

0.10.176

2 files

0.10.175

2 files

0.10.174

2 files

0.10.173

2 files

0.10.172

2 files

0.10.171

2 files

0.10.170

2 files

0.10.169

2 files

0.10.168

2 files

0.10.167

2 files

0.10.166

2 files

0.10.165

2 files

0.10.164

2 files

0.10.163

2 files

0.10.162

2 files

0.10.161

2 files

0.10.160

2 files

0.10.159

2 files

0.10.158

2 files

0.10.157

2 files

0.10.156

2 files

0.10.155

2 files

0.10.154

2 files

0.10.153

2 files

0.10.152

2 files

0.10.151

2 files

0.10.150

2 files

0.10.149

2 files

0.10.148

2 files

0.10.147

2 files

0.10.146

2 files

0.10.145

2 files

0.10.144

2 files

0.10.143

2 files

0.10.142

2 files

0.10.141

2 files

0.10.140

2 files

0.10.139

2 files

0.10.138

2 files

0.10.137

2 files

0.10.136

2 files

0.10.135

2 files

0.10.134

2 files

0.10.133

2 files

0.10.132

2 files

0.10.131

2 files

0.10.130

2 files

0.10.129

2 files

0.10.128

2 files

0.10.127

2 files

0.10.126

2 files

0.10.125

2 files

0.10.124

2 files

0.10.123

2 files

0.10.122

2 files

0.10.121

2 files

0.10.120

2 files

0.10.119

2 files

0.10.118

2 files

0.10.117

2 files

0.10.116

2 files

0.10.115

2 files

0.10.114

2 files

0.10.113

2 files

0.10.112

2 files

0.10.111

2 files

0.10.110

2 files

0.10.109

2 files

0.10.108

2 files

0.10.107

2 files

0.10.106

2 files

0.10.105

2 files

0.10.104

2 files

0.10.103

2 files

0.10.102

2 files

0.10.101

2 files

0.10.100

2 files

0.10.99

2 files

0.10.98

2 files

0.10.97

2 files

0.10.96

2 files

0.10.95

2 files

0.10.94

2 files

0.10.93

2 files

0.10.92

2 files

0.10.91

2 files

0.10.90

2 files

0.10.89

2 files

0.10.88

2 files

0.10.87

2 files

0.10.86

2 files

0.10.85

2 files

0.10.84

2 files

0.10.83

2 files

0.10.82

2 files

0.10.81

2 files

0.10.80

2 files

0.10.79

2 files

0.10.78

2 files

0.10.77

2 files

0.10.76

2 files

0.10.75

2 files

0.10.74

2 files

0.10.73

2 files

0.10.72

2 files

0.10.71

2 files

0.10.70

2 files

0.10.69

2 files

0.10.68

2 files

0.10.67

2 files

0.10.66

2 files

0.10.65

2 files

0.10.64

2 files

0.10.63

2 files

0.10.62

2 files

0.10.61

2 files

0.10.60

2 files

0.10.59

2 files

0.10.58

2 files

0.10.57

2 files

0.10.56

2 files

0.10.55

2 files

0.10.54

2 files

0.10.53

2 files

0.10.52

2 files

0.10.51

2 files

0.10.50

2 files

0.10.49

2 files

0.10.48

2 files

0.10.47

2 files

0.10.46

2 files

0.10.45

2 files

0.10.44

2 files

0.10.43

2 files

0.10.42

2 files

0.10.41

2 files

0.10.40

2 files

0.10.39

2 files

0.10.38

2 files

0.10.37

2 files

0.10.36

2 files

0.10.35

2 files

0.10.34

2 files

0.10.33

2 files

0.10.32

2 files

0.10.31

2 files

0.10.30

2 files

0.10.29

2 files

0.10.28

2 files

0.10.27

2 files

0.10.26

2 files

0.10.25

2 files

0.10.24

2 files

0.10.23

2 files

0.10.22

2 files

0.10.21

2 files

0.10.20

2 files

0.10.19

2 files

0.10.18

2 files

0.10.17

2 files

0.10.16

2 files

0.10.15

2 files

0.10.14

2 files

0.10.13

2 files

0.10.12

2 files

0.10.11

2 files

0.10.10

2 files

0.10.9

2 files

0.10.8

2 files

0.10.7

2 files

0.10.6

2 files

0.10.5

2 files

0.10.4

2 files

0.10.3

2 files

0.10.2

2 files

0.10.1

2 files

0.10.0

2 files

0.9.15

2 files

0.9.14

2 files

0.9.13

2 files

0.9.12

2 files

0.9.11

2 files

0.9.10

2 files

0.9.9

2 files

0.9.8

2 files

0.9.7

2 files

0.9.6

2 files

0.9.5

2 files

0.9.4

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

2 files

0.8.15

2 files

0.8.14

2 files

0.8.13

2 files

0.8.12

2 files

0.8.11

2 files

0.8.10

2 files

0.8.9

2 files

0.8.8

2 files

0.8.7

2 files

0.8.6

2 files

0.8.5

2 files

0.8.4

2 files

0.8.3

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.7

2 files

0.7.6

2 files

0.7.5

2 files

0.7.4

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.1

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.1

2 files

0.3.0

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.11

2 files

0.0.10

2 files

0.0.9

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page