
Security News
NVD Quietly Sweeps 100K+ CVEs Into a “Deferred” Black Hole
NVD now marks all pre-2018 CVEs as "Deferred," signaling it will no longer enrich older vulnerabilities, further eroding trust in its data.
entrypoint
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.
Python 3.8 or above is required.
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 .
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 = "^2.1.0"
Alternatively, you can add it directly from the source:
[tool.poetry.dependencies.entrypoint]
git = "https://github.com/nekitdev/entrypoint.git"
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 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
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.
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!")
entrypoint
expects main
functions to not have arguments and return nothing.
Even though this is not checked at runtime, returning from main
will cause
type-checkers to error!
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:
from async_extensions import run
async def async_main() -> None:
print("Hello, world!")
@entrypoint(__name__)
def main() -> None:
run(async_main())
In case an entry point gets created without __name__
given, it is going to attempt
to fetch the module from the main
function provided.
@entrypoint()
def main() -> None:
print("Hello, world!")
Please keep in mind that calling functions defined outside the __main__
module
will not work with implicit fetching.
You can find the documentation here.
If you need support with the library, you can send an email or refer to the official Discord server.
You can find the changelog here.
You can find the Security Policy of entrypoint
here.
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.
entrypoint
is licensed under the MIT License terms. See License for details.
FAQs
Decorated functions as entry points.
We found that entrypoint demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
NVD now marks all pre-2018 CVEs as "Deferred," signaling it will no longer enrich older vulnerabilities, further eroding trust in its data.
Research
Security News
Lazarus-linked threat actors expand their npm malware campaign with new RAT loaders, hex obfuscation, and over 5,600 downloads across 11 packages.
Security News
Safari 18.4 adds support for Iterator Helpers and two other TC39 JavaScript features, bringing full cross-browser coverage to key parts of the ECMAScript spec.