Any Python Function
Decorator-based notifications for script execution with returned output summaries.
slackker
Real-time notifications for any Python pipeline
slackker sends real-time notifications to Slack or Telegram for any Python script, data pipeline, ML training run, or automation workflow — complete with metrics, outputs, and optional plots.
from slackker.callbacks.basic import SlackUpdate
slackker = SlackUpdate(token="xoxb-...", channel="A04AAB77ABC")
@slackker.notifier
def train_model():
return "done"
slackker.notify(event="training_complete", status="completed")
Why slackker
Decorator-based notifications for script execution with returned output summaries.
Attach to model.fit and receive metric progress during epoch training.
Track train and validation logs with monitor-based best epoch updates.
Export and send history plots so you can check model behavior quickly on mobile.
Detailed callback usage
from slackker.callbacks.basic import SlackUpdate
notify = SlackUpdate(
token="xoxb-your-bot-token",
channel="A04AAB77ABC",
verbose=1
)
@notify.notifier
def run_data_pipeline(source_path: str):
rows_processed = 12500
status = "success"
return rows_processed, status
if __name__ == "__main__":
rows, status = run_data_pipeline("./data/train.csv")
notify.notify(
event="pipeline_finished",
rows_processed=rows,
status=status,
attachment="./artifacts/summary.txt"
)
from slackker.callbacks.keras import SlackUpdate
slackker_cb = SlackUpdate(
token="xoxb-your-bot-token",
channel="A04AAB77ABC",
ModelName="ImageClassifierV1",
export="png",
SendPlot=True,
verbose=1
)
history = model.fit(
x_train,
y_train,
epochs=20,
batch_size=32,
validation_data=(x_val, y_val),
callbacks=[slackker_cb]
)
from lightning.pytorch import Trainer
from slackker.callbacks.lightning import SlackUpdate
slackker_cb = SlackUpdate(
token="xoxb-your-bot-token",
channel="A04AAB77ABC",
ModelName="LightningClassifier",
TrackLogs=["train_loss", "train_acc", "val_loss", "val_acc"],
monitor="val_loss",
export="png",
SendPlot=True,
verbose=1
)
trainer = Trainer(max_epochs=12, callbacks=[slackker_cb])
trainer.fit(model, train_loader, val_loader)
Quick start