Skip to content
internal/excludes
On this page

The single authority for which source paths a project's docs cover, so a path the generated pages exclude cannot be advertised by a listing directive.

#internal/excludes

#internal/excludes

Package excludes is the single authority for which source paths a project's docs cover.

Every source walk in selfdoc -- page generation, coverage counting, and the list-modules directive -- decides the same way which files and directories are part of the documented project. Keeping the patterns and the matcher here means a path excluded from the generated pages cannot be advertised by a listing directive, and vice versa.

The inputs are two: [DefaultExcludes], applied everywhere, and the gen.exclude list from selfdoc.json, which a project adds to it. [SkipDirs] is separate and unconditional: environment and build directories that are never source, pruned from a walk before any pattern is tested.

#DefaultExcludes

Go go
var DefaultExcludes = []string{

DefaultExcludes are the exclusion patterns always applied in addition to the project-configured ones. They are matched against both the full relative path and the basename, so "test_*" matches test_core.py at any depth.

#SkipDirs

Go go
var SkipDirs = map[string]bool{

SkipDirs are the directory names always pruned during a source walk. A walker drops them before descending, so nothing inside them is ever read.

#ShouldSkipDir

Go go
func ShouldSkipDir(dirname string) bool

ShouldSkipDir reports whether a directory name should be pruned during a source walk.

#GoToolchainIgnoresDir

Go go
func GoToolchainIgnoresDir(name string) bool

GoToolchainIgnoresDir reports whether the Go toolchain ignores a directory of this name, so nothing under it is part of any Go package.

cmd/go never builds a directory named "testdata" or "vendor", nor one whose name begins with "." or "_". Documenting such a directory as a package advertises code that "go build ./..." does not compile.

#GoToolchainIgnoresPath

Go go
func GoToolchainIgnoresPath(relDir string) bool

GoToolchainIgnoresPath reports whether any component of a slash-separated relative directory path is ignored by the Go toolchain.

A path of "." names the walk's own root, which no component test applies to.

#IsExcluded

Go go
func IsExcluded(relPath string, excludePatterns []string) bool

IsExcluded reports whether a relative path matches any exclusion glob.

A "**/" prefix means "match at any depth": the prefix is stripped and the rest is tested against the whole path, the basename, and every directory component. A plain pattern is tested the same three ways, and then -- when stripping changed it -- once more in its original spelling against the whole path.

#PatternsFor

Go go
func PatternsFor(config map[string]any) []string

PatternsFor returns the full exclusion pattern list for a project: the defaults plus its gen.exclude entries. config is a loaded selfdoc.json.

#Match

Go go
func Match(name, pat string) bool

Match reports whether name matches the shell pattern pat, reproducing Python's fnmatch.fnmatch on a POSIX filesystem -- which is what every exclusion pattern in the fleet was written against, and which path/filepath.Match does NOT reproduce.

The whole name must match. The syntax:

- "" matches any run of characters, INCLUDING "/" -- the one difference from filepath.Match that changes real answers, since "_test.*" has to reach a file at any depth of a relative path. - "?" matches one character, again including "/". - "[seq]" matches one character in seq and "[!seq]" one not in seq. A "]" first in the set is that character; a "-" first or last is that character; "x-y" is the inclusive range, and a reversed range matches nothing. An unterminated "[" is the literal character. - Nothing quotes a metacharacter, exactly as Python documents.

Matching is case-sensitive: Python case-normalizes through os.path.normcase, which is the identity on POSIX.

More tools from this site

  • claudestream Drive Claude Code from Python: run it as a subprocess and read its output as typed events, with async and sync sessions, sandbox policies, and tools you define in Python
  • claudewheel A TUI Claude Code Launcher that lets you have more than one profile, manage sessions lifecycle, pick the exact CC version, model to use (even older unlisted ones), pick which GitHub account to use, etc.
  • dirstat Fast, single-binary directory statistics CLI: every file under a tree grouped by format, with counts, sizes, and lines of code, as a colored terminal table or as JSON
  • fastware A batteries-included ASGI framework: msgspec JSON, a managed Granian server, dependency injection, SSE, WebSockets, auth, and a test client
  • go-toml-edit Zero-dep TOML editing library for Go with comment preservation
  • howmuchleft The fastest Claude Code statusline: context window, 5-hour, and weekly limit usage as three customizable gradient bars, rendering in about 6 ms
  • orxtra
  • pgdesign
  • predraw Declarative rendering pipeline: describe a scene in JSON and get SVG, PNG and WebP out, with light and dark style tokens, reusable components and text converted to path outlines
  • reposummary Turn a git repository's history into a Markdown journal: pick a time window or revision range and get a readable digest of what changed, optionally narrated by an LLM
  • rlsbl Release orchestration and project scaffolding CLI that bumps versions, validates a structured JSONL changelog, tags only the commit CI verified, and publishes to npm, PyPI, Go and more
  • safegit git wrapper CLI that gives each commit its own temporary index and retries ref updates on conflict, so concurrent agents share one repository
  • saferm Command-line replacement for rm that archives every deletion with a mandatory reason and the context it ran in, so deleted files can be listed, inspected and restored
  • strictcli
  • stricttest An always-on test-isolation floor: a pytest plugin and a Go env-hygiene module that make a test suite structurally unable to reach real credentials, the real HOME, the network, or the development repository.
  • wesktop A Python framework that turns an ASGI web app into a desktop application, serving it from a local Granian server and displaying it in a native OS window via pywebview
Search