Skip to main content

Client library for the Rubin Observatory Squarebot

Project description

Squarebot

Squarebot is the nexus service for ChatOps and event-driven bots for Rubin Observatory. As a Slack app, Squarebot receives events from Slack and publishes them into specific Square Events Kafka topics in the Roundtable Kubernetes cluster. Other applications on Roundtable can consume these events and act on them, such as by posting messages back to Slack or by performing some other background automation.

flowchart LR
    subgraph Slack
    message[Slack message]
    interaction[Slack interaction]
    end
    subgraph sqrbot ["Squarebot"]
    eventapi["/slack/event"]
    interactionapi["/slack/interaction"]
    message -->|HTTP POST| eventapi
    interaction -->|HTTP POST| interactionapi
    end
    subgraph kafka ["Kafka Topics"]
    topicmention["lsst.square-events.squarebot.slack.app.mention"]
    topicchannel["lsst.square-events.squarebot.slack.message.channel"]
    topicgroup["lsst.square-events.squarebot.slack.message.group"]
    topicim["lsst.square-events.squarebot.slack.message.im"]
    topicmpim["lsst.square-events.squarebot.slack.message.mpim"]
    topicinteraction["lsst.square-events.squarebot.slack.interaction"]
    end
    eventapi --> topicmention
    eventapi --> topicchannel
    eventapi --> topicgroup
    eventapi --> topicim
    eventapi --> topicmpim
    interactionapi --> topicinteraction
    subgraph backends ["Backends"]
    backend1["Backend 1"]
    backend2["Backend 2"]
    end
    topicchannel --> backend1
    topicgroup --> backend1
    topicmention --> backend2
    topicinteraction --> backend2

Slack integration is implemented at the time. We plan to add support for other event sources, such as GitHub, in the future.

Squarebot is built on top of FastAPI, a modern Python web framework, with the Rubin/SQuaRE Safir library. Squarebot uses FastStream to publish messages to Kafka with the aiokafka library.

Development set up

Squarebot uses Python 3.12 or later.

You'll need nox to run the development environment:

pip install nox

Then you can set up a virtual environment with the development dependencies:

nox -s venv-init`

(If you already have a virtual environment, you can activate it and run nox -s init instead).

The tests require a local Kafka broker. If you have Docker, you can deploy a Kafka broker with Docker Compose:

docker-compose -f kafka-compose.yaml up

To run all linters, type checking, and tests, run:

nox

While developing and running tests, you can inspect messages produced to Kafka with Kafdrop at http://localhost:9000.

You can run individual sessions with nox -s <session-name>. See nox -l for a list of available sessions.

To tear down the Kafka broker, run:

docker-compose -f kafka-compose.yaml down

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

rubin_squarebot-0.10.2.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

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

rubin_squarebot-0.10.2-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file rubin_squarebot-0.10.2.tar.gz.

File metadata

  • Download URL: rubin_squarebot-0.10.2.tar.gz
  • Upload date:
  • Size: 13.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for rubin_squarebot-0.10.2.tar.gz
Algorithm Hash digest
SHA256 0f9781586e0ec4a5f721fa6daf3229f9c1e96259a635628d59328ff32c2e8730
MD5 1586e1f3dda3f2d5fa40168d09adfdc1
BLAKE2b-256 cbd6b0b723164544abcd56bf0e0834d20bb44cdbc61d6a6f52188c23a711d165

See more details on using hashes here.

File details

Details for the file rubin_squarebot-0.10.2-py3-none-any.whl.

File metadata

  • Download URL: rubin_squarebot-0.10.2-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for rubin_squarebot-0.10.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d72aef80488361719f084e95268f4c424585a03d4f25d4b15f1f4d6ec3f3f3df
MD5 a3bac383c5b1795b6da936bfa7afd239
BLAKE2b-256 341cba1fc845d211489b26e8c7d7f4053a7ec04c1b4ac772fd23e2b61ec8bcca

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