Toolset 4.0.0 released

277 views
Skip to first unread message

Alex Cabal

unread,
Jun 30, 2026, 4:14:38 PMJun 30
to Standard Ebooks Mailing List
Upgrade using `pipx upgrade standardebooks`.

This version introduces major changes in how we model some metadata in
`content.opf`.

Previously, we used a lot of custom `se:` vocabulary to include various
additional metadata in `content.opf`.

This was because at the time SE started (10-15 years ago), schema.org, a
global registry of semantic keywords and relationships, was not as
developed and didn't include a lot of the vocabulary we were trying to
express in metadata.

Schema.org has advanced a lot since then, and now contains basically all
of the vocabulary we need to express the METADATA semantics we
previously had to express using the `se:` vocabulary. (Note that I'm
only talking about METADATA in `content.opf`, not semantics in ebook
text.) It has also been part of the epub spec since epub 3.1.

Additionally, epub 3.3 allows the use of `<link>` elements in the
metadata to better express direct linking relationships, instead of
`<meta>`.

In SE 4.0.0, we've completed an (almost) total conversion to schema.org
vocabulary for metadata, and epub 3.3-style `<link>`s where appropriate.

Many of these changes are 1:1 relations:

<meta property="se:url.encyclopedia.wikipedia" refines="...">URL</meta>
-> <link href="URL" refines="..." rel="schema:sameAs"/>

<meta property="se:url.homepage" refines="...">URL</meta> -> <link
href="URL" refines="..." rel="schema:url"/>

<meta property="se:name.person.pen-name" refines="...">SOME NAME</meta>
-> <meta property="schema:alternateName" refines="...">SOME NAME</meta>

<meta property="se:name.person.full-name" refines="...">SOME NAME</meta>
-> <meta property="schema:alternateName" refines="...">SOME NAME</meta>

<meta property="se:reading-ease.flesch">NUMBER</meta> -> <meta
property="schema:educationalLevel">NUMBER</meta>

<meta property="se:subject">SUBJECT</meta> -> <meta
property="schema:genre">SUBJECT</meta>

<meta property="se:word-count">NUMBER</meta> -> <meta
property="schema:wordCount">NUMBER</meta>

<meta property="se:is-a-collection">true</meta> -> <meta
property="schema:additionalType">http://schema.org/Collection</meta>

We also change how we model NACOAF URLs:

<meta property="se:url.authority.nacoaf" refines="...">URL</meta> ->
<link href="URL" refines="..." rel="schema:sameAs"/>

Since we're changing the NACOAF property from a URI to a URL link, you
must now use the actual URLs of the LoC names authority pages. This will
be easier for you because you can just copy and paste from your address
bar, when before you had to create a URI out of the URL by changing it
to http and removing the file extension.

Some metadata requires some slightly more complex modeling, like the
GitHub URL:

<meta property="se:url.vcs.github">GITHUB_URL</meta>

becomes:

<meta property="schema:workExample"
id="vcs-repository">schema:workExample</meta>
<meta property="rdf:type"
refines="#vcs-repository">http://schema.org/SoftwareSourceCode</meta>
<link href="GITHUB_URL" refines="#vcs-repository"
rel="schema:codeRepository"/>

And in collections, the `se:title-in-collection`:

<meta property="se:title-in-collection" refines="...">TITLE</meta>

becomes:

<meta property="schema:hasPart" refines="#collection-N"
id="collection-N-entry-1">schema:hasPart</meta>
<meta property="rdf:type"
refines="#collection-N-entry-1">http://schema.org/CreativeWork</meta>
<meta property="schema:name" refines="#collection-N-entry-1">TITLE</meta>

Lastly, we're moving the production notes out of `content.opf`, because
much like the `se-lint-ignore.xml` file, they're production-related
details that don't really belong in the actual ebook distributable.
Therefore, instead of

<meta property="se:production-notes">NOTES</meta>

there is a new `production-notes.md` file in the project root that you
can use for that purpose. If you have no production notes, you must
delete that file as part of the production process. Lint will alert you
of this.

The only SE vocabulary item that remains, and is unchanged, is
`se:long-descrition`. Robin is doing research on some ways we can use
native semantic vocabulary to express the differences between the short
and long descriptions, while still maintaining ereader compatibility.

Lastly, there is no need to update your current projects for this new
schema, I will make the changes on my end when reviewing the ebook. If
you want to make the changes early, this GNU sed script will do most of
it in one line:

sed -i -E "
s|<meta property=\"se:url.homepage\"
refines=\"([^\"]+?)\">([^<]+?)</meta>|<link href=\"\2\" refines=\"\1\"
rel=\"schema:url\"/>|g;
s|<meta property=\"se:subject\">|<meta property=\"schema:genre\">|g;
s|<meta property=\"se:is-a-collection\">true</meta>|<meta
property=\"schema:additionalType\">http://schema.org/Collection</meta>|;
s|<meta property=\"se:word-count\">|<meta property=\"schema:wordCount\">|;
s|<meta property=\"se:reading-ease.flesch\">|<meta
property=\"schema:educationalLevel\">|;
s|<meta property=\"se:url.encyclopedia.wikipedia\"(
refines=\"([^\"]+?)\")?>(.+?)</meta>|<link href=\"\3\"\1
rel=\"schema:sameAs\"/>|g;
s~ property=\"se:(name.person.pen-name|name.person.full-name)\"~
property=\"schema:alternateName\"~g;
s|<meta property=\"se:url.authority.nacoaf\"
refines=\"([^\"]+?)\">([^<]+?)</meta>|<link href=\"\2\" refines=\"\1\"
rel=\"schema:sameAs\"/>|g;
s|<meta property=\"se:url.vcs.github\">([^<]+?)</meta>|<meta
property=\"schema:workExample\"
id=\"vcs-repository\">schema:workExample</meta>\n\t\t<meta
property=\"rdf:type\"
refines=\"#vcs-repository\">http://schema.org/SoftwareSourceCode</meta>\n\t\t<link
href=\"\1\" refines=\"#vcs-repository\" rel=\"schema:codeRepository\"/>|g;
s|\"http://id.loc.gov/authorities/names/([^\"]+?)\"|\"https://id.loc.gov/authorities/names/\1.html\"|g;
s|prefix=\"se: https://standardebooks.org/vocab/1.0\"|prefix=\"se:
https://standardebooks.org/vocab/1.0 rdf:
http://www.w3.org/1999/02/22-rdf-syntax-ns#\"|;
s|<dc:publisher|<meta
property=\"rdf:type\">http://schema.org/Book</meta>\n\t\t<dc:publisher|;
s|<meta property=\"se:title-in-collection\"
refines=\"#collection-([0-9]+)\">([^<]+?)</meta>|<meta
property=\"schema:hasPart\" refines=\"#collection-\1\"
id=\"collection-\1-entry-1\">schema:hasPart</meta>\n\t\t<meta
property=\"rdf:type\"
refines=\"#collection-\1-entry-1\">http://schema.org/CreativeWork</meta>\n\t\t<meta
property=\"schema:name\" refines=\"#collection-\1-entry-1\">\2</meta>|g;
" ./src/epub/content.opf

