- Create Economist SubmissionTracking package correctly: * mainArticle = full blog post content * coverLetter = 216-word SIR— letter * Links to blog post via blogPostId - Archive 'Letter to The Economist' from blog posts (it's the cover letter) - Fix date display on article cards (use published_at) - Target publication already displaying via blue badge Database changes: - Make blogPostId optional in SubmissionTracking model - Economist package ID: 68fa85ae49d4900e7f2ecd83 - Le Monde package ID: 68fa2abd2e6acd5691932150 Next: Enhanced modal with tabs, validation, export 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
import pkgutil
|
|
import sys
|
|
import fontTools
|
|
import importlib
|
|
import os
|
|
from pathlib import Path
|
|
|
|
|
|
def main():
|
|
"""Show this help"""
|
|
path = fontTools.__path__
|
|
descriptions = {}
|
|
for pkg in sorted(
|
|
mod.name
|
|
for mod in pkgutil.walk_packages([fontTools.__path__[0]], prefix="fontTools.")
|
|
):
|
|
try:
|
|
imports = __import__(pkg, globals(), locals(), ["main"])
|
|
except ImportError as e:
|
|
continue
|
|
try:
|
|
description = imports.main.__doc__
|
|
# Cython modules seem to return "main()" as the docstring
|
|
if description and description != "main()":
|
|
pkg = pkg.replace("fontTools.", "").replace(".__main__", "")
|
|
# show the docstring's first line only
|
|
descriptions[pkg] = description.splitlines()[0]
|
|
except AttributeError as e:
|
|
pass
|
|
for pkg, description in descriptions.items():
|
|
print("fonttools %-25s %s" % (pkg, description), file=sys.stderr)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print("fonttools v%s\n" % fontTools.__version__, file=sys.stderr)
|
|
main()
|