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.6.tar.gz (11.8 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.6-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: snowforge_package-0.2.6.tar.gz
  • Upload date:
  • Size: 11.8 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.6.tar.gz
Algorithm Hash digest
SHA256 65c3a3f635ce66347066ad107f8a1effb6c1311130439dc758321f032e9a0ba3
MD5 e8141105270d78f75c9380b31169ec02
BLAKE2b-256 1404dc04e68d72582b6ea0ed1bf81e18f358aa07af14b244f635c0064cd498d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowforge_package-0.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 db479c717ec26a622cc3cc2def4fcd7244dd4074fb62a7221881d04113bde627
MD5 7682758a780286489d5d6ca07ce0a3b1
BLAKE2b-256 68728817ccc71444cb66f50c4b53cfc57e19c01a5608de623e6ab8869980275a

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