Skip to main content

BRIBrain Standardization Code

Project description

๐Ÿ“ฆ BRIBrain

Python Version PyPI version License

BRIBrain adalah Python package standar yang digunakan sebagai library untuk proses data engineering di Departemen BRIBrain. Package ini menyediakan berbagai modul untuk konfigurasi Spark, ingestion data, penulisan data ke berbagai target (Hive, PostgreSQL, MySQL, HDFS, Excel), utility functions, metadata, dan notifikasi via Telegram.


๐Ÿ“‹ Daftar Isi


๐Ÿš€ Instalasi

Gunakan package manager pip untuk menginstal bribrain.

pip install bribrain

โšก Quick Start

import bribrain

# Membuat Spark Session
spark = bribrain.sparkSession()

# Mendapatkan list partisi dari tabel Hive
partitions = bribrain.get_list_partition(spark, "schema_name", "table_name")

# Menulis DataFrame ke Hive
bribrain.load_to_hive(spark, df, schema="my_schema", table="my_table")

๐Ÿ“š Modul

1. Config โ€” Konfigurasi Spark Session

Modul untuk membuat dan mengkonfigurasi Spark Session.

sparkSession() โ€” Membuat Spark Session

Membuat spark session yang dapat digunakan untuk proses data engineering.

Parameter:

Parameter Tipe Default Deskripsi
appname str "Bribrain Packages SparkSession" Nama dari Spark Session
executor str "small" Standard resource (small, medium, high, custom)
instances int 2 Jumlah instance Spark Session
cores int 2 Jumlah cores Spark Session
memory int 4 Memory Spark Session (GB)
overhead int 2 Overhead memory Spark Session (GB)
verbose bool False Menampilkan console progress
extra_configs dict None Additional Spark config

Preset Executor:

Executor Instances Cores Memory Overhead
small 2 2 4 GB 2 GB
medium 4 4 6 GB 2 GB
high 6 6 8 GB 4 GB
custom sesuai input sesuai input sesuai input sesuai input

Contoh Penggunaan:

import bribrain

# Menggunakan preset small (default)
spark = bribrain.sparkSession()

# Menggunakan preset medium
spark = bribrain.sparkSession(executor="medium")

# Menggunakan custom config
spark = bribrain.sparkSession(
    appname="My App",
    executor="custom",
    instances=4,
    cores=4,
    memory=8,
    overhead=4
)

# Menambahkan extra Spark config
spark = bribrain.sparkSession(
    extra_configs={
        "spark.sql.shuffle.partitions": "200",
        "spark.sql.adaptive.enabled": "true"
    }
)

Return: pyspark.sql.session.SparkSession

template() โ€” Membuat Template Foldering

Membuat template foldering yang digunakan sebagai standard untuk proses data engineering.

Contoh Penggunaan:

import bribrain

bribrain.template()

โš ๏ธ Fungsi ini akan mengunduh template dari HDFS dan mengekstraknya ke /home/cdsw/.


2. Function โ€” Utility Functions

Modul yang berisi berbagai fungsi utilitas untuk mendukung proses data engineering.

try_or() โ€” Menangkap Error

Menangkap error dari suatu fungsi dan memberikan keluaran alternatif.

Parameter:

Parameter Tipe Default Deskripsi
func function required Python function (tambahkan lambda sebelum nama function)
default object None Nilai keluaran jika terjadi error
expected_exc Exception (Exception,) Tipe exception yang diharapkan

Contoh Penggunaan:

import bribrain

# Menangkap error dan mengembalikan default value
result = bribrain.try_or(lambda: int("abc"), default=0)
print(result)  # Output: 0

# Tanpa error
result = bribrain.try_or(lambda: int("123"), default=0)
print(result)  # Output: 123

Return: object โ€” keluaran dari function atau default value jika terjadi error

set_timer() โ€” Menetapkan Waktu Awal

Menetapkan waktu awal untuk penghitungan durasi proses.

Contoh Penggunaan:

import bribrain

bribrain.set_timer()

Return: float โ€” waktu dalam format float

get_timer() โ€” Mendapatkan Durasi Proses

Mendapatkan durasi proses berdasarkan waktu awal dikurangi waktu sekarang.

Parameter:

Parameter Tipe Default Deskripsi
start_time float None Timestamp waktu awal (jika None, menggunakan set_timer())

Contoh Penggunaan:

import bribrain

bribrain.set_timer()

# ... proses yang berjalan ...

duration = bribrain.get_timer()
print(duration)  # Output: "00:05:30"

Return: string โ€” durasi proses dengan format HH:MM:SS

show_time() โ€” Menampilkan Waktu Saat Ini

Menampilkan waktu saat ini sesuai format yang diinginkan.

Parameter:

Parameter Tipe Default Deskripsi
format_time str "%Y-%m-%d %H:%M:%S" Format waktu

Contoh Penggunaan:

import bribrain

print(bribrain.show_time())
# Output: "2026-02-12 09:30:00"

print(bribrain.show_time("%d/%m/%Y"))
# Output: "12/02/2026"

Return: string โ€” waktu saat ini sesuai format input

remove_blank_space() โ€” Menghapus Spasi Kosong pada Kolom

Menghapus spasi kosong pada kolom tertentu. Jika kolom hanya berisi spasi, akan diubah menjadi None.

Parameter:

Parameter Tipe Default Deskripsi
x str required Nama kolom yang akan dibersihkan

Contoh Penggunaan:

import bribrain
from pyspark.sql import functions as F

df = df.withColumn("nama", bribrain.remove_blank_space("nama"))
df.show()

Return: pyspark.sql.functions.Column โ€” kolom dengan spasi kosong dihapus

cleanse_blank_space() โ€” Membersihkan Spasi pada Semua Kolom String

Membersihkan spasi kosong pada semua kolom bertipe string dalam DataFrame secara otomatis.

Parameter:

Parameter Tipe Default Deskripsi
df_to_clean pyspark.sql.DataFrame required DataFrame yang akan dibersihkan

Contoh Penggunaan:

import bribrain

# Sebelum: kolom string mungkin berisi "  " atau "  data  "
df_clean = bribrain.cleanse_blank_space(df)
df_clean.show()
# Sesudah: spasi di-trim, kolom yang hanya spasi menjadi None

Return: pyspark.sql.DataFrame โ€” DataFrame dengan spasi kosong dihapus pada semua kolom string

lower_columns_name() โ€” Mengubah Nama Kolom Menjadi Huruf Kecil

Mengubah semua nama kolom dalam DataFrame menjadi huruf kecil.

Parameter:

Parameter Tipe Default Deskripsi
df pyspark.sql.DataFrame required DataFrame yang akan diubah

Contoh Penggunaan:

import bribrain

# Sebelum: kolom = ["Nama", "UMUR", "Alamat"]
df = bribrain.lower_columns_name(df)
print(df.columns)
# Sesudah: kolom = ["nama", "umur", "alamat"]

Return: pyspark.sql.DataFrame โ€” DataFrame dengan nama kolom huruf kecil

pandas_to_spark() โ€” Konversi Pandas ke Spark DataFrame

Mengkonversi pandas DataFrame menjadi Spark DataFrame dengan schema otomatis.

Parameter:

Parameter Tipe Default Deskripsi
pdf pandas.DataFrame required DataFrame pandas yang akan dikonversi
tz_to_utc bool True Konversi kolom datetime yang memiliki timezone ke UTC

Contoh Penggunaan:

import bribrain
import pandas as pd

pdf = pd.DataFrame({
    "nama": ["Andri", "Budi"],
    "umur": [28, 30]
})

spark_df = bribrain.pandas_to_spark(pdf)
spark_df.show()

Return: pyspark.sql.DataFrame

get_list_partition() โ€” Mendapatkan List Partisi

Memperoleh list partisi dari hive table yang diurutkan dari partisi terbaru.

Parameter:

Parameter Tipe Default Deskripsi
spark SparkSession required Spark session
schema str required Nama schema dari table di Hive
table str required Nama table di Hive

Contoh Penggunaan:

import bribrain

spark = bribrain.sparkSession()
partitions = bribrain.get_list_partition(spark, "my_schema", "my_table")
print(partitions)
# Output: [{'year': '2026', 'month': '02'}, {'year': '2026', 'month': '01'}, ...]

Return: list โ€” list partisi diurutkan dari partisi terbaru

get_first_partition() โ€” Mendapatkan Partisi Pertama

Memperoleh partisi pertama dari hive table.

Parameter:

Parameter Tipe Default Deskripsi
spark SparkSession required Spark session
schema str required Nama schema dari table di Hive
table str required Nama table di Hive

Contoh Penggunaan:

import bribrain

spark = bribrain.sparkSession()
first = bribrain.get_first_partition(spark, "my_schema", "my_table")
print(first)
# Output: {'year': '2024', 'month': '01'}

Return: dict โ€” partisi pertama

get_last_partition() โ€” Mendapatkan Partisi Terakhir

Memperoleh partisi terakhir dari hive table.

Parameter:

Parameter Tipe Default Deskripsi
spark SparkSession required Spark session
schema str required Nama schema dari table di Hive
table str required Nama table di Hive

Contoh Penggunaan:

import bribrain

spark = bribrain.sparkSession()
last = bribrain.get_last_partition(spark, "my_schema", "my_table")
print(last)
# Output: {'year': '2026', 'month': '02'}

Return: dict โ€” partisi terakhir

check_partition_exists() โ€” Mengecek Keberadaan Partisi

Mengecek keberadaan partisi pada tabel HDFS dan mengembalikan metadata partisi terkait.

Parameter:

Parameter Tipe Default Deskripsi
spark SparkSession required Spark session
target_value str required Nilai partisi yang dicari
schema str required Nama schema dari table di Hive
table str required Nama table di Hive
mode str None Mode pengecekan

Contoh Penggunaan:

import bribrain

spark = bribrain.sparkSession()
result = bribrain.check_partition_exists(spark, "2026-02", "my_schema", "my_table")

if result:
    print("Partisi ditemukan:", result)
else:
    print("Partisi tidak ditemukan")

Return: dict | None โ€” detail kolom partisi atau None jika tidak ditemukan

put_to_bridrive() โ€” Upload File ke BRIDrive

Mengirimkan file dari CDSW ke BRIDrive (Seafile).

Parameter:

Parameter Tipe Default Deskripsi
file_path str required Path file yang akan di upload
upload_url str required Upload link dari Seafile (BRIDrive)

Contoh Penggunaan:

import bribrain

bribrain.put_to_bridrive(
    file_path="resources/excel/report.xlsx",
    upload_url="https://bridrive.example.com/upload-link"
)
put_to_hdfs() โ€” Upload File ke HDFS

Mengirimkan file dari CDSW ke HDFS.

Parameter:

Parameter Tipe Default Deskripsi
file_path str required Path file yang akan di upload
hdfs_path str "/tmp/development/bribrain" Path lokasi penyimpanan di HDFS

Contoh Penggunaan:

import bribrain

bribrain.put_to_hdfs("resources/csv/data.csv")

# Dengan custom path
bribrain.put_to_hdfs("resources/csv/data.csv", hdfs_path="/tmp/my_project")
get_from_hdfs() โ€” Download File dari HDFS

Mengambil file dari HDFS ke CDSW.

Parameter:

Parameter Tipe Default Deskripsi
file_path str required Path file di HDFS yang akan dipindahkan
cdsw_path str "/home/cdsw/" Path penyimpanan file di CDSW

Contoh Penggunaan:

import bribrain

bribrain.get_from_hdfs("/tmp/development/bribrain/data.csv")

# Dengan custom CDSW path
bribrain.get_from_hdfs("/tmp/data.csv", cdsw_path="/home/cdsw/data/")
list_file_hdfs() โ€” Menampilkan List File di HDFS

Memperlihatkan list file yang ada pada lokasi HDFS.

Parameter:

Parameter Tipe Default Deskripsi
hdfs_path str "/user/{username}/" Path HDFS yang ingin ditampilkan

Contoh Penggunaan:

import bribrain

# Menampilkan file di direktori user default
bribrain.list_file_hdfs()

# Menampilkan file di path tertentu
bribrain.list_file_hdfs("/tmp/development/bribrain")

3. Ingestion โ€” Standard Ingestion ke Hive

Modul orchestrator untuk proses standard ingestion data ke Hive.

ingest_to_hive() โ€” Orchestrator Ingestion