You still have to move production notes into its own file though.

Full changelog:

# 4.0.0

## General

- Update metadata to new schema.org-based standards

## se build

- Add `schema:version` metadata to built EPUBs with the source commit
and build type

- Remove stray cache pruning notification

- Fix AZW3 JPEG compression behavior for reproducible builds

## se build-toc

- Update ToC templates for ARIA accessibility

## se create-draft

- Create an empty `production-notes.md` file when creating new drafts

- Use canonical HTTPS Library of Congress Name Authority URLs

## se lint

- Confirm that `production-notes.md` exists before testing it

- Update s-019 and x-018 to accept `aria-labelledby` as valid uses of ID
attributes

- Report MusicXML files with incorrect file extensions. Thanks to Robin
Whittleton

- Add a check for missing mcp role (Music copyist) if music found Thanks
to Robin Whittleton

## se recompose-epub

- Use less memory by not canonicalizing XML unless needed

## se shift-endnotes

- Remove the `--amount` option, and make `--increment` and `--decrement`
take an integer argument

Bob Kenyon

unread,
Jul 2, 2026, 7:44:35 PMJul 2
to Standard Ebooks
When I run "se lint ." on the new 4.0.0 tools I get this error:

mark-twain_charles-dudley-warner_the-gilded-age(main) > se lint .

Traceback (most recent call last):

  File "/Users/bob/.local/pipx/venvs/standardebooks/lib/python3.11/site-packages/cssutils/util.py", line 19, in <module>

    from ._fetchgae import _defaultFetcher

  File "/Users/bob/.local/pipx/venvs/standardebooks/lib/python3.11/site-packages/cssutils/_fetchgae.py", line 7, in <module>

    from google.appengine.api import urlfetch

ModuleNotFoundError: No module named 'google'


During handling of the above exception, another exception occurred:


Traceback (most recent call last):

  File "/Users/bob/.local/bin/se", line 6, in <module>

    sys.exit(main())

             ^^^^^^

  File "/Users/bob/.local/pipx/venvs/standardebooks/lib/python3.11/site-packages/se/main.py", line 85, in main

    module = importlib.import_module(command_module)

             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "/opt/homebrew/Cellar/pyt...@3.11/3.11.11/Frameworks/Python.framework/Versions/3.11/lib/python3.11/importlib/__init__.py", line 126, in import_module

    return _bootstrap._gcd_import(name[level:], package, level)

           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "<frozen importlib._bootstrap>", line 1204, in _gcd_import

  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load

  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked

  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked

  File "<frozen importlib._bootstrap_external>", line 940, in exec_module

  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed

  File "/Users/bob/.local/pipx/venvs/standardebooks/lib/python3.11/site-packages/se/commands/lint.py", line 18, in <module>

    from se.se_epub import SeEpub

  File "/Users/bob/.local/pipx/venvs/standardebooks/lib/python3.11/site-packages/se/se_epub.py", line 30, in <module>

    from se.se_epub_lint import LintMessage

  File "/Users/bob/.local/pipx/venvs/standardebooks/lib/python3.11/site-packages/se/se_epub_lint.py", line 20, in <module>

    import cssutils

  File "/Users/bob/.local/pipx/venvs/standardebooks/lib/python3.11/site-packages/cssutils/__init__.py", line 79, in <module>

    from . import css, errorhandler, stylesheets

  File "/Users/bob/.local/pipx/venvs/standardebooks/lib/python3.11/site-packages/cssutils/css/__init__.py", line 61, in <module>

    from .csscharsetrule import CSSCharsetRule

  File "/Users/bob/.local/pipx/venvs/standardebooks/lib/python3.11/site-packages/cssutils/css/csscharsetrule.py", line 10, in <module>

    from . import cssrule

  File "/Users/bob/.local/pipx/venvs/standardebooks/lib/python3.11/site-packages/cssutils/css/cssrule.py", line 7, in <module>

    import cssutils.util

  File "/Users/bob/.local/pipx/venvs/standardebooks/lib/python3.11/site-packages/cssutils/util.py", line 21, in <module>

    from ._fetch import _defaultFetcher

  File "/Users/bob/.local/pipx/venvs/standardebooks/lib/python3.11/site-packages/cssutils/_fetch.py", line 14, in <module>

    import encutils

ModuleNotFoundError: No module named 'encutils'



It worked fine before I updated.

Thanks,
Bob

Bob R. Kenyon

unread,
Jul 2, 2026, 7:48:31 PMJul 2
to standar...@googlegroups.com
Reinstalling the ebook tools fixed the problem:

mark-twain_charles-dudley-warner_the-gilded-age(main) > pipx reinstall standardebooks

uninstalled standardebooks! ✨ 🌟 ✨

  installed package standardebooks 4.0.0, installed using Python 3.13.2

  These apps are now globally available

    - se

done! ✨ 🌟 ✨



Thanks,
Bob

-- 
You received this message because you are subscribed to a topic in the Google Groups "Standard Ebooks" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/standardebooks/rhFI4LOuKpM/unsubscribe.
To unsubscribe from this group and all its topics, send an email to standardebook...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/standardebooks/720159a1-aa01-4d42-82b5-54c50aeb956bn%40googlegroups.com.

Vince

unread,
Jul 3, 2026, 1:38:09 PMJul 3
to Ebooks Standard
I’m getting that exact same error, but uninstalling (pip3 uninstall standardebooks) and reinstalling (pip3 install -e <dir> standardebooks) the tools doesn’t help. So far, everything but lint works. Any other ideas? I’ve fallen back to 3.2 for the time being.

Alex Cabal

unread,
Jul 3, 2026, 2:58:35 PMJul 3
to standar...@googlegroups.com
try pip3 install --force-reinstall standardebooks, or try using pipx

On 7/3/26 12:37 PM, Vince wrote:
> I’m getting that exact same error, but uninstalling (pip3 uninstall
> standardebooks) and reinstalling (pip3 install -e <dir> standardebooks)
> the tools doesn’t help. So far, everything but lint works. Any other
> ideas? I’ve fallen back to 3.2 for the time being.
>
>> On Jul 2, 2026, at 6:48 PM, Bob R. Kenyon <b...@bobrk.com> wrote:
>>
>> Reinstalling the ebook tools fixed the problem:
>>
>> mark-twain_charles-dudley-warner_the-gilded-age(main) > pipx reinstall
>> standardebooks
>> uninstalled standardebooks! ✨ 🌟 ✨
>>   installed package*standardebooks**4.0.0*, installed using Python 3.13.2
>>   These apps are now globally available
>>     - se
>> done! ✨ 🌟 ✨
>>
>>
>> Thanks,
>> Bob
>>
>>> On Jul 2, 2026, at 16:44, Bob Kenyon <b...@bobrk.com
> --
> You received this message because you are subscribed to the Google
> Groups "Standard Ebooks" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to standardebook...@googlegroups.com
> <mailto:standardebook...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/
> standardebooks/CB328656-A35E-43ED-98F0-FAE73A7F0523%40letterboxes.org
> <https://groups.google.com/d/msgid/standardebooks/CB328656-
> A35E-43ED-98F0-FAE73A7F0523%40letterboxes.org?
> utm_medium=email&utm_source=footer>.

Vince

unread,
Jul 3, 2026, 3:18:05 PMJul 3
to Ebooks Standard
Thanks; the former didn’t help, the latter isn’t an option.

Vince

unread,
Jul 3, 2026, 3:24:27 PMJul 3
to Ebooks Standard
Sorry, forgot—a `pip3 list` shows encutils 1.0.0 as being installed, but going into python3 from the command line and just typing `import encutils` yields a similar error to what’s happening with lint:

Python 3.13.13 (main, Apr  8 2026, 18:23:14) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import encutils
Traceback (most recent call last):
  File "<python-input-0>", line 1, in <module>
    import encutils
ModuleNotFoundError: No module named 'encutils'

which is odd. Why wouldn’t I be able to import it if it’s present? I’ll investigate further, but any ideas appreciated.

-- 
You received this message because you are subscribed to the Google Groups "Standard Ebooks" group.
To unsubscribe from this group and stop receiving emails from it, send an email to standardebook...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/standardebooks/CBFB767F-5FB0-4793-9767-2C89969A1ED1%40letterboxes.org.

Alex Cabal

unread,
Jul 3, 2026, 3:24:40 PMJul 3
to standar...@googlegroups.com
must be something with the virtual environment. You can try finding it
and blowing it away entirely and starting from scratch. `which se` might
point to the right place (or not, python is a disaster)

On 7/3/26 2:17 PM, Vince wrote:
> Thanks; the former didn’t help, the latter isn’t an option.
>
>> On Jul 3, 2026, at 1:58 PM, 'Alex Cabal' via Standard Ebooks
>> <standar...@googlegroups.com> wrote:
>>
>> try pip3 install --force-reinstall standardebooks, or try using pipx
>>
>> On 7/3/26 12:37 PM, Vince wrote:
>>> I’m getting that exact same error, but uninstalling (pip3 uninstall
>>> standardebooks) and reinstalling (pip3 install -e <dir>
>>> standardebooks) the tools doesn’t help. So far, everything but lint
>>> works. Any other ideas? I’ve fallen back to 3.2 for the time being.
>>>> On Jul 2, 2026, at 6:48 PM, Bob R. Kenyon <b...@bobrk.com> wrote:
>>>>
>>>> Reinstalling the ebook tools fixed the problem:
>>>>
>>>> mark-twain_charles-dudley-warner_the-gilded-age(main) > pipx
>>>> reinstall standardebooks
>>>> uninstalled standardebooks! ✨ 🌟 ✨
>>>> installed package*standardebooks**4.0.0*, installed using Python 3.13.2
>>>> These apps are now globally available
>>>> - se
>>>> done! ✨ 🌟 ✨
>>>>
>>>>
>>>> Thanks,
>>>> Bob
>>>>
>>>>> On Jul 2, 2026, at 16:44, Bob Kenyon <b...@bobrk.com
>>>>> <mailto:b...@bobrk.com><mailto:b...@bobrk.com
> --
> You received this message because you are subscribed to the Google
> Groups "Standard Ebooks" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to standardebook...@googlegroups.com
> <mailto:standardebook...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/
> standardebooks/CBFB767F-5FB0-4793-9767-2C89969A1ED1%40letterboxes.org
> <https://groups.google.com/d/msgid/standardebooks/
> CBFB767F-5FB0-4793-9767-2C89969A1ED1%40letterboxes.org?
> utm_medium=email&utm_source=footer>.

Paul Bryan

unread,
Jul 3, 2026, 3:32:30 PMJul 3
to standar...@googlegroups.com
This should workaround the issue:

pipx inject standardebooks encutils

It seems the problem is cssutils is assuming encutils is being installed as a dependency, but for some reason it's not.

Alex, if you'd like more research into what's going on here, I can...
--
You received this message because you are subscribed to the Google Groups "Standard Ebooks" group.
To unsubscribe from this group and stop receiving emails from it, send an email to standardebook...@googlegroups.com.

Alex Cabal

unread,
Jul 3, 2026, 3:35:29 PMJul 3
to standar...@googlegroups.com
By all means, if this is an issue with the toolset and you can figure it
out then feel free to open a PR
>>>>>> <mailto:b...@bobrk.com><mailto:b...@bobrk.com
>> <mailto:standardebook...@googlegroups.com>.
>> To view this discussion visit https://groups.google.com/d/msgid/
>> standardebooks/CBFB767F-5FB0-4793-9767-2C89969A1ED1%40letterboxes.org
>> <https://groups.google.com/d/msgid/standardebooks/
>> CBFB767F-5FB0-4793-9767-2C89969A1ED1%40letterboxes.org?
>> utm_medium=email&utm_source=footer>.
>
> --
> You received this message because you are subscribed to the Google
> Groups "Standard Ebooks" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to standardebook...@googlegroups.com
> <mailto:standardebook...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/
> standardebooks/582f7cb5-e818-4e90-bbdc-000579b3cdd8%40app.fastmail.com
> <https://groups.google.com/d/msgid/standardebooks/582f7cb5-e818-4e90-
> bbdc-000579b3cdd8%40app.fastmail.com?utm_medium=email&utm_source=footer>.

Alex Cabal

unread,
Jul 3, 2026, 3:39:21 PMJul 3
to standar...@googlegroups.com
Although I should note that it works on my machine and also the server, which is still on python 3.10, so it's more likely to be a venv issue

Vince

unread,
Jul 3, 2026, 3:43:25 PMJul 3
to Ebooks Standard
I don’t have a virtual environment (hence no pipx). I only use python for se, so no need for yet another layer on top of it to make it even more of a disaster. :)

In the `site-packages` directory, most of the installed packages have both a `../<pkgname>` and `../<pkgname>-<version>.dist-info` directory, e.g. `../cssutils` and `../cssutils-2.15.0.dist-info`. But encutils has only the dist-info directory, no plain `../encutils` directory. There are a couple of others in the same situation (Unidecode, gitpython), and I can’t import them, either. But maybe those don’t need to be imported…

So, just to see, I did a `pip3 uninstall encutils` and then a `pip3 install encutils` and that fixed it. I don’t know why a re-install of `se` didn’t make that happen, nor do I know how encutils got in that state (or, really, even what “that state” was). encutils isn’t a direct se dependency, it appears to be used by cssutils, so theoretically installing cssutils should cause encutils to be installed. And maybe it would have been, only pip was being “fooled” by the dist-info directory being present but the actual module wasn’t.

Anyway, it appears to be working now…

Paul Bryan

unread,
Jul 3, 2026, 3:56:32 PMJul 3
to standar...@googlegroups.com
I can reproduce this problem with pipx (only when using the `pip` backend, not `uv`).

It occurs during upgrade from 3.2.0 to 4.0.0. As with Vince, there's a encutils dist-info directory only, not the encutils package itself. This appears to be a bug in the `pip` backend.

The cleanest way to "solve" this problem is simply to uninstall the `standardebooks` package and reinstall it. pipx seems to do the right thing in this case, regardless which backend is used.
--
You received this message because you are subscribed to the Google Groups "Standard Ebooks" group.
To unsubscribe from this group and stop receiving emails from it, send an email to standardebook...@googlegroups.com.

Alex Cabal

unread,
Jul 7, 2026, 5:09:16 PMJul 7
to standar...@googlegroups.com
Paul can you come up with a solution for us to implement in the codebase?

Why is this occurring in the first place?
>>>>>>>> <mailto:b...@bobrk.com>><mailto:b...@bobrk.com
>> <mailto:standardebook...@googlegroups.com>.
>> To view this discussion visit https://groups.google.com/d/msgid/
>> standardebooks/A805131B-3D42-47BA-8A8D-DC9F428F188B%40letterboxes.org
>> <https://groups.google.com/d/msgid/standardebooks/
>> A805131B-3D42-47BA-8A8D-DC9F428F188B%40letterboxes.org?
>> utm_medium=email&utm_source=footer>.
>
> --
> You received this message because you are subscribed to the Google
> Groups "Standard Ebooks" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to standardebook...@googlegroups.com
> <mailto:standardebook...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/
> standardebooks/379d66e3-8455-4e46-bf70-c5d5ee3670ad%40app.fastmail.com
> <https://groups.google.com/d/msgid/standardebooks/379d66e3-8455-4e46-
> bf70-c5d5ee3670ad%40app.fastmail.com?utm_medium=email&utm_source=footer>.

Paul Bryan

unread,
Jul 7, 2026, 8:04:38 PMJul 7
to standar...@googlegroups.com
This looks like a bug or deficiency in pip's dependency resolver during upgrade, not pipx itself or uv (both handle the `encutils` dependency correctly). We could try adding `encutils` as an explicit dependency in `standardebooks`, but it seems only a workaround for this one package and there's no telling with other packages could suffer from this down the road.

Right now, the cleanest approach would be either:

a) uninstall and reinstall standardebooks with pipx (and keep using the pip backend), or
b) install `uv` and pipx will automatically use it to resolve dependencies*.

* pipx isn't good (yet) at detecting what package was installed with what resolver, so I've had to uninstall all pipx-installed packages, install `uv` then reinstall them.
To unsubscribe from this group and stop receiving emails from it, send an email to standardebook...@googlegroups.com.


Alex Cabal

unread,
Jul 8, 2026, 11:15:04 AMJul 8
to standar...@googlegroups.com
Is this bug still present in the current version of pip which looks like
26.1.2?

If it is, are they aware of it? Should we open a bug report with them?

I'm surprised this kind of bug is occurring at the pip level, dependency
management is all that pip does.

