Skip to main content

Decorated functions as entry points.

Project description

entrypoint

License Version Downloads Discord

Documentation Check Test Coverage

Decorated functions as entry points.

In python, an entry point can be thought of as an explicit function that gets called when the script is run directly from the console.

Defining an entry point requires some boilerplate code, which is abstracted away by this library.

Installing

Python 3.7 or above is required.

pip

Installing the library with pip is quite simple:

$ pip install entrypoint

Alternatively, the library can be installed from source:

$ git clone https://github.com/nekitdev/entrypoint.git
$ cd entrypoint
$ python -m pip install .

poetry

You can add entrypoint as a dependency with the following command:

$ poetry add entrypoint

Or by directly specifying it in the configuration like so:

[tool.poetry.dependencies]
entrypoint = "^1.2.3"

Alternatively, you can add it directly from the source:

[tool.poetry.dependencies.entrypoint]
git = "https://github.com/nekitdev/entrypoint.git"

Examples

Decorated

Declare the main function as an entry point:

from entrypoint import entrypoint

@entrypoint(__name__)
def main() -> None:
    print("Hello, world!")

Run the script directly from the console:

$ python file.py
Hello, world!

When importing the module, main does not get called:

>>> import file
>>> # no output

Note

Note that main gets called immediately, before any code below can be executed.

@entrypoint(__name__)
def main() -> None:
    print("-> in main")

print("<- outside")
$ python note.py
-> in main
<- outside

Direct

It is possible to run main directly:

entrypoint(__name__).call(main)

This method allows to take control over where and when the function gets called.

Check

entrypoint also provides is_main function that resembles the common (and de-facto standard) way of implementing entry points:

from entrypoint import is_main

if is_main(__name__):
    print("Hello, world!")

Async

entrypoint does not provide any specific functionality to run async functions.

Instead, you can specify, for example, a main function that runs its async_main counterpart:

import asyncio

async def async_main() -> None:
    print("Hello, world!")

@entrypoint(__name__)
def main() -> None:
    asyncio.run(async_main())

Documentation

You can find the documentation here.

Support

If you need support with the library, you can send an email or refer to the official Discord server.

Changelog

You can find the changelog here.

Security Policy

You can find the Security Policy of wraps here.

Contributing

If you are interested in contributing to entrypoint, make sure to take a look at the Contributing Guide, as well as the Code of Conduct.

License

entrypoint is licensed under the MIT License terms. See License for details.

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

entrypoint-1.2.3.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

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

entrypoint-1.2.3-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file entrypoint-1.2.3.tar.gz.

File metadata

  • Download URL: entrypoint-1.2.3.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.0b2 CPython/3.10.5 Linux/5.13.0-1031-azure

File hashes

Hashes for entrypoint-1.2.3.tar.gz
Algorithm Hash digest
SHA256 b261450a8f4a631f4c685e805b37ae08d68c35f0cc7a7d9d33ff41048fa92828
MD5 96d47c0a1ffeb80e9fb810ff0623d7cb
BLAKE2b-256 ac124820afdd2a0427ae8b5db34f29ead407646fa91e56bf6740476fcd18ba04

See more details on using hashes here.

File details

Details for the file entrypoint-1.2.3-py3-none-any.whl.

File metadata

  • Download URL: entrypoint-1.2.3-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.0b2 CPython/3.10.5 Linux/5.13.0-1031-azure

File hashes

Hashes for entrypoint-1.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7216dcc9e943a86a815a2f36551e2dff074db16aad1334139a1d8503f6260e24
MD5 8cc5ec4db3df9e36168067e6c881eec6
BLAKE2b-256 11af909bd0d758888b2ac1637d352a9006e05a28678b56b1ade86a33dfa368c3

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