Orchestrator untuk proses standard ingestion data ke Hive. Mengatur seluruh alur ingestion mulai dari validasi, penambahan kolom partisi, penulisan data, hingga pencatatan metadata.

Parameter:

Parameter Tipe Default Deskripsi
spark SparkSession required Spark session
params dict required Parameter pendukung dalam bentuk dictionary

Contoh Penggunaan:

import bribrain

spark = bribrain.sparkSession()

params = {
    "schema": "my_schema",
    "table": "my_table",
    "partition": "year|month",
    "mode": "append",
    # parameter lainnya sesuai kebutuhan
}

result = bribrain.ingest_to_hive(spark, params)

Return: dict โ€” parameter hasil yang disimpan dalam bentuk dictionary


4. Load โ€” Penulisan Data ke Berbagai Target

Modul untuk menulis/menyimpan data ke berbagai target: Hive, HDFS (CSV/Parquet/JSON/Excel), PostgreSQL, dan MySQL.

๐Ÿ“‚ Hive

load_to_hive() โ€” Menulis DataFrame ke Hive

Melakukan penulisan PySpark DataFrame sebagai tabel Hive di HDFS.

Parameter:

Parameter Tipe Default Deskripsi
spark SparkSession required Spark session
df DataFrame required PySpark DataFrame
schema str required Target schema di HDFS
table str required Target table di HDFS
partition str None Kolom partisi (pisahkan dengan | jika lebih dari satu)
mode str "append" Mode penulisan (append, overwrite, error, ignore)
repartition_number int | None None Jumlah file parquet per partisi
blocksize int | None 256 Ukuran per file dalam MB (64, 128, 256, 512, None)
modified_date bool True Menambahkan kolom modified_date
schema_temp str "sharingvision" Schema untuk temp table
count bool False Menampilkan count data tersimpan

Contoh Penggunaan:

import bribrain

spark = bribrain.sparkSession()

# Penulisan sederhana (append)
bribrain.load_to_hive(spark, df, schema="my_schema", table="my_table")

# Penulisan dengan partisi
bribrain.load_to_hive(
    spark, df,
    schema="my_schema",
    table="my_table",
    partition="year|month",
    mode="overwrite",
    count=True
)

# Penulisan tanpa modified_date
bribrain.load_to_hive(
    spark, df,
    schema="my_schema",
    table="my_table",
    modified_date=False,
    blocksize=128
)

Return: int | None โ€” total record jika count=True, None jika tidak

๐Ÿ“‚ HDFS File

load_to_file() โ€” Menulis DataFrame ke HDFS (CSV/Parquet/JSON/Excel)

Melakukan penulisan PySpark DataFrame ke HDFS dengan format file tertentu.

Parameter:

Parameter Tipe Default Deskripsi
df DataFrame required PySpark DataFrame
file_name str required HDFS path / nama file (tanpa ekstensi)
file_type str "csv" Tipe file (csv, parquet, json, excel)
repartition_number int 1 Jumlah file hasil
delimiter str "," Pemisah antar kolom (untuk CSV)
download bool True Download ke local CML
delete_hdfs_file bool True Hapus file di HDFS setelah download

Contoh Penggunaan:

import bribrain

# Menulis ke CSV
bribrain.load_to_file(df, "my_report", file_type="csv")

# Menulis ke CSV dengan delimiter tab
bribrain.load_to_file(df, "my_report", file_type="csv", delimiter="\t")

# Menulis ke Parquet
bribrain.load_to_file(df, "my_data", file_type="parquet")

# Menulis ke JSON
bribrain.load_to_file(df, "my_data", file_type="json")

# Menulis ke Excel
bribrain.load_to_file(df, "my_report", file_type="excel")

# Tanpa download ke local
bribrain.load_to_file(df, "my_report", file_type="csv", download=False)
download_hdfs_file() โ€” Download File dari HDFS

Mengunduh semua file partisi HDFS dari direktori user ke lokal dan melakukan pembersihan opsional.

Parameter:

Parameter Tipe Default Deskripsi
file_name str required Nama file/direktori target di HDFS
file_type str required Tipe file (csv, parquet, json, excel)
delete_hdfs_file bool False Hapus direktori di HDFS setelah download

Contoh Penggunaan:

from bribrain.load import download_hdfs_file

download_hdfs_file("my_report", "csv", delete_hdfs_file=True)

Return: list[str] โ€” daftar path file lokal yang berhasil diunduh

load_to_excel() โ€” Menulis DataFrame ke Excel (Multi-Sheet)

Melakukan penulisan PySpark DataFrame ke HDFS dengan format Excel. Mendukung multi-sheet โ€” Anda dapat menulis beberapa DataFrame sekaligus sebagai sheet terpisah dalam satu file Excel.

Parameter:

Parameter Tipe Default Deskripsi
df DataFrame | list[DataFrame] required Satu DataFrame atau list DataFrame
file_name str required HDFS path / nama file (tanpa ekstensi)
sheet_name str | list[str] | None None Nama sheet atau list nama sheet
download bool True Download ke local CML
delete_hdfs_file bool True Hapus file di HDFS setelah download

Aturan sheet_name:

  • None โ†’ sheet diberi nama otomatis: Sheet1, Sheet2, dst.
  • str โ†’ hanya berlaku untuk satu DataFrame
  • list[str] โ†’ jumlah harus sama dengan jumlah DataFrame

Contoh Penggunaan:

import bribrain

# Single DataFrame (backward compatible)
bribrain.load_to_excel(df, "my_report")

# Single DataFrame dengan custom sheet name
bribrain.load_to_excel(df, "my_report", sheet_name="Summary")

# Multiple DataFrame dengan custom sheet name
bribrain.load_to_excel(
    [df_revenue, df_cost, df_profit],
    "financial_report",
    sheet_name=["Revenue", "Cost", "Profit"]
)

# Multiple DataFrame dengan auto naming
bribrain.load_to_excel(
    [df1, df2],
    "my_report"
)
# Hasil sheet: Sheet1, Sheet2

๐Ÿ˜ PostgreSQL

load_to_postgresql() โ€” Menulis DataFrame ke PostgreSQL

Melakukan penulisan PySpark DataFrame sebagai tabel di PostgreSQL.

Parameter:

Parameter Tipe Default Deskripsi
df DataFrame required PySpark DataFrame
database str required Target database
schema str required Target schema
table str required Target table
ip str required Target IP
port str required Target port
username str required Username
password str required Password
mode str "append" Mode penulisan (append, overwrite, error, ignore)
strategy str None Proses sebelum penulisan (truncate, drop, None)
ddl str None Query CREATE TABLE
count bool True Menampilkan count data tersimpan

Contoh Penggunaan:

import bribrain

# Append data
bribrain.load_to_postgresql(
    df,
    database="mydb",
    schema="public",
    table="my_table",
    ip="192.168.1.100",
    port="5432",
    username="admin",
    password="secret"
)

# Truncate lalu insert
bribrain.load_to_postgresql(
    df,
    database="mydb",
    schema="public",
    table="my_table",
    ip="192.168.1.100",
    port="5432",
    username="admin",
    password="secret",
    strategy="truncate"
)

# Drop lalu create ulang dengan DDL
bribrain.load_to_postgresql(
    df,
    database="mydb",
    schema="public",
    table="my_table",
    ip="192.168.1.100",
    port="5432",
    username="admin",
    password="secret",
    strategy="drop",
    ddl="""
        CREATE TABLE public.my_table (
            id SERIAL PRIMARY KEY,
            name VARCHAR(100),
            value NUMERIC
        )
    """
)
postgresql_execute_command() โ€” Menjalankan Query di PostgreSQL

Menjalankan query (non-SELECT) di PostgreSQL.

Parameter:

Parameter Tipe Default Deskripsi
database str required Target database
ip str required Target IP
port str required Target port
username str required Username
password str required Password
query str required Query yang akan dieksekusi

Contoh Penggunaan:

import bribrain

bribrain.postgresql_execute_command(
    database="mydb",
    ip="192.168.1.100",
    port="5432",
    username="admin",
    password="secret",
    query="UPDATE public.my_table SET status = 'active' WHERE id = 1"
)
postgresql_execute_fetchall() โ€” Query Select di PostgreSQL

Menjalankan query SELECT di PostgreSQL dan mengembalikan hasilnya.

Parameter:

Parameter Tipe Default Deskripsi
database str required Target database
ip str required Target IP
port str required Target port
username str required Username
password str required Password
query str required Query yang akan dieksekusi

Contoh Penggunaan:

import bribrain

rows = bribrain.postgresql_execute_fetchall(
    database="mydb",
    ip="192.168.1.100",
    port="5432",
    username="admin",
    password="secret",
    query="SELECT * FROM public.my_table LIMIT 10"
)

for row in rows:
    print(row)

Return: list โ€” data keluaran dari query

postgresql_drop_table() โ€” Drop Table di PostgreSQL

Menghapus tabel di PostgreSQL.

Contoh Penggunaan:

import bribrain

bribrain.postgresql_drop_table(
    database="mydb",
    schema="public",
    table="my_table",
    ip="192.168.1.100",
    port="5432",
    username="admin",
    password="secret"
)
postgresql_truncate_table() โ€” Truncate Table di PostgreSQL

Mengosongkan data tabel di PostgreSQL (tanpa menghapus strukturnya).

Contoh Penggunaan:

import bribrain

bribrain.postgresql_truncate_table(
    database="mydb",
    schema="public",
    table="my_table",
    ip="192.168.1.100",
    port="5432",
    username="admin",
    password="secret"
)

๐Ÿฌ MySQL

load_to_mysql() โ€” Menulis DataFrame ke MySQL

Melakukan penulisan PySpark DataFrame sebagai tabel di MySQL.

Parameter:

Parameter Tipe Default Deskripsi
df DataFrame required PySpark DataFrame
schema str required Target schema
table str required Target table
ip str required Target IP
port str required Target port
username str required Username
password str required Password
mode str "append" Mode penulisan (append, overwrite, error, ignore)
strategy str None Proses sebelum penulisan (truncate, drop, None)
ddl str None Query CREATE TABLE
count bool True Menampilkan count data tersimpan

Contoh Penggunaan:

import bribrain

bribrain.load_to_mysql(
    df,
    schema="my_database",
    table="my_table",
    ip="192.168.1.100",
    port="3306",
    username="admin",
    password="secret",
    mode="append"
)

# Dengan strategy truncate
bribrain.load_to_mysql(
    df,
    schema="my_database",
    table="my_table",
    ip="192.168.1.100",
    port="3306",
    username="admin",
    password="secret",
    strategy="truncate"
)
mysql_execute_command() โ€” Menjalankan Query di MySQL

Menjalankan query (non-SELECT) di MySQL.

Contoh Penggunaan:

import bribrain

bribrain.mysql_execute_command(
    schema="my_database",
    ip="192.168.1.100",
    port="3306",
    username="admin",
    password="secret",
    query="UPDATE my_table SET status = 'done' WHERE id = 1"
)
mysql_execute_fetchall() โ€” Query Select di MySQL

Menjalankan query SELECT di MySQL dan mengembalikan hasilnya.

Contoh Penggunaan:

import bribrain

rows = bribrain.mysql_execute_fetchall(
    schema="my_database",
    ip="192.168.1.100",
    port="3306",
    username="admin",
    password="secret",
    query="SELECT * FROM my_table LIMIT 10"
)

for row in rows:
    print(row)

Return: list โ€” data keluaran dari query

mysql_drop_table() โ€” Drop Table di MySQL

Menghapus tabel di MySQL.

Contoh Penggunaan:

import bribrain

bribrain.mysql_drop_table(
    schema="my_database",
    table="my_table",
    ip="192.168.1.100",
    port="3306",
    username="admin",
    password="secret"
)
mysql_truncate_table() โ€” Truncate Table di MySQL

Mengosongkan data tabel di MySQL.

Contoh Penggunaan:

import bribrain

bribrain.mysql_truncate_table(
    schema="my_database",
    table="my_table",
    ip="192.168.1.100",
    port="3306",
    username="admin",
    password="secret"
)

5. Metadata โ€” Informasi Environment

Modul untuk mengambil informasi metadata dari environment variable.

get_userid() โ€” Mendapatkan User ID

Mengambil Hadoop user ID dari environment variable HADOOP_USER_NAME.

Contoh Penggunaan:

import bribrain

user_id = bribrain.get_userid()
print(user_id)  # Output: "bribrain_sac"

Return: str

get_username() โ€” Mendapatkan Username

Menghasilkan nama lengkap berdasarkan Git author email. Nama dibentuk dari bagian local email (sebelum @).

Contoh Penggunaan:

import bribrain

username = bribrain.get_username()
print(username)  # Output: "Andri Ariyanto"

Return: str

get_email() โ€” Mendapatkan Email

Mengambil Git author email dari environment variable GIT_AUTHOR_EMAIL.

Contoh Penggunaan:

import bribrain

email = bribrain.get_email()
print(email)  # Output: "user@example.com"

Return: str

get_project_url() โ€” Mendapatkan Project URL

Mengambil URL project dari environment variable CDSW_PROJECT_URL.

import bribrain

url = bribrain.get_project_url()
print(url)

Return: str

get_project_id() โ€” Mendapatkan Project ID

Mengambil ID project dari environment variable CDSW_PROJECT_ID.

import bribrain

project_id = bribrain.get_project_id()
print(project_id)

Return: str

get_project_num() โ€” Mendapatkan Project Number

Mengambil nomor project dari environment variable CDSW_PROJECT_NUM.

import bribrain

project_num = bribrain.get_project_num()
print(project_num)

Return: str

get_project_name() โ€” Mendapatkan Nama Project

Membentuk nama project dengan format yang dapat disesuaikan.

Parameter:

Parameter Tipe Default Deskripsi
env str | None None Environment (None, "dev", "prod")
case str | None None Format huruf (None, "lower", "upper")
delimiter str | None "_" Karakter pemisah (menggantikan -)

Contoh Penggunaan:

import bribrain

# Default
print(bribrain.get_project_name())
# Output: "bribrain_pipeline"

# Dengan environment dan uppercase
print(bribrain.get_project_name(env="dev", case="upper"))
# Output: "DEV_BRIBRAIN_PIPELINE"

# Mempertahankan delimiter asli
print(bribrain.get_project_name(delimiter=None))
# Output: "dev-bribrain-pipeline"

Return: str

get_proxy() โ€” Mendapatkan Konfigurasi Proxy

Mengambil konfigurasi proxy HTTP dan HTTPS dari environment variable.

Contoh Penggunaan:

import bribrain

proxies = bribrain.get_proxy()
print(proxies)
# Output: {"http": "http://proxy.company.com:8080", "https": "https://proxy.company.com:8080"}

Return: dict


6. Notification โ€” Notifikasi Telegram

Modul untuk mengirim pesan, gambar, dan file ke Telegram via Bot API.

send_message_telegram() โ€” Kirim Pesan Teks

Mengirim pesan teks ke Telegram. Otomatis membagi pesan panjang menjadi beberapa bagian jika melebihi batas 4096 karakter.

Parameter:

Parameter Tipe Default Deskripsi
message str required Pesan yang akan dikirim
bot_token str required Token bot Telegram
chat_id str | int required Chat ID tujuan
parse_mode str "HTML" Mode parsing (HTML, Markdown)
disable_web_page_preview bool True Nonaktifkan preview link
proxies dict None Konfigurasi proxy
timeout int 20 Request timeout (detik)
max_len int 4096 Panjang maksimum per pesan

Contoh Penggunaan:

import bribrain

BOT_TOKEN = "your-bot-token"
CHAT_ID = "-100123456789"

# Kirim pesan sederhana
bribrain.send_message_telegram(
    message="โœ… Proses ETL selesai!",
    bot_token=BOT_TOKEN,
    chat_id=CHAT_ID
)

# Kirim pesan dengan HTML formatting
bribrain.send_message_telegram(
    message="<b>Status:</b> Sukses\n<i>Durasi:</i> 5 menit",
    bot_token=BOT_TOKEN,
    chat_id=CHAT_ID
)

# Menggunakan proxy
proxies = bribrain.get_proxy()
bribrain.send_message_telegram(
    message="Pesan dengan proxy",
    bot_token=BOT_TOKEN,
    chat_id=CHAT_ID,
    proxies=proxies
)
send_image_telegram() โ€” Kirim Gambar

