Repository files navigation

String format parameter checker

Build StatusCoverage StatusPypi Entry

An extension for Flake8 to check the strings and parameters using str.format. It checks all strings whether they use numbered parameters with an implicit index which isn't support in Python 2.6.

In all instances of '…'.format(…) it will also check whether there are enough parameters given. If the format call uses variable arguments, it'll just check whether the right types of arguments are present.

Plugin for Flake8

When both Flake8 and flake8-string-format are installed, the plugin is available in flake8:

$ flake8 --version
3.0.2 (flake8-string-format: 0.2.3, […]

This plugin supports Flake8 2.6 as well as Flake8 3.0. Older or newer versions may be supported too but they weren't tested.

Via --ignore it's possible to ignore unindexed parameters:

$ flake8 some_file.py
...
some_file.py:1:1: FMT101 format string does contain unindexed parameters
$ flake8 --ignore FMT101 some_file.py
...

Parameters

This module doesn't add any additional parameters to Flake8.

Error codes

This plugin is using the following error codes:

Presence of implicit parameters
FMT101format string contains unindexed parameters
FMT102docstring contains unindexed parameters
FMT103other string contains unindexed parameters
Missing values in the parameters
FMT201format call index too large (INDEX)
FMT202format call uses missing keyword (KEYWORD)
FMT203format call uses keyword arguments but there are no keyword entries
FMT204format call uses indexed arguments but there are no indexed entries
FMT205format call uses implicit and explicit indexes together
Unused values in the parameters
FMT301format call provides unused index (INDEX)
FMT302format call provides unused keyword (KEYWORD)

Operation

The plugin will go through all bytes, str and unicode instances. If it encounters bytes instances on Python 3, it'll decode them using ASCII and if that fails it'll skip that entry.

Depending on the usage the string is handled differently. When it is not being formatted, it can only cause FMT102 and FMT103. For this plugin all strings which are the first expression of the module or after a function or class definition are considered docstrings.

Both FMT102 and FMT103 issue many false positives and should only be used with Python 2.6 which does not support unindexed parameters.

Format strings

Every string where either the format method is called or where it is the first parameter of str.format, is considered a format string and cause the higher numbers.

If that call to format uses variable arguments, it cannot issue FMT201 and FMT202 as missing entries might be hidden in those variable arguments. FMT301 and FMT302 can still be checked for any argument which is defined statically.

Python 2.6 support

Python 2.6 is only partially supported as it's using Python's capability to format a string. So if a string contains implicit parameters, it won't be detected as a parameter on Python 2.6 and thus it won't cause any FMT1XX errors. But it might still cause an error FMT301 when variable arguments aren't used.

So if Python 2.6 compatibility is wished and thus implicit parameters aren't allowed, this plugin won't cause false positives.

Changes

0.4.0 - 2026-06-09

  • Fix support for Python version 3.14
  • Improve error message wording

0.3.0 - 2020-02-16

  • Removed support for standalone version.
  • Support multiple starargs and at any location.

0.2.3 - 2016-07-27

  • Properly register with Flake8 so it will be selected on Flake8 3.x by default and it can be selected on Flake8 2.x.

0.2.2 - 2016-05-29

  • Do not check simple expressions, except for docstrings, because they cannot be accessed anyway.
  • Properly assert starred arguments in Python 3.5. Only the last element must be a vararg if varargs are present and not the complete list.
  • Output correct column offset on Python 3.4.2, as that used the wrong offset inside calls.

0.2.1 - 2015-09-20

  • Support str.format("…", …) calls and handle them like "…".format(…)

0.2.0 - 2015-09-12

  • Instead of using a regex it's trying to parse it using Python's parser
  • This result can also be used now to verify that enough parameters are given
  • Limited Python 2.6 support

0.1.0 - 2015-09-10

  • Detect unindexed parameters in all strings
  • Separate error code for docstrings

About

Check that indexed parameters are used in strings

Resources

Stars

20 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

String format parameter checker

Build StatusCoverage StatusPypi Entry

An extension for Flake8 to check the strings and parameters using str.format. It checks all strings whether they use numbered parameters with an implicit index which isn't support in Python 2.6.

In all instances of '…'.format(…) it will also check whether there are enough parameters given. If the format call uses variable arguments, it'll just check whether the right types of arguments are present.

Plugin for Flake8

When both Flake8 and flake8-string-format are installed, the plugin is available in flake8:

$ flake8 --version
3.0.2 (flake8-string-format: 0.2.3, […]

This plugin supports Flake8 2.6 as well as Flake8 3.0. Older or newer versions may be supported too but they weren't tested.

Via --ignore it's possible to ignore unindexed parameters:

$ flake8 some_file.py
...
some_file.py:1:1: FMT101 format string does contain unindexed parameters
$ flake8 --ignore FMT101 some_file.py
...

Parameters

This module doesn't add any additional parameters to Flake8.

Error codes

This plugin is using the following error codes:

Presence of implicit parameters
FMT101format string contains unindexed parameters
FMT102docstring contains unindexed parameters
FMT103other string contains unindexed parameters
Missing values in the parameters
FMT201format call index too large (INDEX)
FMT202format call uses missing keyword (KEYWORD)
FMT203format call uses keyword arguments but there are no keyword entries
FMT204format call uses indexed arguments but there are no indexed entries
FMT205format call uses implicit and explicit indexes together
Unused values in the parameters
FMT301format call provides unused index (INDEX)
FMT302format call provides unused keyword (KEYWORD)

Operation

The plugin will go through all bytes, str and unicode instances. If it encounters bytes instances on Python 3, it'll decode them using ASCII and if that fails it'll skip that entry.

Depending on the usage the string is handled differently. When it is not being formatted, it can only cause FMT102 and FMT103. For this plugin all strings which are the first expression of the module or after a function or class definition are considered docstrings.

Both FMT102 and FMT103 issue many false positives and should only be used with Python 2.6 which does not support unindexed parameters.

Format strings

Every string where either the format method is called or where it is the first parameter of str.format, is considered a format string and cause the higher numbers.

If that call to format uses variable arguments, it cannot issue FMT201 and FMT202 as missing entries might be hidden in those variable arguments. FMT301 and FMT302 can still be checked for any argument which is defined statically.

Python 2.6 support

Python 2.6 is only partially supported as it's using Python's capability to format a string. So if a string contains implicit parameters, it won't be detected as a parameter on Python 2.6 and thus it won't cause any FMT1XX errors. But it might still cause an error FMT301 when variable arguments aren't used.

So if Python 2.6 compatibility is wished and thus implicit parameters aren't allowed, this plugin won't cause false positives.

Changes

0.4.0 - 2026-06-09

  • Fix support for Python version 3.14
  • Improve error message wording

0.3.0 - 2020-02-16

  • Removed support for standalone version.
  • Support multiple starargs and at any location.

0.2.3 - 2016-07-27

  • Properly register with Flake8 so it will be selected on Flake8 3.x by default and it can be selected on Flake8 2.x.

0.2.2 - 2016-05-29

  • Do not check simple expressions, except for docstrings, because they cannot be accessed anyway.
  • Properly assert starred arguments in Python 3.5. Only the last element must be a vararg if varargs are present and not the complete list.
  • Output correct column offset on Python 3.4.2, as that used the wrong offset inside calls.

0.2.1 - 2015-09-20

  • Support str.format("…", …) calls and handle them like "…".format(…)

0.2.0 - 2015-09-12

  • Instead of using a regex it's trying to parse it using Python's parser
  • This result can also be used now to verify that enough parameters are given
  • Limited Python 2.6 support

0.1.0 - 2015-09-10

  • Detect unindexed parameters in all strings
  • Separate error code for docstrings

About

Check that indexed parameters are used in strings

Resources

Stars

20 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

String format parameter checker

Build StatusCoverage StatusPypi Entry

An extension for Flake8 to check the strings and parameters using str.format. It checks all strings whether they use numbered parameters with an implicit index which isn't support in Python 2.6.

In all instances of '…'.format(…) it will also check whether there are enough parameters given. If the format call uses variable arguments, it'll just check whether the right types of arguments are present.

Plugin for Flake8

When both Flake8 and flake8-string-format are installed, the plugin is available in flake8:

$ flake8 --version
3.0.2 (flake8-string-format: 0.2.3, […]

This plugin supports Flake8 2.6 as well as Flake8 3.0. Older or newer versions may be supported too but they weren't tested.

Via --ignore it's possible to ignore unindexed parameters:

$ flake8 some_file.py
...
some_file.py:1:1: FMT101 format string does contain unindexed parameters
$ flake8 --ignore FMT101 some_file.py
...

Parameters

This module doesn't add any additional parameters to Flake8.

Error codes

This plugin is using the following error codes:

Presence of implicit parameters
FMT101format string contains unindexed parameters
FMT102docstring contains unindexed parameters
FMT103other string contains unindexed parameters
Missing values in the parameters
FMT201format call index too large (INDEX)
FMT202format call uses missing keyword (KEYWORD)
FMT203format call uses keyword arguments but there are no keyword entries
FMT204format call uses indexed arguments but there are no indexed entries
FMT205format call uses implicit and explicit indexes together
Unused values in the parameters
FMT301format call provides unused index (INDEX)
FMT302format call provides unused keyword (KEYWORD)

Operation

The plugin will go through all bytes, str and unicode instances. If it encounters bytes instances on Python 3, it'll decode them using ASCII and if that fails it'll skip that entry.

Depending on the usage the string is handled differently. When it is not being formatted, it can only cause FMT102 and FMT103. For this plugin all strings which are the first expression of the module or after a function or class definition are considered docstrings.

Both FMT102 and FMT103 issue many false positives and should only be used with Python 2.6 which does not support unindexed parameters.

Format strings

Every string where either the format method is called or where it is the first parameter of str.format, is considered a format string and cause the higher numbers.

If that call to format uses variable arguments, it cannot issue FMT201 and FMT202 as missing entries might be hidden in those variable arguments. FMT301 and FMT302 can still be checked for any argument which is defined statically.

Python 2.6 support

Python 2.6 is only partially supported as it's using Python's capability to format a string. So if a string contains implicit parameters, it won't be detected as a parameter on Python 2.6 and thus it won't cause any FMT1XX errors. But it might still cause an error FMT301 when variable arguments aren't used.

So if Python 2.6 compatibility is wished and thus implicit parameters aren't allowed, this plugin won't cause false positives.

Changes

0.4.0 - 2026-06-09

  • Fix support for Python version 3.14
  • Improve error message wording

0.3.0 - 2020-02-16

  • Removed support for standalone version.
  • Support multiple starargs and at any location.

0.2.3 - 2016-07-27

  • Properly register with Flake8 so it will be selected on Flake8 3.x by default and it can be selected on Flake8 2.x.

0.2.2 - 2016-05-29

  • Do not check simple expressions, except for docstrings, because they cannot be accessed anyway.
  • Properly assert starred arguments in Python 3.5. Only the last element must be a vararg if varargs are present and not the complete list.
  • Output correct column offset on Python 3.4.2, as that used the wrong offset inside calls.

0.2.1 - 2015-09-20

  • Support str.format("…", …) calls and handle them like "…".format(…)

0.2.0 - 2015-09-12

  • Instead of using a regex it's trying to parse it using Python's parser
  • This result can also be used now to verify that enough parameters are given
  • Limited Python 2.6 support

0.1.0 - 2015-09-10

  • Detect unindexed parameters in all strings
  • Separate error code for docstrings

About

Check that indexed parameters are used in strings

Resources

Stars

20 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

String format parameter checker

Build StatusCoverage StatusPypi Entry

An extension for Flake8 to check the strings and parameters using str.format. It checks all strings whether they use numbered parameters with an implicit index which isn't support in Python 2.6.

In all instances of '…'.format(…) it will also check whether there are enough parameters given. If the format call uses variable arguments, it'll just check whether the right types of arguments are present.

Plugin for Flake8

When both Flake8 and flake8-string-format are installed, the plugin is available in flake8:

$ flake8 --version
3.0.2 (flake8-string-format: 0.2.3, […]

This plugin supports Flake8 2.6 as well as Flake8 3.0. Older or newer versions may be supported too but they weren't tested.

Via --ignore it's possible to ignore unindexed parameters:

$ flake8 some_file.py
...
some_file.py:1:1: FMT101 format string does contain unindexed parameters
$ flake8 --ignore FMT101 some_file.py
...

Parameters

This module doesn't add any additional parameters to Flake8.

Error codes

This plugin is using the following error codes:

Presence of implicit parameters
FMT101format string contains unindexed parameters
FMT102docstring contains unindexed parameters
FMT103other string contains unindexed parameters
Missing values in the parameters
FMT201format call index too large (INDEX)
FMT202format call uses missing keyword (KEYWORD)
FMT203format call uses keyword arguments but there are no keyword entries
FMT204format call uses indexed arguments but there are no indexed entries
FMT205format call uses implicit and explicit indexes together
Unused values in the parameters
FMT301format call provides unused index (INDEX)
FMT302format call provides unused keyword (KEYWORD)

Operation

The plugin will go through all bytes, str and unicode instances. If it encounters bytes instances on Python 3, it'll decode them using ASCII and if that fails it'll skip that entry.

Depending on the usage the string is handled differently. When it is not being formatted, it can only cause FMT102 and FMT103. For this plugin all strings which are the first expression of the module or after a function or class definition are considered docstrings.

Both FMT102 and FMT103 issue many false positives and should only be used with Python 2.6 which does not support unindexed parameters.

Format strings

Every string where either the format method is called or where it is the first parameter of str.format, is considered a format string and cause the higher numbers.

If that call to format uses variable arguments, it cannot issue FMT201 and FMT202 as missing entries might be hidden in those variable arguments. FMT301 and FMT302 can still be checked for any argument which is defined statically.

Python 2.6 support

Python 2.6 is only partially supported as it's using Python's capability to format a string. So if a string contains implicit parameters, it won't be detected as a parameter on Python 2.6 and thus it won't cause any FMT1XX errors. But it might still cause an error FMT301 when variable arguments aren't used.

So if Python 2.6 compatibility is wished and thus implicit parameters aren't allowed, this plugin won't cause false positives.

Changes

0.4.0 - 2026-06-09

  • Fix support for Python version 3.14
  • Improve error message wording

0.3.0 - 2020-02-16

  • Removed support for standalone version.
  • Support multiple starargs and at any location.

0.2.3 - 2016-07-27

  • Properly register with Flake8 so it will be selected on Flake8 3.x by default and it can be selected on Flake8 2.x.

0.2.2 - 2016-05-29

  • Do not check simple expressions, except for docstrings, because they cannot be accessed anyway.
  • Properly assert starred arguments in Python 3.5. Only the last element must be a vararg if varargs are present and not the complete list.
  • Output correct column offset on Python 3.4.2, as that used the wrong offset inside calls.

0.2.1 - 2015-09-20

  • Support str.format("…", …) calls and handle them like "…".format(…)

0.2.0 - 2015-09-12

  • Instead of using a regex it's trying to parse it using Python's parser
  • This result can also be used now to verify that enough parameters are given
  • Limited Python 2.6 support

0.1.0 - 2015-09-10

  • Detect unindexed parameters in all strings
  • Separate error code for docstrings

About

Check that indexed parameters are used in strings

Resources

Stars

20 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

String format parameter checker

Build StatusCoverage StatusPypi Entry

An extension for Flake8 to check the strings and parameters using str.format. It checks all strings whether they use numbered parameters with an implicit index which isn't support in Python 2.6.

In all instances of '…'.format(…) it will also check whether there are enough parameters given. If the format call uses variable arguments, it'll just check whether the right types of arguments are present.

Plugin for Flake8

When both Flake8 and flake8-string-format are installed, the plugin is available in flake8:

$ flake8 --version
3.0.2 (flake8-string-format: 0.2.3, […]

This plugin supports Flake8 2.6 as well as Flake8 3.0. Older or newer versions may be supported too but they weren't tested.

Via --ignore it's possible to ignore unindexed parameters:

$ flake8 some_file.py
...
some_file.py:1:1: FMT101 format string does contain unindexed parameters
$ flake8 --ignore FMT101 some_file.py
...

Parameters

This module doesn't add any additional parameters to Flake8.

Error codes

This plugin is using the following error codes:

Presence of implicit parameters
FMT101format string contains unindexed parameters
FMT102docstring contains unindexed parameters
FMT103other string contains unindexed parameters
Missing values in the parameters
FMT201format call index too large (INDEX)
FMT202format call uses missing keyword (KEYWORD)
FMT203format call uses keyword arguments but there are no keyword entries
FMT204format call uses indexed arguments but there are no indexed entries
FMT205format call uses implicit and explicit indexes together
Unused values in the parameters
FMT301format call provides unused index (INDEX)
FMT302format call provides unused keyword (KEYWORD)

Operation

The plugin will go through all bytes, str and unicode instances. If it encounters bytes instances on Python 3, it'll decode them using ASCII and if that fails it'll skip that entry.

Depending on the usage the string is handled differently. When it is not being formatted, it can only cause FMT102 and FMT103. For this plugin all strings which are the first expression of the module or after a function or class definition are considered docstrings.

Both FMT102 and FMT103 issue many false positives and should only be used with Python 2.6 which does not support unindexed parameters.

Format strings

Every string where either the format method is called or where it is the first parameter of str.format, is considered a format string and cause the higher numbers.

If that call to format uses variable arguments, it cannot issue FMT201 and FMT202 as missing entries might be hidden in those variable arguments. FMT301 and FMT302 can still be checked for any argument which is defined statically.

Python 2.6 support

Python 2.6 is only partially supported as it's using Python's capability to format a string. So if a string contains implicit parameters, it won't be detected as a parameter on Python 2.6 and thus it won't cause any FMT1XX errors. But it might still cause an error FMT301 when variable arguments aren't used.

So if Python 2.6 compatibility is wished and thus implicit parameters aren't allowed, this plugin won't cause false positives.

Changes

0.4.0 - 2026-06-09

  • Fix support for Python version 3.14
  • Improve error message wording

0.3.0 - 2020-02-16

  • Removed support for standalone version.
  • Support multiple starargs and at any location.

0.2.3 - 2016-07-27

  • Properly register with Flake8 so it will be selected on Flake8 3.x by default and it can be selected on Flake8 2.x.

0.2.2 - 2016-05-29

  • Do not check simple expressions, except for docstrings, because they cannot be accessed anyway.
  • Properly assert starred arguments in Python 3.5. Only the last element must be a vararg if varargs are present and not the complete list.
  • Output correct column offset on Python 3.4.2, as that used the wrong offset inside calls.

0.2.1 - 2015-09-20

  • Support str.format("…", …) calls and handle them like "…".format(…)

0.2.0 - 2015-09-12

  • Instead of using a regex it's trying to parse it using Python's parser
  • This result can also be used now to verify that enough parameters are given
  • Limited Python 2.6 support

0.1.0 - 2015-09-10

  • Detect unindexed parameters in all strings
  • Separate error code for docstrings

About

Check that indexed parameters are used in strings

Resources

Stars

20 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

String format parameter checker

Build StatusCoverage StatusPypi Entry

An extension for Flake8 to check the strings and parameters using str.format. It checks all strings whether they use numbered parameters with an implicit index which isn't support in Python 2.6.

In all instances of '…'.format(…) it will also check whether there are enough parameters given. If the format call uses variable arguments, it'll just check whether the right types of arguments are present.

Plugin for Flake8

When both Flake8 and flake8-string-format are installed, the plugin is available in flake8:

$ flake8 --version
3.0.2 (flake8-string-format: 0.2.3, […]

This plugin supports Flake8 2.6 as well as Flake8 3.0. Older or newer versions may be supported too but they weren't tested.

Via --ignore it's possible to ignore unindexed parameters:

$ flake8 some_file.py
...
some_file.py:1:1: FMT101 format string does contain unindexed parameters
$ flake8 --ignore FMT101 some_file.py
...

Parameters

This module doesn't add any additional parameters to Flake8.

Error codes

This plugin is using the following error codes:

Presence of implicit parameters
FMT101format string contains unindexed parameters
FMT102docstring contains unindexed parameters
FMT103other string contains unindexed parameters
Missing values in the parameters
FMT201format call index too large (INDEX)
FMT202format call uses missing keyword (KEYWORD)
FMT203format call uses keyword arguments but there are no keyword entries
FMT204format call uses indexed arguments but there are no indexed entries
FMT205format call uses implicit and explicit indexes together
Unused values in the parameters
FMT301format call provides unused index (INDEX)
FMT302format call provides unused keyword (KEYWORD)

Operation

The plugin will go through all bytes, str and unicode instances. If it encounters bytes instances on Python 3, it'll decode them using ASCII and if that fails it'll skip that entry.

Depending on the usage the string is handled differently. When it is not being formatted, it can only cause FMT102 and FMT103. For this plugin all strings which are the first expression of the module or after a function or class definition are considered docstrings.

Both FMT102 and FMT103 issue many false positives and should only be used with Python 2.6 which does not support unindexed parameters.

Format strings

Every string where either the format method is called or where it is the first parameter of str.format, is considered a format string and cause the higher numbers.

If that call to format uses variable arguments, it cannot issue FMT201 and FMT202 as missing entries might be hidden in those variable arguments. FMT301 and FMT302 can still be checked for any argument which is defined statically.

Python 2.6 support

Python 2.6 is only partially supported as it's using Python's capability to format a string. So if a string contains implicit parameters, it won't be detected as a parameter on Python 2.6 and thus it won't cause any FMT1XX errors. But it might still cause an error FMT301 when variable arguments aren't used.

So if Python 2.6 compatibility is wished and thus implicit parameters aren't allowed, this plugin won't cause false positives.

Changes

0.4.0 - 2026-06-09

  • Fix support for Python version 3.14
  • Improve error message wording

0.3.0 - 2020-02-16

  • Removed support for standalone version.
  • Support multiple starargs and at any location.

0.2.3 - 2016-07-27

  • Properly register with Flake8 so it will be selected on Flake8 3.x by default and it can be selected on Flake8 2.x.

0.2.2 - 2016-05-29

  • Do not check simple expressions, except for docstrings, because they cannot be accessed anyway.
  • Properly assert starred arguments in Python 3.5. Only the last element must be a vararg if varargs are present and not the complete list.
  • Output correct column offset on Python 3.4.2, as that used the wrong offset inside calls.

0.2.1 - 2015-09-20

  • Support str.format("…", …) calls and handle them like "…".format(…)

0.2.0 - 2015-09-12

  • Instead of using a regex it's trying to parse it using Python's parser
  • This result can also be used now to verify that enough parameters are given
  • Limited Python 2.6 support

0.1.0 - 2015-09-10

  • Detect unindexed parameters in all strings
  • Separate error code for docstrings

About

Check that indexed parameters are used in strings

Resources

Stars

20 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

String format parameter checker

Build StatusCoverage StatusPypi Entry

An extension for Flake8 to check the strings and parameters using str.format. It checks all strings whether they use numbered parameters with an implicit index which isn't support in Python 2.6.

In all instances of '…'.format(…) it will also check whether there are enough parameters given. If the format call uses variable arguments, it'll just check whether the right types of arguments are present.

Plugin for Flake8

When both Flake8 and flake8-string-format are installed, the plugin is available in flake8:

$ flake8 --version
3.0.2 (flake8-string-format: 0.2.3, […]

This plugin supports Flake8 2.6 as well as Flake8 3.0. Older or newer versions may be supported too but they weren't tested.

Via --ignore it's possible to ignore unindexed parameters:

$ flake8 some_file.py
...
some_file.py:1:1: FMT101 format string does contain unindexed parameters
$ flake8 --ignore FMT101 some_file.py
...

Parameters

This module doesn't add any additional parameters to Flake8.

Error codes

This plugin is using the following error codes:

Presence of implicit parameters
FMT101format string contains unindexed parameters
FMT102docstring contains unindexed parameters
FMT103other string contains unindexed parameters
Missing values in the parameters
FMT201format call index too large (INDEX)
FMT202format call uses missing keyword (KEYWORD)
FMT203format call uses keyword arguments but there are no keyword entries
FMT204format call uses indexed arguments but there are no indexed entries
FMT205format call uses implicit and explicit indexes together
Unused values in the parameters
FMT301format call provides unused index (INDEX)
FMT302format call provides unused keyword (KEYWORD)

Operation

The plugin will go through all bytes, str and unicode instances. If it encounters bytes instances on Python 3, it'll decode them using ASCII and if that fails it'll skip that entry.

Depending on the usage the string is handled differently. When it is not being formatted, it can only cause FMT102 and FMT103. For this plugin all strings which are the first expression of the module or after a function or class definition are considered docstrings.

Both FMT102 and FMT103 issue many false positives and should only be used with Python 2.6 which does not support unindexed parameters.

Format strings

Every string where either the format method is called or where it is the first parameter of str.format, is considered a format string and cause the higher numbers.

If that call to format uses variable arguments, it cannot issue FMT201 and FMT202 as missing entries might be hidden in those variable arguments. FMT301 and FMT302 can still be checked for any argument which is defined statically.

Python 2.6 support

Python 2.6 is only partially supported as it's using Python's capability to format a string. So if a string contains implicit parameters, it won't be detected as a parameter on Python 2.6 and thus it won't cause any FMT1XX errors. But it might still cause an error FMT301 when variable arguments aren't used.

So if Python 2.6 compatibility is wished and thus implicit parameters aren't allowed, this plugin won't cause false positives.

Changes

0.4.0 - 2026-06-09

  • Fix support for Python version 3.14
  • Improve error message wording

0.3.0 - 2020-02-16

  • Removed support for standalone version.
  • Support multiple starargs and at any location.

0.2.3 - 2016-07-27

  • Properly register with Flake8 so it will be selected on Flake8 3.x by default and it can be selected on Flake8 2.x.

0.2.2 - 2016-05-29

  • Do not check simple expressions, except for docstrings, because they cannot be accessed anyway.
  • Properly assert starred arguments in Python 3.5. Only the last element must be a vararg if varargs are present and not the complete list.
  • Output correct column offset on Python 3.4.2, as that used the wrong offset inside calls.

0.2.1 - 2015-09-20

  • Support str.format("…", …) calls and handle them like "…".format(…)

0.2.0 - 2015-09-12

  • Instead of using a regex it's trying to parse it using Python's parser
  • This result can also be used now to verify that enough parameters are given
  • Limited Python 2.6 support

0.1.0 - 2015-09-10

  • Detect unindexed parameters in all strings
  • Separate error code for docstrings

About

Check that indexed parameters are used in strings

Resources

Stars

20 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

String format parameter checker

Build StatusCoverage StatusPypi Entry

An extension for Flake8 to check the strings and parameters using str.format. It checks all strings whether they use numbered parameters with an implicit index which isn't support in Python 2.6.

In all instances of '…'.format(…) it will also check whether there are enough parameters given. If the format call uses variable arguments, it'll just check whether the right types of arguments are present.

Plugin for Flake8

When both Flake8 and flake8-string-format are installed, the plugin is available in flake8:

$ flake8 --version
3.0.2 (flake8-string-format: 0.2.3, […]

This plugin supports Flake8 2.6 as well as Flake8 3.0. Older or newer versions may be supported too but they weren't tested.

Via --ignore it's possible to ignore unindexed parameters:

$ flake8 some_file.py
...
some_file.py:1:1: FMT101 format string does contain unindexed parameters
$ flake8 --ignore FMT101 some_file.py
...

Parameters

This module doesn't add any additional parameters to Flake8.

Error codes

This plugin is using the following error codes:

Presence of implicit parameters
FMT101format string contains unindexed parameters
FMT102docstring contains unindexed parameters
FMT103other string contains unindexed parameters
Missing values in the parameters
FMT201format call index too large (INDEX)
FMT202format call uses missing keyword (KEYWORD)
FMT203format call uses keyword arguments but there are no keyword entries
FMT204format call uses indexed arguments but there are no indexed entries
FMT205format call uses implicit and explicit indexes together
Unused values in the parameters
FMT301format call provides unused index (INDEX)
FMT302format call provides unused keyword (KEYWORD)

Operation

The plugin will go through all bytes, str and unicode instances. If it encounters bytes instances on Python 3, it'll decode them using ASCII and if that fails it'll skip that entry.

Depending on the usage the string is handled differently. When it is not being formatted, it can only cause FMT102 and FMT103. For this plugin all strings which are the first expression of the module or after a function or class definition are considered docstrings.

Both FMT102 and FMT103 issue many false positives and should only be used with Python 2.6 which does not support unindexed parameters.

Format strings

Every string where either the format method is called or where it is the first parameter of str.format, is considered a format string and cause the higher numbers.

If that call to format uses variable arguments, it cannot issue FMT201 and FMT202 as missing entries might be hidden in those variable arguments. FMT301 and FMT302 can still be checked for any argument which is defined statically.

Python 2.6 support

Python 2.6 is only partially supported as it's using Python's capability to format a string. So if a string contains implicit parameters, it won't be detected as a parameter on Python 2.6 and thus it won't cause any FMT1XX errors. But it might still cause an error FMT301 when variable arguments aren't used.

So if Python 2.6 compatibility is wished and thus implicit parameters aren't allowed, this plugin won't cause false positives.

Changes

0.4.0 - 2026-06-09

  • Fix support for Python version 3.14
  • Improve error message wording

0.3.0 - 2020-02-16

  • Removed support for standalone version.
  • Support multiple starargs and at any location.

0.2.3 - 2016-07-27

  • Properly register with Flake8 so it will be selected on Flake8 3.x by default and it can be selected on Flake8 2.x.

0.2.2 - 2016-05-29

  • Do not check simple expressions, except for docstrings, because they cannot be accessed anyway.
  • Properly assert starred arguments in Python 3.5. Only the last element must be a vararg if varargs are present and not the complete list.
  • Output correct column offset on Python 3.4.2, as that used the wrong offset inside calls.

0.2.1 - 2015-09-20

  • Support str.format("…", …) calls and handle them like "…".format(…)

0.2.0 - 2015-09-12

  • Instead of using a regex it's trying to parse it using Python's parser
  • This result can also be used now to verify that enough parameters are given
  • Limited Python 2.6 support

0.1.0 - 2015-09-10

  • Detect unindexed parameters in all strings
  • Separate error code for docstrings

About

Check that indexed parameters are used in strings

Resources

Stars

20 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages