#griffe

2025-05-30

Gestern habe ich am #Trailbike neue #Griffe von #ESI montiert, weil die Alten inzwischen doch durch waren. Heute habe ich mit dem Lenkerende leicht an einem Baum touchiert und erst später bemerkt, dass es mir dabei den nagelneuen Lenkerstopfen raus gezogen hat. Also vorhin den Müll nach den alten Stopfen durchsucht 🙈

Warum das immer nur passiert, wenn was nagelneu ist
🤔🤷

#MurphysLaw

#Mountainbike #MTB #biken

@mtb@fedigroups.social
@fedibiker@fedigroups.social
@bikes@a.gup.pe
@fedibikes@a.gup.pe
@fedibikes@soc.schuerz.at
@mastobikes_de@a.gup.pe
@radlobby@bird.makeup

2025-05-24

Hat zufällig irgendwer eine Idee, was das für ein #Sattel sein könnte, zu dem es wohl auch noch passende #Griffe gibt?

Der Sattel fühlt sich bisher super an.

Ich habe schon gesucht, aber nichts gefunden.

Edit:
Danke für die vielen tollen und schnellen Tipps. Es ist in der Tat ein Modell von NG Sports: "Chaibu ReCycle Race Komfort Sattel" vermutl. aus der #SaltyCactusCollection :-)

starbike.com/de/ng-sports-chai

Eine Nahaufnahme eines Fahrradsitzes mit einem strukturierten schwarzen Bezug, mit dem Wort "RECYCLE" und einem Blatt-Emblem vor einem grasigen Hintergrund.Nahaufnahme eines strukturierten schwarzen Fahrradsattels mit einem weißen Wolkenlogo. Das Fahrrad befindet sich auf einem Weg mit sichtbarem Gras im Hintergrund.Eine Nahaufnahme eines Fahrradsattels und Rahmens, mit einem verschwommenen Fokus auf den Lenker. Das Fahrrad verfügt über grobstollige Reifen, und die Einstellung umfasst einen gepflasterten Weg und Gras im Hintergrund.Nahaufnahme eines Fahrradlenkergriffs und Bremshebels, mit einem verschwommenen Hintergrund mit einem Teil eines Rades und Gras.
Timothée Mazzucotelli :python:pawamoy@fosstodon.org
2025-03-11

Kinda crazy to see #Griffe mentioned as inspiration for the design of #OpenAI's Agents SDK 🤯 Cool to see the SDK's API reference being documented with #mkdoctrings, too 🥰

2025-02-09

L'OCTOMBULE — Thématique "L'ours". Ce dernier dessinée par Jean-François Caritte trône sur le recto de notre feuille chérie. Ça griffe et ça hiberne, mais l'imprimé n'est pas loin avec son ourse. Hommage à l'imprimeur de L'OCTOMBULE M. Inocto.

A2 — recto/verso — offset — noir et blanc — 800 ex. Prix : 0,10 € la monnaie n'est pas rendue

La remontée (ou la descente vers le Zéro) se poursuivra un de ces quatre matins avec l'affichage du Zseize sur ce fil.

#samizdat #journal #impression #parution #dépôtlégal #ourse #caverne #ours #griffe #hibernation #fourrure #pyrenees #graphisme #nounours #typographie #maquette #écriture #dada #poésie #farce

Timothée Mazzucotelli :python:pawamoy@fosstodon.org
2024-10-12

Next, griffe-pydantic, a #Griffe extension for #Pydantic models:

mkdocstrings.github.io/griffe-

Timothée Mazzucotelli :python:pawamoy@fosstodon.org
2024-10-12

Next, Griffe TUI, a #Textual user interface for #Griffe:

mkdocstrings.github.io/griffe-

Timothée Mazzucotelli :python:pawamoy@fosstodon.org
2024-08-18

We're starting to have a number of #Griffe extensions 🤩 They're all listed here: mkdocstrings.github.io/griffe/

Timothée Mazzucotelli :python:pawamoy@fosstodon.org
2024-08-16

I added a few pages to #Griffe's docs: alternative projects, downstream projects, and built-in/official/third-party extensions.

Very cool projects mentioned in there! #Docspec, #pdoc, #papyri, #quartodoc, etc. And I discovered a few Griffe extensions in the process, it's awesome 🤩

- mkdocstrings.github.io/griffe/
- mkdocstrings.github.io/griffe/
- mkdocstrings.github.io/griffe/

Timothée Mazzucotelli :python:pawamoy@fosstodon.org
2024-08-14

I think #Griffe is ready for v1. Just one more v0 release to communicate one last deprecation.

Timothée Mazzucotelli :python:pawamoy@fosstodon.org
2024-07-05

I'm marking all the deprecated stuff in #Griffe with #Yore comments.

Yore is a new tool of mine that helps you manage legacy code. You write comments above lines or blocks of code, with a simple grammar for applying transformations once a version is reached (e.g. 1.0.0) or once a minor Python version reaches its End Of Life.

#python #legacy #deprecation #eol #majorbump

git grep -A1 YORE

