Skip to main content
Documentation Continuous Integration Coverage Report

Blacksmith is a library to build a solid microservices architecture based on REST API.

Todays, developers have lots of choices to create microservices, plenty of framework are available, but when it comes to consume them, there is a lack of clients.

Consuming an API is not just about doing HTTP requests, it has to be designed for failure, monitoring, and service discovery with an elegant abstraction. blacksmith aims to provide a solution for developers to write clean client code and for ops to monitor api calls also on the client side.

What is Blacksmith

Blacksmith is a declarative tool for consuming REST Api.

In a REST API, resources are declared under HTTP routes, and every http verb has its own definition.

In Blacksmith, every resources are bound to schemas that define request and response, in order to abstract HTTP.

This is a common concept for SQL table with ORM, where tables are bound to models, and then, operations are available on models. This is a usefull abstraction to write maintainable code and to dive into a project easilly.

Handling API resources using an http client, such as requests does not handle that abstraction, and does not handle bindings to objects, and can be compared to a raw connection because it is just a transport.

This is the problem blacksmith is trying to solve, having a nice abstraction of services that use REST in a microservices architecture.

Why not using a SDK to consume APIs ?

SDK are about importing an external library in a service. And a service is consumed by many services for different purpose. As a result, SDK create coupling between service, and this is something that should be avoid.

An SDK for a service will declare all the resources, routes, and attribute of resources when a service consumer may consume just a few.

SDK may hide what is really used by every service.

To avoid this, every consumers of API, should declare its own consumers contracts to get a better view of which service use what.

Building SDK

By the way, blacksmith can be use to build a SDK for public API.

Working with or without asyncio

Blacksmith is written for asyncio, but works with synchronous API without overhead. The synchronous API is generated using unasync and tested.

Read More

You can read the full documentation of this library here.

Metadata

Release files for Blacksmith 5.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Blacksmith 5.1.0
File Size Uploaded
blacksmith-5.1.0.tar.gz 42.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for Blacksmith 5.1.0
File Interpreter ABI Platform
blacksmith-5.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 112.6 kB

Release files / blacksmith-5.1.0.tar.gz

Download URL blacksmith-5.1.0.tar.gz
Size 42.4 kB
Tags Source
SHA-256 checksum
How to use checksums
10dca6a3a5ca78c7b8ce0066e0a1022981a568957cd04f0e0ff63263c416e3b8
BLAKE2b-256 checksum
How to use checksums
196b57b34342b79243bb0c95b6e16c6750e166ebaed049ee09c154657da9da9f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via pdm/2.26.6 CPython/3.12.12 Linux/6.11.0-1018-azure

Release files / blacksmith-5.1.0-py3-none-any.whl

Download URL blacksmith-5.1.0-py3-none-any.whl
Size 70.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0a1d85f3463c8ae48bd0a642f39861fc1c151624508dfd96a858e3eeaaf849d5
BLAKE2b-256 checksum
How to use checksums
f6112fd8b7a15afa39a2479e2bcc0a1f3a20e369efc3bba4b487b25078a7573d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via pdm/2.26.6 CPython/3.12.12 Linux/6.11.0-1018-azure

Release history Release notifications | RSS feed

This release

5.1.0 This release

2 release files

5.0.1

2 release files

5.0.0

2 release files

4.1.2

2 release files

4.1.1

2 release files

4.1.0

2 release files

4.0.5

2 release files

4.0.4

2 release files

4.0.3

2 release files

4.0.2

2 release files

4.0.1

2 release files

4.0.0

2 release files

3.1.1

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.7.2

2 release files

2.7.1

2 release files

2.7.0

2 release files

2.6.1

2 release files

2.6.0

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.3

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.13.3

2 release files

0.13.2

2 release files

0.13.1

2 release files

0.13.0

2 release files

0.12.1

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page