Hug – Simplify API Development with this Python Microframework

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.

Support: GitHub Code Repository
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
Free and Open Source SoftwareThe 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.
ReviewsHundreds of in-depth reviews offering our unbiased and expert opinion on software. We offer helpful and impartial information.
Alternatives to Proprietary SoftwareReplace proprietary software with open source alternatives: Google, Microsoft, Apple, Adobe, IBM, Autodesk, Oracle, Atlassian, Corel, Cisco, Intuit, and SAS.
GamesAwesome Free Linux Games Tools showcases a series of tools that making gaming on Linux a more pleasurable experience. This is a new series.
Artificial intelligence iconMachine 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.
Guide to LinuxNew 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.
System ToolsEssential Linux system tools focuses on small, indispensable utilities, useful for system administrators as well as regular users.
ProductivityLinux utilities to maximise your productivity. Small, indispensable tools, useful for anyone running a Linux machine.
AudioSurveys popular streaming services from a Linux perspective: Amazon Music Unlimited, Myuzi, Spotify, Deezer, Tidal.
Saving Money with LinuxSaving Money with Linux looks at how you can reduce your energy bills running Linux.
Home ComputersHome computers became commonplace in the 1980s. Emulate home computers including the Commodore 64, Amiga, Atari ST, ZX81, Amstrad CPC, and ZX Spectrum.
Now and ThenNow and Then examines how promising open source software fared over the years. It can be a bumpy ride.
Linux at HomeLinux 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 CandyLinux Candy reveals the lighter side of Linux. Have some fun and escape from the daily drudgery.
DockerGetting Started with Docker helps you master Docker, a set of platform as a service products that delivers software in packages called containers.
Android AppsBest Free Android Apps. We showcase free Android apps that are definitely worth downloading. There's a strict eligibility criteria for inclusion in this series.
Programming BooksThese best free books accelerate your learning of every programming language. Learn a new language today!
Programming TutorialsThese free tutorials offer the perfect tonic to our free programming books series.
Linux Around The WorldLinux Around The World showcases usergroups that are relevant to Linux enthusiasts. Great ways to meet up with fellow enthusiasts.
Stars and StripesStars and Stripes is an occasional series looking at the impact of Linux in the USA.
Notify of

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Inline Feedbacks
View all comments