src/_griffe/expressions.py:# YORE: EOL 3.9: Replace `**_dataclass_opts` with `slots=True` within line.
src/_griffe/expressions.py-@dataclass(eq=True, **_dataclass_opts)
--
src/_griffe/expressions.py:# YORE: EOL 3.8: Remove block.
src/_griffe/expressions.py-if sys.version_info < (3, 9):
--
src/_griffe/extensions/base.py:# YORE: Bump 1.0.0: Remove block.
src/_griffe/extensions/base.py-class VisitorExtension:
--
src/_griffe/extensions/base.py:# YORE: Bump 1.0.0: Remove block.
src/_griffe/extensions/base.py-class InspectorExtension:
--
src/_griffe/extensions/base.py:# YORE: Bump 1.0.0: Remove block.
src/_griffe/extensions/base.py-ExtensionType = Union[VisitorExtension, InspectorExtension, Extension]
--
src/_griffe/extensions/base.py:# YORE: Bump 1.0.0: Regex-replace `\bExtensionType\b` with `Extension` within line.
src/_griffe/extensions/base.py-LoadableExtensionType = Union[str, Dict[str, Any], ExtensionType, Type[ExtensionType]]
--
src/_griffe/extensions/base.py:    # YORE: Bump 1.0.0: Replace `ExtensionType` with `Extension` within line.
src/_griffe/extensions/base.py-    def __init__(self, *extensions: ExtensionType) -> None:
--
src/_griffe/extensions/base.py:        # YORE: Bump 1.0.0: Remove block.
src/_griffe/extensions/base.py-        self._visitors: dict[When, list[VisitorExtension]] = defaultdict(list)
--
src/_griffe/extensions/base.py:    # YORE: Bump 1.0.0: Replace `ExtensionType` with `Extension` within line.

etc.
Timothée Mazzucotelli :python:pawamoy@fosstodon.org
2024-07-05

I'm adding tests to #Griffe, that use Griffe to check if:

- all public objects are exposed in the top-level init module
- all public objects are added to the API docs (HTML), and therefore if they are added to the objects inventory (#Sphinx-like objects.inv file)
- if no other object is added to the inventory (no private objects)

Thanks to these tests I made sure not to forget *anything* while rewriting Griffe's docs!

#python #api #docs

Timothée Mazzucotelli :python:pawamoy@fosstodon.org
2024-06-12

I'm completely rewriting #Griffe's docs. Griffe is all about public APIs, so its API docs should be exemplary.

These will be the best docs I've written until now. I've taken inspiration from projects with great documentation: #Hatch, #MaterialforMkDocs and #Textual notably 🙂

Screenshot of a docs page built with MkDocs and Material for MkDocs.
Timothée Mazzucotelli :python:pawamoy@fosstodon.org
2024-06-09

I'm experimenting with moving all my code into a private package, and exposing every public object in the top-level init module of a sibling public package:

- _griffe has all the internal API
- griffe exposes public objects

I added a test to my tests file that loads the internal #API (using #Griffe of course 😂) and checks that every "public" name in the internal API is exposed in the public package. Impossible to miss some, and that forces me to privatize the rest.

#python

Timothée Mazzucotelli :python:pawamoy@fosstodon.org
2024-06-08

Working towards a v1.0 for #Griffe. I will enjoy removing all the legacy code used for backward compatibility 😛

We're not there yet. See the milestone: github.com/mkdocstrings/griffe

Timothée Mazzucotelli :python:pawamoy@fosstodon.org
2024-05-31

It's good to be challenged by users.

I was reluctant to add support in #Griffe for some conventions used in the #Python ecosystem to mark objects as "exported".

To make proper arguments, I had to take a good, serious look at my codebase again. By doing so, I actually identified issues and clear improvements, that once fixed/refactored would allow Griffe to easily support these conventions in a way that makes complete sense 👍

github.com/mkdocstrings/python

Timothée Mazzucotelli :python:pawamoy@fosstodon.org
2024-05-12

Quite the feature in #Griffe: the ability to force using dynamic analysis to extract data from #Python packages. Previously it would use static analysis by default and only fallback to dynamic analysis for built-in/compiled modules. Now you can use dynamic analysis for modules with sources available too 🙂

This wasn't an easy change as I thought, but I'm happy how the code evolved.

I've just released v0.45.0. Crossed-fingers for no regressions 🤞 (tests added, but, you know, can't ever be sure)

Timothée Mazzucotelli :python:pawamoy@fosstodon.org
2024-05-07

Thanks @orsinium. Until now I was fighting this (trying to find out the true parent module), but seeing how inconsistent this is, I give up and will just use what Python gives me.

To give more context: I'm trying to improve the code in #Griffe that inspects object trees (dynamic analysis). To know whether an object should be added to the currently inspected module as a member or as an alias pointing to somewhere else, I have to check where the object originates from.

github.com/mkdocstrings/griffe

Timothée Mazzucotelli :python:pawamoy@fosstodon.org
2024-03-12

I have published a "best practices" document in #Griffe's docs:

mkdocstrings.github.io/griffe/

It says:

- avoid member-submodule name shadowing (the issue described above ☝️)
- avoid wildcard imports
- prefer canonical imports (we recommend @15r10nk's canonical-import tool!)

These recommendations are given from a "static analysis" and "public API" point of view.

I'll gradually add more of these 🙂

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst