hug (Hopefully Useful Guide) is a microframework for exposing idiomatically correct and standard internal Python APIs externally.
It is a framework to allow developers and architects to define logic and structure once, and then cleanly expose it over other means.
hug has very minimal base system requirements – a local installation of Python3.3+, and optionally inside a virtualenv. Additionally, pip is required, but this is included with most Python3 installations by default.
Features include:
- Clean way to create HTTP REST APIs.
- Seamless micro-service communication, which makes it easy to switch out pure Python calls for HTTP communication and vice versa.
- Expandable type system for simple parameters.
- Full integrated support for Marshmallow, an advanced serialization, deserialization, and validation library. Hug supports using marshmallow fields and schemas as input types.
- Python3 type annotations for validation and API specification.
- Provides a handful of directives for commonly needed attributes.
- number: Validates that a whole number was passed in.
- float_number: Validates that a valid floating point number was passed in.
- decimal: Validates and converts the provided value into a Python Decimal object.
- uuid: Validates that the provided value is a valid UUID.
- text: Validates that the provided value is a single string parameter.
- multiple: Ensures the parameter is passed in as a list (even if only one value is passed).
- boolean: A basic naive HTTP style boolean where no value passed in is seen as ‘False’ and any value passed in (even if its ‘false’) is seen as ‘True’.
- smart_boolean: A smarter, but more CPU expensive, boolean that checks the content of the value for common true / false formats (true, True, t, 1) or (false, False, f, 0).
- delimited_list(delimiter): splits up the passed in value based on the provided delimiter and then passes it to the function as a list.
- one_of (values): Validates that the passed in value is one of those specified.
- mapping(dict_of_passed_in_to_desired_values): Like ‘one_of’, but with a dictionary of acceptable values, to converted value.
- multi(types): Allows passing in multiple acceptable types for a parameter, short circuiting on the first acceptable one/
- in_range(lower, upper, convert=number): Accepts a number within a lower and upper bound of acceptable values.
- less_than(limit, convert=number): Accepts a number within a lower and upper bound of acceptable values.
- – `greater_than(minimum, convert=number)`: Accepts a value above a given minimum
- length(lower, upper, convert=text): Accepts a value that is within a specific length limit.
- shorter_than(limit, convert=text): Accepts a text value shorter than the specified length limit/
- longer_than(limit, convert=text): Accepts a value up to the specified limit.
- cut_off(limit, convert=text): Cuts off the provided value at the specified index.
- Create new directives.
- Hug routing:
- Can be used directly as function decorators.
- Can be used separately from the function.
- Can be stored, modified, and chained before being used. Every route object is chainable and doesn’t perform any actions until it is ran against a function, method, or object.
- Supports any WSGI server that uses autoreloading, for example Gunicorn and uWSGI.
- Built upon Falcon’s high performance HTTP library.
- Split APIs over multiple files.
Website: github.com/hugapi/hug
Support:
Developer: Timothy Edmund Crosley
License: MIT License
hug is written in Python. Learn Python with our recommended free books and free tutorials.
Return to Python Microframeworks
Popular series | |
---|---|
The largest compilation of the best free and open source software in the universe. Each article is supplied with a legendary ratings chart helping you to make informed decisions. | |
Hundreds of in-depth reviews offering our unbiased and expert opinion on software. We offer helpful and impartial information. | |
The Big List of Active Linux Distros is a large compilation of actively developed Linux distributions. | |
Replace proprietary software with open source alternatives: Google, Microsoft, Apple, Adobe, IBM, Autodesk, Oracle, Atlassian, Corel, Cisco, Intuit, and SAS. | |
Awesome Free Linux Games Tools showcases a series of tools that making gaming on Linux a more pleasurable experience. This is a new series. | |
Machine Learning explores practical applications of machine learning and deep learning from a Linux perspective. We've written reviews of more than 40 self-hosted apps. All are free and open source. | |
New to Linux? Read our Linux for Starters series. We start right at the basics and teach you everything you need to know to get started with Linux. | |
Alternatives to popular CLI tools showcases essential tools that are modern replacements for core Linux utilities. | |
Essential Linux system tools focuses on small, indispensable utilities, useful for system administrators as well as regular users. | |
Linux utilities to maximise your productivity. Small, indispensable tools, useful for anyone running a Linux machine. | |
Surveys popular streaming services from a Linux perspective: Amazon Music Unlimited, Myuzi, Spotify, Deezer, Tidal. | |
Saving Money with Linux looks at how you can reduce your energy bills running Linux. | |
Home computers became commonplace in the 1980s. Emulate home computers including the Commodore 64, Amiga, Atari ST, ZX81, Amstrad CPC, and ZX Spectrum. | |
Now and Then examines how promising open source software fared over the years. It can be a bumpy ride. | |
Linux at Home looks at a range of home activities where Linux can play its part, making the most of our time at home, keeping active and engaged. | |
Linux Candy reveals the lighter side of Linux. Have some fun and escape from the daily drudgery. | |
Getting Started with Docker helps you master Docker, a set of platform as a service products that delivers software in packages called containers. | |
Best Free Android Apps. We showcase free Android apps that are definitely worth downloading. There's a strict eligibility criteria for inclusion in this series. | |
These best free books accelerate your learning of every programming language. Learn a new language today! | |
These free tutorials offer the perfect tonic to our free programming books series. | |
Linux Around The World showcases usergroups that are relevant to Linux enthusiasts. Great ways to meet up with fellow enthusiasts. | |
Stars and Stripes is an occasional series looking at the impact of Linux in the USA. |