Skip to main content

An easy way to mock Snowflake connections in Python!

Project description

asbestos

An easy way to mock Snowflake connections in Python!

What is this?

asbestos is a library for Python 3.9+ to allow easy mocking of Snowflake calls during local development or testing to save on costs and time. The docs have more information, but here's a quick example:

from asbestos import asbestos_cursor, config as asbestos_config


def snowflake_cursor() -> SnowflakeCursor | AsbestosCursor:
    # Use a flag to decide whether it returns the test cursor
    # or the real thing
    if settings.ENABLE_ASBESTOS:
        return asbestos_cursor()
    return snowflake_connection().cursor(DictCursor)


asbestos_config.register(
    query="your sql goes %s",
    data=("here",),
    response={"It's a": "response!"}
)

with snowflake_cursor() as cursor:
    cursor.execute("your sql goes %s", ('here',))
    assert cursor.fetchall() == {"It's a": "response!"}

asbestos is not a 1:1 mocking of the full Snowflake API, but includes synchronous and async query mocking that handle most use cases. Check out some fun things you can do with it here!

Installation:

poetry add asbestos

Docs

Check out the documentation here!

To work on the docs locally, ensure that your python3 version is up-to-date (pyenv is a great way of managing this) and run make docs. This will create a dedicated documentation environment and serve the docs locally for testing. To remove the environment, run make docs_clean.

Development

asbestos uses pre-commit to help us keep the repo clean. To get started, make sure you have poetry installed and follow these steps:

  • clone the respository:
    • git clone git@github.com:SpotOnInc/asbestos.git (preferred)
    • OR git clone https://github.com/SpotOnInc/asbestos
  • poetry install
  • poetry shell
  • pre-commit install

After that, you're ready to go!

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

asbestos-1.6.1.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

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

asbestos-1.6.1-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file asbestos-1.6.1.tar.gz.

File metadata

  • Download URL: asbestos-1.6.1.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.12.3 Linux/6.8.0-1021-azure

File hashes

Hashes for asbestos-1.6.1.tar.gz
Algorithm Hash digest
SHA256 7d9a34445eb86c3049f93c481131f3e3525d4b900cbdf0839c239e0d192d713f
MD5 95161ce927395f51a8754f1c0e1df9cb
BLAKE2b-256 b98e7ea4ffdfd4e858d59a2fc0d6f5625e381dc5ba0f9a0afe346da49fc3fdb2

See more details on using hashes here.

File details

Details for the file asbestos-1.6.1-py3-none-any.whl.

File metadata

  • Download URL: asbestos-1.6.1-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.12.3 Linux/6.8.0-1021-azure

File hashes

Hashes for asbestos-1.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c48a4977ffbf2df704ec748d2598ed7613122baeeca2bda23e8fef36e3abbd19
MD5 e6ae6c9d3f2512568b58d922e13c6661
BLAKE2b-256 d460436da77c16e44796af50de0cbd0b4d2170527695ee37f13ef40c74d3d224

See more details on using hashes here.

Supported by

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