Skip to main content

Pumpwood Miscellaneous

Pumpwood miscellaneous functions and classes.

pumpwood-miscellaneous .


Pumpwood is a native brasilian tree which has a symbiotic relation with ants (Murabei)

Description

This is a module with miscellaneous functions and classes used in Pumpwood System. These helps from adjusting static file provider (AWS S3, Google Bucket, Azure blob), connect, read and publish messages in RabbitMQ, and other functionalities.

pumpwood_miscellaneous.database

Functions to help connect and build SQLAlchemy query strings.

SQLAlchemyPostGres

Class to substitute SQLAlchemy/Flask database, it integrates with Pumpwood Communication pumpJsonDump that serilize complex objects like shapely BaseGeometry, pandas dataframes and Numpy arrays. It also requery a pre_ping request for each query, invalidating not functional connections.

from flask import Flask, jsonify
from pumpwood_miscellaneous.models import FlaskPumpWoodBaseModel
from pumpwood_communication.serializers import PumpWoodJSONEncoder


db = SQLAlchemyPostGres(model_class=FlaskPumpWoodBaseModel)


def create_app(config_dict, test=False):
    """Create and return app."""
    app = Flask(__name__)
    app.json_encoder = PumpWoodJSONEncoder

    db.app = app
    db.init_app(app)

pumpwood_miscellaneous.models

Class and function to help definition of flask models.

FlaskPumpWoodBaseModel

Add a default a BigInteger field id for all models.

pumpwood_miscellaneous.query

Convert dictionary payload to a SQLAlchemy query. Make similar query to Django filter, exclude and order_by ORM API.

from models import User
from pumpwood_miscellaneous.query import SqlalchemyQueryMisc

query_result = SqlalchemyQueryMisc.sqlalchemy_kward_query(
    object_model=User,
    filter_dict={
        "name__icontains": "Jonh",
        "age__gte": 30
    },
    exclude_dict={
      "company__in": ["Murabei", "Data Random Corp"]
    },
    order_by=["name", "-age"]
).limit(50).all()

pumpwood_miscellaneous.rabbitmq

Manage connections with rabbitmq.

PumpWoodRabbitMQ

Help sending msg to RabbitMQ queues, it is possible to "lazy" set constructor variables using init function. Send function uses PumpWoodJSONEncoder, making it possible to send complex objects as msg payload.

from pumpwood_miscellaneous.rabbitmq import PumpWoodRabbitMQ

not_lazy_worker = PumpWoodRabbitMQ(
  queue="some-queue",
  username="some-user",
  password="with-a-strong-pass"
  host="1.2.3.4"
  port=5672)
not_lazy_worker.send({
    "pandas": pd.DataFrame({
        "process_data": [1, 2, 3, 4],
        "time": pd.to_datatime([
            "2021-01-01", "2021-02-01", "2021-03-01", "2021-04-01"])
      }),
    "ok": "so-ok"})

lazy_worker = PumpWoodRabbitMQ()
lazy_worker.init(
  queue="some-queue",
  username="some-user",
  password="with-a-strong-pass"
  host="1.2.3.4"
  port=5672
)

pumpwood_miscellaneous.storage

Make the interaction with different storage backends using the same API. So far Google bucket and AWS S3 were implemented.

PumpWoodStorage

from pumpwood_miscellaneous.storage import PumpWoodStorage

storage_google = PumpWoodStorage(
  storage_type="google_bucket",
  base_path="base_path/for/files/"
  bucket_name="some_bucket")

file_data = storage_google.read_file("file_path/file.joblib")
self.storage_google.delete_file("file_path/file.joblib")


storage_google = PumpWoodStorage(
  storage_type="aws_s3",
  base_path="base_path/for/files/"
  bucket_name="some_s3")

file_data = storage_google.read_file("file_path/file_2.joblib")
self.storage_google.delete_file("file_path/file_2.joblib")

allowed_extension

Check if file extension is in a list.

allowed_extension(
    filename="file.xlsx", allowed_extensions=["xls", "xlsx", "parquet"],
    exception=Exception)

Metadata

Release files for pumpwood-miscellaneous 1.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pumpwood-miscellaneous 1.1.7
File Size Uploaded
pumpwood_miscellaneous-1.1.7.tar.gz 19.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pumpwood-miscellaneous 1.1.7
File Interpreter ABI Platform
pumpwood_miscellaneous-1.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 43.8 kB

Release files / pumpwood_miscellaneous-1.1.7.tar.gz

Download URL pumpwood_miscellaneous-1.1.7.tar.gz
Size 19.2 kB
Tags Source
SHA-256 checksum
How to use checksums
0aa8cbd6d0277955ce45b71f1fc13d528bb07ab0d2120cc6015151bc2a0ce7fd
BLAKE2b-256 checksum
How to use checksums
022e1ce8778f86f22b557e10b6f972d5018759eaec9104d22257ade28ca244f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.12.13 Linux/6.17.0-1020-azure

Release files / pumpwood_miscellaneous-1.1.7-py3-none-any.whl

Download URL pumpwood_miscellaneous-1.1.7-py3-none-any.whl
Size 24.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
72ac207c6a10fba470852310f0a10a5f680d7f0deaf32b4b0465be723490479f
BLAKE2b-256 checksum
How to use checksums
c545d125a164497668482cc276ac8d1056b6429f1415f539267583637510e700
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.12.13 Linux/6.17.0-1020-azure

Release history Release notifications | RSS feed

This release

1.1.7 This release

2 release files

1.1.5

2 release 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