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.


🤝 Contributing

Contributions are welcome! To contribute, follow these steps:

  1. Fork the repository.
  2. Create a new branch (feature/new-feature).
  3. Commit your changes.
  4. Push to your fork and submit a pull request.

For major changes, please open an issue first to discuss what you would like to change.


📜 License

This project is licensed under the MIT License.


👤 Author

Developed by [Your Name or Organization]. 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.4.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.4-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: snowforge_package-0.2.4.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.4.tar.gz
Algorithm Hash digest
SHA256 7d69b0f050b723d164f8a6b273a31bb93bbc5e4f0979ce9254e7192a1a6b7d44
MD5 3c230a1a8009f8938bf4c693d0450494
BLAKE2b-256 80a82e7dd5f55f174a97aa2bda4496799f71973cef1cd9b004d294ad36a2a867

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for snowforge_package-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 639620c20c33bedd9cca4e987790e2b62ffc4440948adddfe22038074a011265
MD5 89328e10e66fcdb7788a82e7593ee19c
BLAKE2b-256 c2d8ab38f3379fbdd7ccc5f0d2fd6028d73ec7ef354f811aafbf1b62d9dba00d

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