On 7/7/26 7:04 PM, 'Paul Bryan' via Standard Ebooks wrote:
> This looks like a bug or deficiency in /pip's/ dependency resolver
>> <mailto:standar...@googlegroups.com>> wrote:
>> >>>
>> >>> must be something with the virtual environment. You can try finding
>> >>> it and blowing it away entirely and starting from scratch. `which se`
>> >>> might point to the right place (or not, python is a disaster)
>> >>>
>> >>> On 7/3/26 2:17 PM, Vince wrote:
>> >>>> Thanks; the former didn’t help, the latter isn’t an option.
>> >>>>> On Jul 3, 2026, at 1:58 PM, 'Alex Cabal' via Standard Ebooks
>> >>>>> <standar...@googlegroups.com
>> <mailto:standar...@googlegroups.com>> wrote:
>> >>>>>
>> >>>>> try pip3 install --force-reinstall standardebooks, or try using pipx
>> >>>>>
>> >>>>> On 7/3/26 12:37 PM, Vince wrote:
>> >>>>>> I’m getting that exact same error, but uninstalling (pip3
>> >>>>>> uninstall standardebooks) and reinstalling (pip3 install -e <dir>
>> >>>>>> standardebooks) the tools doesn’t help. So far, everything but
>> >>>>>> lint works. Any other ideas? I’ve fallen back to 3.2 for the time
>> >>>>>> being.
>> >>>>>>> On Jul 2, 2026, at 6:48 PM, Bob R. Kenyon <b...@bobrk.com
>> <mailto:b...@bobrk.com>> wrote:
>> >>>>>>>
>> >>>>>>> Reinstalling the ebook tools fixed the problem:
>> >>>>>>>
>> >>>>>>> mark-twain_charles-dudley-warner_the-gilded-age(main) > pipx
>> >>>>>>> reinstall standardebooks
>> >>>>>>> uninstalled standardebooks! ✨ 🌟 ✨
>> >>>>>>> installed package*standardebooks**4.0.0*, installed using Python
>> >>>>>>> 3.13.2
>> >>>>>>> These apps are now globally available
>> >>>>>>> - se
>> >>>>>>> done! ✨ 🌟 ✨
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Thanks,
>> >>>>>>> Bob
>> >>>>>>>
>> >>>>>>>> On Jul 2, 2026, at 16:44, Bob Kenyon <b...@bobrk.com
>> <mailto:b...@bobrk.com>
>> >>>>>>>> <mailto:b...@bobrk.com
>> <mailto:b...@bobrk.com>><mailto:b...@bobrk.com <mailto:b...@bobrk.com>
>> >>>>>>>> <mailto:b...@bobrk.com
>> <mailto:b...@bobrk.com>>><mailto:b...@bobrk.com <mailto:b...@bobrk.com>
>> >>>>>>>> <mailto:b...@bobrk.com
>> <mailto:b...@bobrk.com>><mailto:b...@bobrk.com <mailto:b...@bobrk.com>
>> >>>>>>>> <mailto:b...@bobrk.com <mailto:b...@bobrk.com>>>>> wrote:
>> >>>>>>>>
>> >>>>>>>> When I run "se lint ." on the new 4.0.0 tools I get this error:
>> >>>>>>>>
>> >>>>>>>> mark-twain_charles-dudley-warner_the-gilded-age(main) > se lint .
>> >>>>>>>> Traceback (most recent call last):
>> >>>>>>>> File "/Users/bob/.local/pipx/venvs/standardebooks/lib/
>> >>>>>>>> python3.11/ site-packages/cssutils/util.py", line 19, in <module>
>> >>>>>>>> from ._fetchgae import _defaultFetcher
>> >>>>>>>> File "/Users/bob/.local/pipx/venvs/standardebooks/lib/
>> >>>>>>>> python3.11/ site-packages/cssutils/_fetchgae.py", line 7, in
>> >>>>>>>> <module>
>> >>>>>>>> from google.appengine <http://google.appengine>.api import
>> urlfetch
>> >>>>>>>> ModuleNotFoundError: No module named 'google'
>> >>>>>>>>
>> >>>>>>>> During handling of the above exception, another exception
>> occurred:
>> >>>>>>>>
>> >>>>>>>> Traceback (most recent call last):
>> >>>>>>>> File "/Users/bob/.local/bin/se", line 6, in <module>
>> >>>>>>>> sys.exit <http://sys.exit>(main())
>> >>>>>>>> ^^^^^^
>> >>>>>>>> File "/Users/bob/.local/pipx/venvs/standardebooks/lib/
>> >>>>>>>> python3.11/ site-packages/se/main.py", line 85, in main
>> >>>>>>>> module = importlib.import_module(command_module)
>> >>>>>>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>> >>>>>>>> File "/opt/homebrew/Cellar/pyt...@3.11/3.11.11/Frameworks/
>> >>>>>>>> Python.framework/Versions/3.11/lib/python3.11/importlib/
>> <http://Python.framework/Versions/3.11/lib/python3.11/importlib/>
>> >>>>>>>> import cssutils.util <http://cssutils.util>
>> >>>>>>>> File "/Users/bob/.local/pipx/venvs/standardebooks/lib/
>> >>>>>>>> python3.11/ site-packages/cssutils/util.py", line 21, in <module>
>> >>>>>>>> from ._fetch import _defaultFetcher
>> >>>>>>>> File "/Users/bob/.local/pipx/venvs/standardebooks/lib/
>> >>>>>>>> python3.11/ site-packages/cssutils/_fetch.py", line 14, in
>> <module>
>> >>>>>>>> import encutils
>> >>>>>>>> ModuleNotFoundError: No module named 'encutils'
>> >>
>> >>
>> >> --
>> >> You received this message because you are subscribed to the Google
>> >> Groups "Standard Ebooks" group.
>> >> To unsubscribe from this group and stop receiving emails from it, send
>> >> an email to standardebook...@googlegroups.com
>> <mailto:standardebooks%2Bunsu...@googlegroups.com>
>> >> <mailto:standardebook...@googlegroups.com
>> <mailto:standardebooks%2Bunsu...@googlegroups.com>>.
>> >> To view this discussion visit https://groups.google.com/d/msgid/
>> <https://groups.google.com/d/msgid/>
>> >> standardebooks/A805131B-3D42-47BA-8A8D-DC9F428F188B%40letterboxes.org
>> >> <https://groups.google.com/d/msgid/standardebooks/ <https://
>> groups.google.com/d/msgid/standardebooks/>
>> >> A805131B-3D42-47BA-8A8D-DC9F428F188B%40letterboxes.org?
>> >> utm_medium=email&utm_source=footer>.
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups "Standard Ebooks" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> > an email to standardebook...@googlegroups.com
>> <mailto:standardebooks%2Bunsu...@googlegroups.com>
>> > <mailto:standardebook...@googlegroups.com
>> <mailto:standardebooks%2Bunsu...@googlegroups.com>>.
>> > To view this discussion visit https://groups.google.com/d/msgid/
>> <https://groups.google.com/d/msgid/>
>> > standardebooks/379d66e3-8455-4e46-bf70-c5d5ee3670ad%40app.fastmail.com
>> > <https://groups.google.com/d/msgid/
>> standardebooks/379d66e3-8455-4e46- <https://groups.google.com/d/msgid/
>> standardebooks/379d66e3-8455-4e46->
>> > bf70-c5d5ee3670ad%40app.fastmail.com?
>> utm_medium=email&utm_source=footer>.
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Standard Ebooks" group.
>> To unsubscribe from this group and stop receiving emails from it, send
>> an email to standardebook...@googlegroups.com
>> <mailto:standardebooks%2Bunsu...@googlegroups.com>.
>> To view this discussion visit https://groups.google.com/d/msgid/
>> standardebooks/75742e2a-a070-4ba9-
>> a6ea-00dd602b6cae%40standardebooks.org <https://groups.google.com/d/
>> msgid/standardebooks/75742e2a-a070-4ba9-
>> a6ea-00dd602b6cae%40standardebooks.org>.
>>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Standard Ebooks" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to standardebook...@googlegroups.com
> <mailto:standardebook...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/
> standardebooks/788d6587-9359-40a3-abb9-72f5fd5e0711%40app.fastmail.com
> <https://groups.google.com/d/msgid/standardebooks/788d6587-9359-40a3-
> abb9-72f5fd5e0711%40app.fastmail.com?utm_medium=email&utm_source=footer>.

Paul Bryan

unread,
Jul 8, 2026, 4:20:22 PM (14 days ago) Jul 8
to standar...@googlegroups.com
Yes, this is still occurring with 26.1.2.

There are numerous bug reports on pip's incorrect handling of transitive dependencies among the (~910!) currently open issues. . The core limitation is that pip's resolver struggles with tracking dependency origins cleanly during sequential upgrades. When a deep upstream dependency changes, pip's backtracking algorithm often makes incorrect assumptions or misses downstream requirements entirely, resulting in broken environments.

Conversely, uv resolves the entire dependency tree ahead of time, allowing it to navigate varying and conflicting dependencies gracefully. I wouldn't be surprised if pipx's choice to adopt uv as a backend was largely motivated by this superior handling of transitive dependencies, on top of the massive performance benefits.

Adding another issue to pip's tracker might be helpful if we could easily provide a minimal reproducible case. However, given their backlog and the fundamental architecture of their resolver, I'm not optimistic about a timely fix. Moving toward the uv backend or performing a clean pipx reinstall remains our best bet.
To unsubscribe from this group and stop receiving emails from it, send an email to standardebook...@googlegroups.com.


Alex Cabal

