From df5f76872f415028951cd6d920058f54ede4931b Mon Sep 17 00:00:00 2001
From: Joe Farebrother
Date: Tue, 15 Jul 2025 10:18:29 +0100
Subject: [PATCH 1/4] Update docs for duplicate-key-in-dict-literal to relate.
to python 3
---
.../src/Expressions/DuplicateKeyInDictionaryLiteral.py | 4 ++--
.../Expressions/DuplicateKeyInDictionaryLiteral.qhelp | 10 +++++-----
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.py b/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.py
index 14804d313005..b74e3fd02362 100644
--- a/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.py
+++ b/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.py
@@ -1,2 +1,2 @@
-dictionary = {1:"a", 2:"b", 2:"c"}
-print dictionary[2]
\ No newline at end of file
+dictionary = {1:"a", 2:"b", 2:"c"} # BAD: `2` key is duplicated.
+print(dictionary[2])
\ No newline at end of file
diff --git a/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.qhelp b/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.qhelp
index 19c4df9a5581..3aeea4b954c3 100644
--- a/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.qhelp
+++ b/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.qhelp
@@ -4,8 +4,8 @@
Dictionary literals are constructed in the order given in the source.
-This means that if a key is duplicated the second key-value pair will overwrite
-the first as a dictionary can only have one value per key.
+This means that if a key is duplicated, the second key-value pair will overwrite
+the first; as a dictionary can only have one value per key.
@@ -15,14 +15,14 @@ If they are then decide which value is wanted and delete the other one.
-This example will output "c" because the mapping between 2 and "b" is overwritten by the
-mapping from 2 to "c". The programmer may have meant to map 3 to "c" instead.
+The following example will output "c"
, because the mapping between 2 and "b"
is overwritten by the
+mapping from 2 to "c"
. The programmer may have meant to map 3 to "c"
instead.
- Python: Dictionary literals.
+ Python: Dictionary literals.
From 7a7db0efe8854151349e7df58d2a5d0d946d6078 Mon Sep 17 00:00:00 2001
From: Joe Farebrother
Date: Tue, 15 Jul 2025 10:42:25 +0100
Subject: [PATCH 2/4] Update unsupported format character documentaion, fix
outdated reference link
---
.../ql/src/Expressions/UnsupportedFormatCharacter.qhelp | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/python/ql/src/Expressions/UnsupportedFormatCharacter.qhelp b/python/ql/src/Expressions/UnsupportedFormatCharacter.qhelp
index b22d59a209c5..ae2f30afcb38 100644
--- a/python/ql/src/Expressions/UnsupportedFormatCharacter.qhelp
+++ b/python/ql/src/Expressions/UnsupportedFormatCharacter.qhelp
@@ -3,18 +3,19 @@
"qhelp.dtd">
-A format string, that is the string on the left hand side of an expression like fmt % arguments
, must consist of legal conversion specifiers.
+
A printf-style format string (i.e. a string that is used as the left hand side of the %
operator, such as fmt % arguments
)
+must consist of valid conversion specifiers, such as %s
, %d
, etc.
Otherwise, a ValueError
will be raised.
-Choose a legal conversion specifier.
+Ensure a valid conversion specifier is used.
-In format_as_tuple_incorrect
, "t" is not a legal conversion specifier.
+
In the following example, format_as_tuple_incorrect
, %t
is not a valid conversion specifier.
@@ -22,7 +23,7 @@ Otherwise, a ValueError
will be raised.
- Python Library Reference: String Formatting.
+ Python Library Reference: printf-style String Formatting.
From 909f57261c59cf64def58e5e9bc4dfd26b578352 Mon Sep 17 00:00:00 2001
From: Joe Farebrother
Date: Tue, 15 Jul 2025 13:26:46 +0100
Subject: [PATCH 3/4] Minor doc updates; updating python 2 references to python
3 and updating grammar
---
python/ql/src/Exceptions/CatchingBaseException.qhelp | 6 +++---
python/ql/src/Exceptions/EmptyExcept.qhelp | 4 ++--
python/ql/src/Expressions/CallToSuperWrongClass.qhelp | 4 ++--
python/ql/src/Expressions/ExplicitCallToDel.qhelp | 2 +-
.../ql/src/Expressions/IncorrectComparisonUsingIs.qhelp | 2 +-
python/ql/src/Expressions/IncorrectComparisonUsingIs.ql | 2 +-
python/ql/src/Functions/ConsistentReturns.qhelp | 4 ++--
python/ql/src/Functions/ConsistentReturns.ql | 4 ++--
python/ql/src/Functions/InitIsGenerator.qhelp | 2 +-
.../Functions/ModificationOfParameterWithDefault.qhelp | 2 +-
.../Functions/return_values/ConsistentReturns.expected | 8 ++++----
11 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/python/ql/src/Exceptions/CatchingBaseException.qhelp b/python/ql/src/Exceptions/CatchingBaseException.qhelp
index 725f9ce465ba..bde17418aa76 100644
--- a/python/ql/src/Exceptions/CatchingBaseException.qhelp
+++ b/python/ql/src/Exceptions/CatchingBaseException.qhelp
@@ -45,10 +45,10 @@ leaving KeyboardInterrupt
to propagate.
-Python Language Reference: The try statement,
-Exceptions.
+Python Language Reference: The try statement,
+Exceptions.
M. Lutz, Learning Python, Section 35.3: Exception Design Tips and Gotchas, O'Reilly Media, 2013.
-Python Tutorial: Errors and Exceptions.
+Python Tutorial: Errors and Exceptions.
diff --git a/python/ql/src/Exceptions/EmptyExcept.qhelp b/python/ql/src/Exceptions/EmptyExcept.qhelp
index 9b7ef09643fb..f968c65af196 100644
--- a/python/ql/src/Exceptions/EmptyExcept.qhelp
+++ b/python/ql/src/Exceptions/EmptyExcept.qhelp
@@ -7,7 +7,7 @@
The loss of information can lead to hard to debug errors and incomplete log files.
It is even possible that ignoring an exception can cause a security vulnerability.
An empty except
block may be an indication that the programmer intended to
-handle the exception but never wrote the code to do so.
+handle the exception, but never wrote the code to do so.
@@ -15,7 +15,7 @@ handle the exception but never wrote the code to do so.
-In this example the program keeps running with the same privileges if it fails to drop to lower
+
In this example, the program keeps running with the same privileges if it fails to drop to lower
privileges.
diff --git a/python/ql/src/Expressions/CallToSuperWrongClass.qhelp b/python/ql/src/Expressions/CallToSuperWrongClass.qhelp
index dc88b1bea88c..7a2516329f4a 100644
--- a/python/ql/src/Expressions/CallToSuperWrongClass.qhelp
+++ b/python/ql/src/Expressions/CallToSuperWrongClass.qhelp
@@ -24,7 +24,7 @@ However, this may result in incorrect object initialization if the enclosing cla
-In this example the call to super(Vehicle, self)
in Car.__init__
is incorrect as it
+In this example, the call to super(Vehicle, self)
in Car.__init__
is incorrect, as it
passes Vehicle
rather than Car
as the first argument to super
.
As a result, super(SportsCar, self).__init__()
in the SportsCar.__init__
method will not call
all __init__()
methods because the call to super(Vehicle, self).__init__()
@@ -37,7 +37,7 @@ skips StatusSymbol.__init__()
.
- Python Standard Library: super.
+ Python Standard Library: super.
Artima Developer: Things to Know About Python Super.
diff --git a/python/ql/src/Expressions/ExplicitCallToDel.qhelp b/python/ql/src/Expressions/ExplicitCallToDel.qhelp
index 9ec18b46918e..3e6b79c929f8 100644
--- a/python/ql/src/Expressions/ExplicitCallToDel.qhelp
+++ b/python/ql/src/Expressions/ExplicitCallToDel.qhelp
@@ -17,7 +17,7 @@ wrap the use of the object in a with
statement.
-In the first example, rather than close the zip file in a conventional manner the programmer has called __del__
.
+
In the first example, rather than close the zip file in a conventional manner, the programmer has called __del__
.
A safer alternative is shown in the second example.
diff --git a/python/ql/src/Expressions/IncorrectComparisonUsingIs.qhelp b/python/ql/src/Expressions/IncorrectComparisonUsingIs.qhelp
index b8c25fa04a24..b1df1e8b8b7c 100644
--- a/python/ql/src/Expressions/IncorrectComparisonUsingIs.qhelp
+++ b/python/ql/src/Expressions/IncorrectComparisonUsingIs.qhelp
@@ -37,7 +37,7 @@ either of the alternatives below.
- Python Standard Library: Comparisons.
+ Python Standard Library: Comparisons.
diff --git a/python/ql/src/Expressions/IncorrectComparisonUsingIs.ql b/python/ql/src/Expressions/IncorrectComparisonUsingIs.ql
index 6eda4abbde21..fa0ca14669f6 100644
--- a/python/ql/src/Expressions/IncorrectComparisonUsingIs.ql
+++ b/python/ql/src/Expressions/IncorrectComparisonUsingIs.ql
@@ -1,6 +1,6 @@
/**
* @name Comparison using is when operands support `__eq__`
- * @description Comparison using 'is' when equivalence is not the same as identity
+ * @description Comparison using `is` when equivalence is not the same as identity
* @kind problem
* @tags quality
* reliability
diff --git a/python/ql/src/Functions/ConsistentReturns.qhelp b/python/ql/src/Functions/ConsistentReturns.qhelp
index cd29062ada66..62162a2c1c48 100644
--- a/python/ql/src/Functions/ConsistentReturns.qhelp
+++ b/python/ql/src/Functions/ConsistentReturns.qhelp
@@ -6,7 +6,7 @@
When a function contains both explicit returns (return value
) and implicit returns
-(where code falls off the end of a function) this often indicates that a return
+(where code falls off the end of a function), this often indicates that a return
statement has been forgotten. It is best to return an explicit return value even when returning
None
because this makes it easier for other developers to read your code.
@@ -29,7 +29,7 @@ return value of None
as this equates to False
. However
-Python Language Reference: Function definitions.
+Python Language Reference: Function definitions.
diff --git a/python/ql/src/Functions/ConsistentReturns.ql b/python/ql/src/Functions/ConsistentReturns.ql
index a1b308514562..1bc7b5724b36 100644
--- a/python/ql/src/Functions/ConsistentReturns.ql
+++ b/python/ql/src/Functions/ConsistentReturns.ql
@@ -1,6 +1,6 @@
/**
* @name Explicit returns mixed with implicit (fall through) returns
- * @description Mixing implicit and explicit returns indicates a likely error as implicit returns always return 'None'.
+ * @description Mixing implicit and explicit returns indicates a likely error as implicit returns always return `None`.
* @kind problem
* @tags quality
* reliability
@@ -31,4 +31,4 @@ predicate has_implicit_return(Function func) {
from Function func
where explicitly_returns_non_none(func) and has_implicit_return(func)
select func,
- "Mixing implicit and explicit returns may indicate an error as implicit returns always return None."
+ "Mixing implicit and explicit returns may indicate an error, as implicit returns always return None."
diff --git a/python/ql/src/Functions/InitIsGenerator.qhelp b/python/ql/src/Functions/InitIsGenerator.qhelp
index 113e444d1f39..d1144815c7fc 100644
--- a/python/ql/src/Functions/InitIsGenerator.qhelp
+++ b/python/ql/src/Functions/InitIsGenerator.qhelp
@@ -22,7 +22,7 @@ not logical in the context of an initializer.
- Python: The __init__ method.
+ Python: The __init__ method.
diff --git a/python/ql/src/Functions/ModificationOfParameterWithDefault.qhelp b/python/ql/src/Functions/ModificationOfParameterWithDefault.qhelp
index 39bb484f8917..12714a68364d 100644
--- a/python/ql/src/Functions/ModificationOfParameterWithDefault.qhelp
+++ b/python/ql/src/Functions/ModificationOfParameterWithDefault.qhelp
@@ -37,7 +37,7 @@ function with a default of default=None
, check if the parameter is
Effbot: Default Parameter Values in Python.
- Python Language Reference: Function definitions.
+ Python Language Reference: Function definitions.
diff --git a/python/ql/test/query-tests/Functions/return_values/ConsistentReturns.expected b/python/ql/test/query-tests/Functions/return_values/ConsistentReturns.expected
index 1bb6a25860be..302a327a1444 100644
--- a/python/ql/test/query-tests/Functions/return_values/ConsistentReturns.expected
+++ b/python/ql/test/query-tests/Functions/return_values/ConsistentReturns.expected
@@ -1,4 +1,4 @@
-| functions_test.py:18:1:18:11 | Function cr1 | Mixing implicit and explicit returns may indicate an error as implicit returns always return None. |
-| functions_test.py:22:1:22:11 | Function cr2 | Mixing implicit and explicit returns may indicate an error as implicit returns always return None. |
-| functions_test.py:336:1:336:16 | Function ok_match | Mixing implicit and explicit returns may indicate an error as implicit returns always return None. |
-| functions_test.py:344:1:344:17 | Function ok_match2 | Mixing implicit and explicit returns may indicate an error as implicit returns always return None. |
+| functions_test.py:18:1:18:11 | Function cr1 | Mixing implicit and explicit returns may indicate an error, as implicit returns always return None. |
+| functions_test.py:22:1:22:11 | Function cr2 | Mixing implicit and explicit returns may indicate an error, as implicit returns always return None. |
+| functions_test.py:336:1:336:16 | Function ok_match | Mixing implicit and explicit returns may indicate an error, as implicit returns always return None. |
+| functions_test.py:344:1:344:17 | Function ok_match2 | Mixing implicit and explicit returns may indicate an error, as implicit returns always return None. |
From 0f5be2d0961decfcfc6a96f3b2b79cbe2805acdd Mon Sep 17 00:00:00 2001
From: Joe Farebrother
Date: Tue, 15 Jul 2025 13:33:57 +0100
Subject: [PATCH 4/4] Update
python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.py b/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.py
index b74e3fd02362..ea051fcd1530 100644
--- a/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.py
+++ b/python/ql/src/Expressions/DuplicateKeyInDictionaryLiteral.py
@@ -1,2 +1,2 @@
-dictionary = {1:"a", 2:"b", 2:"c"} # BAD: `2` key is duplicated.
+dictionary = {1:"a", 2:"b", 2:"c"} # BAD: The `2` key is duplicated.
print(dictionary[2])
\ No newline at end of file
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy