Skip to main content

Python async wrapper around Siril astrophotography software.

Project description

uv image image image Actions status

async-siril

Async Siril is an asyncio based python wrapper around Siril 1.4.0 used for processing astronomy data for astrophotography and science. The library provides a pythonic interface to the Siril command line interface and all of it's commands. Scripts, processes, and workflows can be built with modern async python.

Features

  • async/await based using asyncio
  • code generated Siril commands from free-astro/siril-doc
  • logging with structlog
  • example CLI commands built for calibration, registration & stacking workflows examples
  • some helpers for common logic (see async_siril.helpers)
  • minimal dependencies (asyncio, structlog, psutil, attrs)
  • Linux, Mac, & Windows support

Requirements

Installation

uv add async-siril
# OR
pip install async-siril

Usage

Here is a simple example of how to create a master bias using the library:

import asyncio
import pathlib

from async_siril import SirilCli
from async_siril.command import setext, set32bits, convert, stack
from async_siril.command_types import fits_extension

async def main():
    current_dir = pathlib.Path(__file__).parent
    async with SirilCli(directory=current_dir) as siril:
        await siril.command(setext(fits_extension.FITS_EXT_FIT))
        await siril.command(set32bits())

        await siril.command(convert("bias"))
        await siril.command(stack("bias", out="bias_master"))

if __name__ == "__main__":
    asyncio.run(main())

For advanced use cases you can run the Siril commands directly as strings.

from async_siril import SirilCli

async def main():
    async with SirilCli() as siril:
        await siril.command("setext fits")
        await siril.command("set32bits")
        await siril.command("convert bias")
        await siril.command("stack bias bias_master")

if __name__ == "__main__":
    asyncio.run(main())

By default, any command that fails will throw an exception and shut things down. If you want to catch these types of errors and try again or handle a different way you can use the failable_command method.

from async_siril import SirilCli

async def main():
    async with SirilCli() as siril:
        await siril.command("setext fits")
        await siril.command("set32bits")
        await siril.command("convert bias")
        result = await siril.failable_command("stack bias bias_master")
        if not result:
            print("Stack failed, make a change and try again")

if __name__ == "__main__":
    asyncio.run(main())

Roadmap

Please see ROADMAP.md for more details.

Contributing

PRs are welcome & appreciated! See the contributing guide to get started.

FAQ

Why not use pysiril?

pysiril is a great library for interacting with Siril. However, it is not asyncio based and does not provide a pythonic interface to the Siril command line interface.

Siril just added python scripting, how is this different?

The new python scripting added to Siril is a great improvement for in-app scripts. However, sometimes you just need a simple interface for headless operations of Siril.

Acknowledgements

Siril is a fantastic piece of software and I am grateful to the free-astro team for their hard work. Special thanks to Vincent for answering questions and providing support.

License

async-siril is licensed under:

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in async-siril by you, as defined in the BSD-3-Clause license, shall be dually licensed as above, without any additional terms or conditions.

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

async_siril-0.1.5.tar.gz (112.4 kB view details)

Uploaded Source

Built Distribution

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

async_siril-0.1.5-py3-none-any.whl (61.9 kB view details)

Uploaded Python 3

File details

Details for the file async_siril-0.1.5.tar.gz.

File metadata

  • Download URL: async_siril-0.1.5.tar.gz
  • Upload date:
  • Size: 112.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.19

File hashes

Hashes for async_siril-0.1.5.tar.gz
Algorithm Hash digest
SHA256 98cddf59f4cf7ecf00fd57ff03e4afe0de842985b6e600cca3ccff59c2519a80
MD5 dcbe9da8ecafc3174a8c72d9052f9fb5
BLAKE2b-256 bebd7a474cf2476f66ffc8088ad06265d5b2391b77b0e47398b1bec6d617b86d

See more details on using hashes here.

File details

Details for the file async_siril-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for async_siril-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 c4a7aa6ba62bb307226186943cc7bf9a31b1679db5eb0f0b4a1edbd29eeac0fc
MD5 65cd9d60f0f5ae8a96ecbb0e75c657e1
BLAKE2b-256 4cf85ca841ce4e8a69b7b1ab95166050696dcabead0dfde4f41e807e8b319168

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