unread,
Jul 8, 2026, 4:50:34 PM (14 days ago) Jul 8
to standar...@googlegroups.com
OK. It looks like pipx already uses uv automatically if the user has it
installed. Therefore we will leave this as a user choice.
>> >> <mailto:standar...@googlegroups.com
>> <mailto:standar...@googlegroups.com>>> wrote:
>> >> >>>
>> >> >>> must be something with the virtual environment. You can try finding
>> >> >>> it and blowing it away entirely and starting from scratch.
>> `which se`
>> >> >>> might point to the right place (or not, python is a disaster)
>> >> >>>
>> >> >>> On 7/3/26 2:17 PM, Vince wrote:
>> >> >>>> Thanks; the former didn’t help, the latter isn’t an option.
>> >> >>>>> On Jul 3, 2026, at 1:58 PM, 'Alex Cabal' via Standard Ebooks
>> >> >>>>> <standar...@googlegroups.com
>> <mailto:standar...@googlegroups.com>
>> >> <mailto:standar...@googlegroups.com
>> <mailto:standar...@googlegroups.com>>> wrote:
>> >> >>>>>
>> >> >>>>> try pip3 install --force-reinstall standardebooks, or try
>> using pipx
>> >> >>>>>
>> >> >>>>> On 7/3/26 12:37 PM, Vince wrote:
>> >> >>>>>> I’m getting that exact same error, but uninstalling (pip3
>> >> >>>>>> uninstall standardebooks) and reinstalling (pip3 install -e
>> <dir>
>> >> >>>>>> standardebooks) the tools doesn’t help. So far, everything but
>> >> >>>>>> lint works. Any other ideas? I’ve fallen back to 3.2 for the
>> time
>> >> >>>>>> being.
>> >> >>>>>>> On Jul 2, 2026, at 6:48 PM, Bob R. Kenyon <b...@bobrk.com
>> <mailto:b...@bobrk.com>
>> >> <mailto:b...@bobrk.com <mailto:b...@bobrk.com>>> wrote:
>> >> >>>>>>>
>> >> >>>>>>> Reinstalling the ebook tools fixed the problem:
>> >> >>>>>>>
>> >> >>>>>>> mark-twain_charles-dudley-warner_the-gilded-age(main) > pipx
>> >> >>>>>>> reinstall standardebooks
>> >> >>>>>>> uninstalled standardebooks! ✨ 🌟 ✨
>> >> >>>>>>> installed package*standardebooks**4.0.0*, installed using
>> Python
>> >> >>>>>>> 3.13.2
>> >> >>>>>>> These apps are now globally available
>> >> >>>>>>> - se
>> >> >>>>>>> done! ✨ 🌟 ✨
>> >> >>>>>>>
>> >> >>>>>>>
>> >> >>>>>>> Thanks,
>> >> >>>>>>> Bob
>> >> >>>>>>>
>> >> >>>>>>>> On Jul 2, 2026, at 16:44, Bob Kenyon <b...@bobrk.com
>> <mailto:b...@bobrk.com>
>> >> <mailto:b...@bobrk.com <mailto:b...@bobrk.com>>
>> >> >>>>>>>> <mailto:b...@bobrk.com <mailto:b...@bobrk.com>
>> >> <mailto:b...@bobrk.com <mailto:b...@bobrk.com>>><mailto:b...@bobrk.com
>> <mailto:b...@bobrk.com> <mailto:b...@bobrk.com <mailto:b...@bobrk.com>>
>> >> >>>>>>>> <mailto:b...@bobrk.com <mailto:b...@bobrk.com>
>> >> <mailto:b...@bobrk.com
>> <mailto:b...@bobrk.com>>>><mailto:b...@bobrk.com <mailto:b...@bobrk.com>
>> <mailto:b...@bobrk.com <mailto:b...@bobrk.com>>
>> >> >>>>>>>> <mailto:b...@bobrk.com <mailto:b...@bobrk.com>
>> >> <mailto:b...@bobrk.com <mailto:b...@bobrk.com>>><mailto:b...@bobrk.com
>> <mailto:b...@bobrk.com> <mailto:b...@bobrk.com <mailto:b...@bobrk.com>>
>> >> >>>>>>>> <mailto:b...@bobrk.com <mailto:b...@bobrk.com>
>> <mailto:b...@bobrk.com <mailto:b...@bobrk.com>>>>>> wrote:
>> >> >>>>>>>>
>> >> >>>>>>>> When I run "se lint ." on the new 4.0.0 tools I get this
>> error:
>> >> >>>>>>>>
>> >> >>>>>>>> mark-twain_charles-dudley-warner_the-gilded-age(main) > se
>> lint .
>> >> >>>>>>>> Traceback (most recent call last):
>> >> >>>>>>>> File "/Users/bob/.local/pipx/venvs/standardebooks/lib/
>> >> >>>>>>>> python3.11/ site-packages/cssutils/util.py", line 19, in
>> <module>
>> >> >>>>>>>> from ._fetchgae import _defaultFetcher
>> >> >>>>>>>> File "/Users/bob/.local/pipx/venvs/standardebooks/lib/
>> >> >>>>>>>> python3.11/ site-packages/cssutils/_fetchgae.py", line 7, in
>> >> >>>>>>>> <module>
>> >> >>>>>>>> from google.appengine <http://google.appengine> <http://
>> google.appengine <http://google.appengine>>.api import
>> >> urlfetch
>> >> >>>>>>>> ModuleNotFoundError: No module named 'google'
>> >> >>>>>>>>
>> >> >>>>>>>> During handling of the above exception, another exception
>> >> occurred:
>> >> >>>>>>>>
>> >> >>>>>>>> Traceback (most recent call last):
>> >> >>>>>>>> File "/Users/bob/.local/bin/se", line 6, in <module>
>> >> >>>>>>>> sys.exit <http://sys.exit> <http://sys.exit <http://
>> sys.exit>>(main())
>> >> >>>>>>>> ^^^^^^
>> >> >>>>>>>> File "/Users/bob/.local/pipx/venvs/standardebooks/lib/
>> >> >>>>>>>> python3.11/ site-packages/se/main.py", line 85, in main
>> >> >>>>>>>> module = importlib.import_module(command_module)
>> >> >>>>>>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>> >> >>>>>>>> File "/opt/homebrew/Cellar/pyt...@3.11/3.11.11/Frameworks/
>> >> >>>>>>>> Python.framework/Versions/3.11/lib/python3.11/importlib/
>> <http://Python.framework/Versions/3.11/lib/python3.11/importlib/>
>> >> <http://Python.framework/Versions/3.11/lib/python3.11/importlib/
>> >> >>>>>>>> import cssutils.util <http://cssutils.util> <http://
>> cssutils.util <http://cssutils.util>>
>> >> >>>>>>>> File "/Users/bob/.local/pipx/venvs/standardebooks/lib/
>> >> >>>>>>>> python3.11/ site-packages/cssutils/util.py", line 21, in
>> <module>
>> >> >>>>>>>> from ._fetch import _defaultFetcher
>> >> >>>>>>>> File "/Users/bob/.local/pipx/venvs/standardebooks/lib/
>> >> >>>>>>>> python3.11/ site-packages/cssutils/_fetch.py", line 14, in
>> >> <module>
>> >> >>>>>>>> import encutils
>> >> >>>>>>>> ModuleNotFoundError: No module named 'encutils'
>> >> >>
>> >> >>
>> >> >> --
>> >> >> You received this message because you are subscribed to the Google
>> >> >> Groups "Standard Ebooks" group.
>> >> >> To unsubscribe from this group and stop receiving emails from
>> it, send
>> >> >> an email to standardebook...@googlegroups.com
>> <mailto:standardebooks%2Bunsu...@googlegroups.com>
>> >> <mailto:standardebooks%2Bunsu...@googlegroups.com
>> <mailto:standardebooks%252Buns...@googlegroups.com>>
>> >> >> <mailto:standardebook...@googlegroups.com
>> <mailto:standardebooks%2Bunsu...@googlegroups.com>
>> >> <mailto:standardebooks%2Bunsu...@googlegroups.com
>> <mailto:standardebooks%252Buns...@googlegroups.com>>>.
>> >> >> To view this discussion visit https://groups.google.com/d/msgid/
>> <https://groups.google.com/d/msgid/>
>> >> <https://groups.google.com/d/msgid/ <https://groups.google.com/d/
>> msgid/>>
>> >> >> standardebooks/A805131B-3D42-47BA-8A8D-
>> DC9F428F188B%40letterboxes.org
>> >> >> <https://groups.google.com/d/msgid/standardebooks/ <https://
>> groups.google.com/d/msgid/standardebooks/> <https://
>> >> groups.google.com/d/msgid/standardebooks/ <http://
>> groups.google.com/d/msgid/standardebooks/>>
>> >> >> A805131B-3D42-47BA-8A8D-DC9F428F188B%40letterboxes.org?
>> >> >> utm_medium=email&utm_source=footer>.
>> >> >
>> >> > --
>> >> > You received this message because you are subscribed to the Google
>> >> > Groups "Standard Ebooks" group.
>> >> > To unsubscribe from this group and stop receiving emails from it,
>> send
>> >> > an email to standardebook...@googlegroups.com
>> <mailto:standardebooks%2Bunsu...@googlegroups.com>
>> >> <mailto:standardebooks%2Bunsu...@googlegroups.com
>> <mailto:standardebooks%252Buns...@googlegroups.com>>
>> >> > <mailto:standardebook...@googlegroups.com
>> <mailto:standardebooks%2Bunsu...@googlegroups.com>
>> >> <mailto:standardebooks%2Bunsu...@googlegroups.com
>> <mailto:standardebooks%252Buns...@googlegroups.com>>>.
>> >> <https://groups.google.com/d/msgid/ <https://groups.google.com/d/
>> msgid/>>
>> >> > standardebooks/379d66e3-8455-4e46-bf70-
>> c5d5ee3670ad%40app.fastmail.com
>> >> > <https://groups.google.com/d/msgid/ <https://groups.google.com/d/
>> msgid/>
>> >> standardebooks/379d66e3-8455-4e46- <https://groups.google.com/d/
>> msgid/ <https://groups.google.com/d/msgid/>
>> >> standardebooks/379d66e3-8455-4e46->
>> >> > bf70-c5d5ee3670ad%40app.fastmail.com?
>> >> utm_medium=email&utm_source=footer>.
>> >>
>> >> --
>> >> You received this message because you are subscribed to the Google
>> >> Groups "Standard Ebooks" group.
>> >> To unsubscribe from this group and stop receiving emails from it, send
>> >> an email to standardebook...@googlegroups.com
>> <mailto:standardebooks%2Bunsu...@googlegroups.com>
>> >> <mailto:standardebooks%2Bunsu...@googlegroups.com
>> <mailto:standardebooks%252Buns...@googlegroups.com>>.
>> >> standardebooks/75742e2a-a070-4ba9-
>> >> a6ea-00dd602b6cae%40standardebooks.org <https://groups.google.com/
>> d/ <https://groups.google.com/d/>
>> >> msgid/standardebooks/75742e2a-a070-4ba9-
>> >> a6ea-00dd602b6cae%40standardebooks.org>.
>> >>
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups "Standard Ebooks" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> > an email to standardebook...@googlegroups.com
>> > standardebooks/788d6587-9359-40a3-abb9-72f5fd5e0711%40app.fastmail.com
>> > <https://groups.google.com/d/msgid/
>> standardebooks/788d6587-9359-40a3- <https://groups.google.com/d/msgid/
>> standardebooks/788d6587-9359-40a3->
>> > abb9-72f5fd5e0711%40app.fastmail.com?
>> utm_medium=email&utm_source=footer>.
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Standard Ebooks" group.
>> To unsubscribe from this group and stop receiving emails from it, send
>> an email to standardebook...@googlegroups.com
>> <mailto:standardebooks%2Bunsu...@googlegroups.com>.
>> To view this discussion visit https://groups.google.com/d/msgid/
>> standardebooks/de416607-3542-4545-a100-
>> ffdec4ffbd58%40standardebooks.org <https://groups.google.com/d/msgid/
>> standardebooks/de416607-3542-4545-a100-ffdec4ffbd58%40standardebooks.org>.
>>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Standard Ebooks" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to standardebook...@googlegroups.com
> <mailto:standardebook...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/
> standardebooks/bb80b7b2-5384-4a07-afca-cc045a3ab783%40app.fastmail.com
> <https://groups.google.com/d/msgid/standardebooks/bb80b7b2-5384-4a07-
> afca-cc045a3ab783%40app.fastmail.com?utm_medium=email&utm_source=footer>.