Mengirim gambar ke Telegram. Mendukung pengiriman dari file lokal maupun gambar hasil generate di memory (bytes / BytesIO).

Parameter:

Parameter Tipe Default Deskripsi
bot_token str required Token bot Telegram
chat_id str | int required Chat ID tujuan
image str | bytes | BytesIO required Path file gambar atau objek gambar
caption str None Caption gambar
parse_mode str "HTML" Mode parsing
filename str "image.png" Nama file gambar
proxies dict None Konfigurasi proxy
timeout int 60 Request timeout (detik)

Contoh Penggunaan:

import bribrain

BOT_TOKEN = "your-bot-token"
CHAT_ID = "-100123456789"

# Kirim gambar dari file lokal
bribrain.send_image_telegram(
    bot_token=BOT_TOKEN,
    chat_id=CHAT_ID,
    image="resources/chart.png",
    caption="๐Ÿ“Š Grafik penjualan bulan ini"
)

# Kirim gambar dari BytesIO
import io
img_buffer = io.BytesIO(image_bytes)
bribrain.send_image_telegram(
    bot_token=BOT_TOKEN,
    chat_id=CHAT_ID,
    image=img_buffer,
    caption="Generated chart"
)
send_file_telegram() โ€” Kirim File/Dokumen

Mengirim file atau dokumen ke Telegram. Cocok untuk mengirim report, log, CSV, Excel, atau file hasil generate lainnya.

Parameter:

Parameter Tipe Default Deskripsi
bot_token str required Token bot Telegram
chat_id str | int required Chat ID tujuan
file_obj str | bytes | BytesIO required Path file atau objek file
filename str required Nama file
caption str None Caption file
parse_mode str "HTML" Mode parsing
proxies dict None Konfigurasi proxy
timeout int 120 Request timeout (detik)

Contoh Penggunaan:

import bribrain

BOT_TOKEN = "your-bot-token"
CHAT_ID = "-100123456789"

# Kirim file Excel
bribrain.send_file_telegram(
    bot_token=BOT_TOKEN,
    chat_id=CHAT_ID,
    file_obj="resources/excel/report.xlsx",
    filename="report.xlsx",
    caption="๐Ÿ“„ Laporan bulanan"
)

# Kirim file CSV
bribrain.send_file_telegram(
    bot_token=BOT_TOKEN,
    chat_id=CHAT_ID,
    file_obj="resources/csv/data.csv",
    filename="data.csv"
)

๐Ÿ“ฆ Dependencies

Package Versi
mysql-connector-python 8.0.28
psycopg2 latest
openpyxl latest
pyspark (environment)
pandas (environment)
requests (environment)

๐Ÿ‘จโ€๐Ÿ’ป Author

Andri Ariyanto


๐Ÿ“„ License

Copyright ยฉ Andri Ariyanto โ€” AI Department - BRI

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

bribrain-1.3.4.tar.gz (57.2 kB view details)

Uploaded Source

Built Distribution

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

bribrain-1.3.4-py3-none-any.whl (41.2 kB view details)

Uploaded Python 3

File details

Details for the file bribrain-1.3.4.tar.gz.

File metadata

  • Download URL: bribrain-1.3.4.tar.gz
  • Upload date:
  • Size: 57.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.14

File hashes

Hashes for bribrain-1.3.4.tar.gz
Algorithm Hash digest
SHA256 f25b5b92b21865bffaee82b004a048db50aa8873f9159297df37977b0772daef
MD5 c69891918b5cc258bd67e40b3a16cc8d
BLAKE2b-256 5d7e1cfd0b5ca526d842df5ee02768e2ac88dfea31fd6054c07b788989e40866

See more details on using hashes here.

File details

Details for the file bribrain-1.3.4-py3-none-any.whl.

File metadata

  • Download URL: bribrain-1.3.4-py3-none-any.whl
  • Upload date:
  • Size: 41.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.14

File hashes

Hashes for bribrain-1.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 36c0e23112a86ec332c87fcc74e87e25de3aab31922e7edbbaddad761fc8c691
MD5 80007dbad48257d9f4e603876cc43d09
BLAKE2b-256 c385cdc27d3cf0404e73a1cd7360e224e8473a425b74811865d32797fe951a76

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