Skip to main content

A Python package for supporting migration from on-prem to cloud

Project description

🚀 Snowforge - Powerful Data Integration

Snowforge is a Python package designed to streamline data integration and transfer between AWS, Snowflake, and various on-premise database systems. It provides efficient data extraction, logging, configuration management, and AWS utilities to support robust data engineering workflows.


✨ Features

  • AWS Integration: Manage AWS S3 and Secrets Manager operations.
  • Snowflake Connection: Establish and manage Snowflake connections effortlessly.
  • Advanced Logging: Centralized logging system with colored output for better visibility.
  • Configuration Management: Load and manage credentials from a TOML configuration file.
  • Data Mover Engine: Parallel data processing and extraction strategies for efficiency.
  • Extensible Database Extraction: Uses a strategy pattern to support multiple on-prem database systems (e.g., Netezza, Oracle, PostgreSQL, etc.).

📥 Installation

Install Snowforge using pip:

pip install snowforge

⚙️ Configuration

Snowforge requires a configuration file (snowforge_config.toml) to manage credentials for AWS and Snowflake. The package searches for the config file in the following locations:

  1. Path specified in SNOWFORGE_CONFIG_PATH environment variable.
  2. Current working directory.
  3. ~/.config/snowforge_config.toml
  4. Package directory.

Example snowforge_config.toml File

[AWS]
[default]
AWS_ACCESS_KEY = "your-access-key"
AWS_SECRET_KEY = "your-secret-key"
REGION = "us-east-1"

[SNOWFLAKE]
[default]
USERNAME = "your-username"
ACCOUNT = "your-account"

🚀 Quick Start

🔹 Initialize AWS Integration

from snowforge.AWSIntegration import AWSIntegration

AWSIntegration.initialize(profile="default", verbose=True)

🔹 Connect to Snowflake

from snowforge.SnowflakeConnect import SnowflakeConnection

conn = SnowflakeConnection.establish_connection(user_name="your-user", account="your-account")

🔹 Use Logging

from snowforge.Logging import Debug

Debug.log("This is an info message", level='INFO')
Debug.log("This is an error message", level='ERROR')

🔹 Extract Data from an On-Prem Database

from snowforge.Extractors.NetezzaExtractor import NetezzaExtractor

extractor = NetezzaExtractor()
query = extractor.extract_table_query("database.schema.table_name", "date_column", "01.01.2024")
print(query)

Since Snowforge follows a strategy pattern, it can be easily extended to support other on-prem database systems by implementing new extractor classes that conform to the ExtractorStrategy interface.


📜 License

This project is licensed under the MIT License.


👤 Author

Developed by andreasheggelund@gmail.com. Feel free to reach out for support, suggestions, or collaboration!

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

snowforge_package-0.2.5.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

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

snowforge_package-0.2.5-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file snowforge_package-0.2.5.tar.gz.

File metadata

  • Download URL: snowforge_package-0.2.5.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for snowforge_package-0.2.5.tar.gz
Algorithm Hash digest
SHA256 ddd84b54a8efd4ec727c12058d9da2f4d2aae28dde9f67510dd9b53981357ae4
MD5 abe0434b55a9af123a814031e8a57e25
BLAKE2b-256 4969fb99ad4555db146fa78b3af7bf4c4278b9115635949723154442e506e453

See more details on using hashes here.

File details

Details for the file snowforge_package-0.2.5-py3-none-any.whl.

File metadata

File hashes

Hashes for snowforge_package-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 bcfa0e30f5e2fd8ac47c994a7541ed747d6773bf9b335043cb69fb19d4d9ad16
MD5 6397bc0bbc95bad49487ad951c231014
BLAKE2b-256 372787446e50e8ebca143fc2e0db82c665628dd20099b41e8730e58f8388798c

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