devino...@gmail.com

unread,
Jul 12, 2026, 12:18:56 AM (11 days ago) Jul 12
to Standard Ebooks
I tried running the sed script that was referenced in the initial post, and it gave me this error message:

sed: -e expression #1, char 34: unterminated `s' command

I'm not familiar with sed scripts (no pun intended), so I'm not sure what the issue is.

In case it matters, my terminal is running bash.

Thanks,

Devin

Robin Whittleton

unread,
Jul 12, 2026, 3:46:52 AM (10 days ago) Jul 12
to standar...@googlegroups.com
If you’re on macOS then you’re running into differences between BSD sed (default) and GNU sed. You can install GNU sed with Homebrew (brew install gnu-sed) then change the script to call gsed instead of sed.

-Robin

--
You received this message because you are subscribed to the Google Groups "Standard Ebooks" group.
To unsubscribe from this group and stop receiving emails from it, send an email to standardebook...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/standardebooks/2f2ec436-570e-46dc-925a-d7d89ad6e7cfn%40googlegroups.com.

devino...@gmail.com

unread,
Jul 12, 2026, 7:00:49 AM (10 days ago) Jul 12
to Standard Ebooks
Apologies, I forgot to mention I'm using Linux (Fedora 44). It already has GNU sed preinstalled. I tried 'gsed' with the script in the terminal and it said the command wasn't recognised, and referred me to use 'sed' instead.

Thanks,

Devin

Asher Smith

unread,
Jul 16, 2026, 7:49:11 AM (6 days ago) Jul 16
to Standard Ebooks
I think the aria-labelledby check might need some updating. I'm getting the following error message about the toc in six books when trying to upload the books to Apple Books:
Error while parsing file: The aria-labelledby attribute must refer to elements in the same document (target ID missing)  (For more information refer to https://help.apple.com/itc/booksassetguide)" at package/book/assets

The lines in question in a successfully submitted book look like this:
<nav aria-labelledby="landmarks-title" id="landmarks" epub:type="landmarks">
<h2 id="landmarks-title" epub:type="title">Landmarks</h2>

Whereas one of the failing books looks like this:
<nav aria-labelledby="landmarks-title" id="landmarks" epub:type="landmarks">
<h2 epub:type="title">Voodoo Planet</h2>

The books that have this error are:
  • robert-e-howard_short-fiction
  • robert-e-howard_conan-stories
  • l-m-montgomery_anne-of-green-gables
  • jules-verne_from-the-earth-to-the-moon_ward-lock-co
  • j-b-priestley_the-good-companions
  • andre-norton_voodoo-planet

Alex Cabal

unread,
Jul 16, 2026, 11:53:26 AM (6 days ago) Jul 16
to standar...@googlegroups.com
Thanks, looks like a few ebooks had their ToCs in a non standard format.

I found that error in:

j-b-priestley_the-good-companions
andre-norton_voodoo-planet

But the rest of the ones you listed don't have that error and their ToCs
look fine. Can you confirm? If not can you point me to place in their
Github repo where there's an error?

On 7/16/26 6:49 AM, Asher Smith wrote:
> I think the aria-labelledby check might need some updating. I'm getting
> the following error message about the toc in six books when trying to
> upload the books to Apple Books:
> Error while parsing file: The aria-labelledby attribute must refer to
> elements in the same document (target ID missing)  (For more information
> refer to https://help.apple.com/itc/booksassetguide)" at package/book/assets
>
> The lines in question in a successfully submitted book look like this:
> <nav aria-labelledby="landmarks-title" id="landmarks" epub:type="landmarks">
> <h2 id="landmarks-title" epub:type="title">Landmarks</h2>
>
> Whereas one of the failing books looks like this:
> <nav aria-labelledby="landmarks-title" id="landmarks" epub:type="landmarks">
> <h2 epub:type="title">Voodoo Planet</h2>
>
> The books that have this error are:
>
> * robert-e-howard_short-fiction
> * robert-e-howard_conan-stories
> * l-m-montgomery_anne-of-green-gables
> * jules-verne_from-the-earth-to-the-moon_ward-lock-co
> * j-b-priestley_the-good-companions
> * andre-norton_voodoo-planet
>> d7d89ad6e7cfn%40googlegroups.com <https://groups.google.com/d/
>> msgid/standardebooks/2f2ec436-570e-46dc-925a-
>> d7d89ad6e7cfn%40googlegroups.com?
>> utm_medium=email&utm_source=footer>.
>
> --
> You received this message because you are subscribed to the Google
> Groups "Standard Ebooks" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to standardebook...@googlegroups.com
> <mailto:standardebook...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/
> standardebooks/93fa89b1-e803-4b37-ae6e-f7f8b08dac7cn%40googlegroups.com
> <https://groups.google.com/d/msgid/standardebooks/93fa89b1-e803-4b37-
> ae6e-f7f8b08dac7cn%40googlegroups.com?utm_medium=email&utm_source=footer>.

Asher Smith

unread,
Jul 16, 2026, 12:07:34 PM (6 days ago) Jul 16
to Standard Ebooks
Apologies, I checked two error messages and when they were the same, I assumed the rest would agree as well. The other error messages I got were:
  • robert-e-howard_short-fiction
    • ERROR ITMS-9000: "robert-e-howard_short-fiction.epub: epub/content.opf(9): [OPF-028] Undeclared prefix: "rdf".. This error occurs 2 times.  (For more information refer to https://help.apple.com/itc/booksassetguide)" at package/book/asset
  • robert-e-howard_conan-stories
    • ERROR ITMS-9000: "robert-e-howard_conan-stories.epub: epub/content.opf(9): [OPF-028] Undeclared prefix: "rdf".. This error occurs 2 times.  (For more information refer to https://help.apple.com/itc/booksassetguide)" at package/book/assets
  • l-m-montgomery_anne-of-green-gables
    • ERROR ITMS-9000: "l-m-montgomery_anne-of-green-gables.epub: epub/content.opf(9): [OPF-028] Undeclared prefix: "rdf".. This error occurs 2 times.  (For more information refer to https://help.apple.com/itc/booksassetguide)" at package/book/assets
  • jules-verne_from-the-earth-to-the-moon_ward-lock-co
    • ERROR ITMS-9000: "jules-verne_from-the-earth-to-the-moon_ward-lock-co.epub: contains the following file(s) that are not listed in the OPF manifest: jules-verne_from-the-earth-to-the-moon_ward-lock-co.epub:/epub/text/sedqtPBqy. All files must be listed in the OPF manifest. For more information refer to Apple Books Asset Guide https://help.apple.com/itc/booksassetguide/" at package/book/assets


Alex Cabal

unread,
Jul 16, 2026, 1:03:57 PM (6 days ago) Jul 16
to standar...@googlegroups.com
Thanks, these have been fixed!

On 7/16/26 11:07 AM, Asher Smith wrote:
> Apologies, I checked two error messages and when they were the same, I
> assumed the rest would agree as well. The other error messages I got were:
>
> * robert-e-howard_short-fiction
> o ERROR ITMS-9000: "robert-e-howard_short-fiction.epub: epub/
> content.opf(9): [OPF-028] Undeclared prefix: "rdf".. This error
> occurs 2 times.  (For more information refer to https://
> help.apple.com/itc/booksassetguide)" at package/book/asset
> * robert-e-howard_conan-stories
> o ERROR ITMS-9000: "robert-e-howard_conan-stories.epub: epub/
> content.opf(9): [OPF-028] Undeclared prefix: "rdf".. This error
> occurs 2 times.  (For more information refer to https://
> help.apple.com/itc/booksassetguide)" at package/book/assets
> * l-m-montgomery_anne-of-green-gables
> o ERROR ITMS-9000: "l-m-montgomery_anne-of-green-gables.epub:
> epub/content.opf(9): [OPF-028] Undeclared prefix: "rdf".. This
> error occurs 2 times.  (For more information refer to https://
> help.apple.com/itc/booksassetguide)" at package/book/assets
> * jules-verne_from-the-earth-to-the-moon_ward-lock-co
> o ERROR ITMS-9000: "jules-verne_from-the-earth-to-the-moon_ward-
> lock-co.epub: contains the following file(s) that are not listed
> in the OPF manifest: jules-verne_from-the-earth-to-the-
> moon_ward-lock-co.epub:/epub/text/sedqtPBqy. All files must be
> listed in the OPF manifest. For more information refer to Apple
> Books Asset Guide https://help.apple.com/itc/booksassetguide/"
> at package/book/assets
>
> That last one seems to be a weird file fragment, which you can see on
> github here: https://github.com/standardebooks/jules-verne_from-the-
> earth-to-the-moon_ward-lock-co/blob/
> e4c9d295bd2a443174ab6bae0da2e95a809d9d3c/src/epub/text/sedqtPBqy
>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Standard Ebooks" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to standardebook...@googlegroups.com
> <mailto:standardebook...@googlegroups.com>.
> To view this discussion visit https://groups.google.com/d/msgid/
> standardebooks/1540b378-fb19-49b2-8c23-6187fb76e61bn%40googlegroups.com
> <https://groups.google.com/d/msgid/standardebooks/1540b378-
> fb19-49b2-8c23-6187fb76e61bn%40googlegroups.com?
> utm_medium=email&utm_source=footer>.

Reply all
Reply to author
Forward
0 new messages