Skip to content

[Python] Do not use mutable default argument - #4613

Closed
jirikuncar wants to merge 8 commits into
OpenAPITools:masterfrom
jirikuncar:python-mutable-default-argument
Closed

[Python] Do not use mutable default argument#4613
jirikuncar wants to merge 8 commits into
OpenAPITools:masterfrom
jirikuncar:python-mutable-default-argument

Conversation

@jirikuncar

@jirikuncarjirikuncar commented Nov 26, 2019

Copy link
Copy Markdown
Contributor

Avoid using mutable default arguments in Python.

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

--
cc @taxpon (2017/07) @frol (2017/07) @mbohlool (2017/07) @cbornet (2017/09) @kenjones-cisco (2017/11) @tomplus (2018/10) @Jyhess (2019/01) @slash-arun (2019/11) @spacether (2019/11)

@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 512c7c4 to 31c80b6CompareNovember 26, 2019 23:16
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from b0dec03 to 6b058b7CompareNovember 27, 2019 09:07
@jirikuncar

Copy link
Copy Markdown
ContributorAuthor

@spacether thank you for the review. I have cleaned up the configuration template even more based on your suggestions.

Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 6b058b7 to 2808b6dCompareNovember 28, 2019 15:34
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 2808b6d to da67f9fCompareNovember 29, 2019 09:02
According to @spacether it is better to document only property
getter with combined signature of both getter and setter
instead of individual getters and setters.
@spacether

spacether commented Nov 30, 2019

Copy link
Copy Markdown
Contributor

@jirikuncar it sounds like there may have been a misunderstanding here. My comments were asking that you preserve the docstring information from the setters as you were deleting the types shown there. I also give a reason why the docstring for both the getter and the setter exists in the getter. In my opinion having the docstring in the getter + setter is helpful for the following reasons. As a dev I want to be able to:

  • read a getter docstring to understand what I get
  • read a setter docstring to understand what I need to set
  • use the help(ClassName) in the python terminal to read getter docstring and read what we need to get/set. In my comments I didn't ask that you delete the setter docstrings.

If you want to delete the setter docstrings I am okay with that as long as the needed information still exists in the getter docstrings.


@property
def debug(self):
"""Debug status

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a type description to this docstring
We are losing the information when we delete it from the setter

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@spacether I don't get your comment.

@propertydefdebug(self):
"""The debug status. :param value: The debug status, True or False. :type: bool """

@spacetherspacetherDec 3, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, my mistake, I missed the remaining bool type here. This is good.

@spacether

Copy link
Copy Markdown
Contributor

@jirikuncar can you check out the Travis CI error here?
https://travis-ci.org/OpenAPITools/openapi-generator/builds/618563611?utm_source=github_status&utm_medium=notification
It looks like there are python errors in CI testing there.

@jirikuncar

Copy link
Copy Markdown
ContributorAuthor

I might revisit this one in the future by updating docstrings to follow PEP 257 (pydocstyle).

A minimal changed for mutable defaults has been moved to #4665.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jirikuncar@spacether
, '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" + '
[Python] Do not use mutable default argument by jirikuncar · Pull Request #4613 · OpenAPITools/openapi-generator · GitHub
Skip to content

[Python] Do not use mutable default argument - #4613

Closed
jirikuncar wants to merge 8 commits into
OpenAPITools:masterfrom
jirikuncar:python-mutable-default-argument
Closed

[Python] Do not use mutable default argument#4613
jirikuncar wants to merge 8 commits into
OpenAPITools:masterfrom
jirikuncar:python-mutable-default-argument

Conversation

@jirikuncar

@jirikuncarjirikuncar commented Nov 26, 2019

Copy link
Copy Markdown
Contributor

Avoid using mutable default arguments in Python.

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

--
cc @taxpon (2017/07) @frol (2017/07) @mbohlool (2017/07) @cbornet (2017/09) @kenjones-cisco (2017/11) @tomplus (2018/10) @Jyhess (2019/01) @slash-arun (2019/11) @spacether (2019/11)

@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 512c7c4 to 31c80b6CompareNovember 26, 2019 23:16
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from b0dec03 to 6b058b7CompareNovember 27, 2019 09:07
@jirikuncar

Copy link
Copy Markdown
ContributorAuthor

@spacether thank you for the review. I have cleaned up the configuration template even more based on your suggestions.

Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 6b058b7 to 2808b6dCompareNovember 28, 2019 15:34
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 2808b6d to da67f9fCompareNovember 29, 2019 09:02
According to @spacether it is better to document only property
getter with combined signature of both getter and setter
instead of individual getters and setters.
@spacether

spacether commented Nov 30, 2019

Copy link
Copy Markdown
Contributor

@jirikuncar it sounds like there may have been a misunderstanding here. My comments were asking that you preserve the docstring information from the setters as you were deleting the types shown there. I also give a reason why the docstring for both the getter and the setter exists in the getter. In my opinion having the docstring in the getter + setter is helpful for the following reasons. As a dev I want to be able to:

  • read a getter docstring to understand what I get
  • read a setter docstring to understand what I need to set
  • use the help(ClassName) in the python terminal to read getter docstring and read what we need to get/set. In my comments I didn't ask that you delete the setter docstrings.

If you want to delete the setter docstrings I am okay with that as long as the needed information still exists in the getter docstrings.


@property
def debug(self):
"""Debug status

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a type description to this docstring
We are losing the information when we delete it from the setter

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@spacether I don't get your comment.

@propertydefdebug(self):
"""The debug status. :param value: The debug status, True or False. :type: bool """

@spacetherspacetherDec 3, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, my mistake, I missed the remaining bool type here. This is good.

@spacether

Copy link
Copy Markdown
Contributor

@jirikuncar can you check out the Travis CI error here?
https://travis-ci.org/OpenAPITools/openapi-generator/builds/618563611?utm_source=github_status&utm_medium=notification
It looks like there are python errors in CI testing there.

@jirikuncar

Copy link
Copy Markdown
ContributorAuthor

I might revisit this one in the future by updating docstrings to follow PEP 257 (pydocstyle).

A minimal changed for mutable defaults has been moved to #4665.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jirikuncar@spacether
, '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('^' + ".*" + ' [Python] Do not use mutable default argument by jirikuncar · Pull Request #4613 · OpenAPITools/openapi-generator · GitHub
Skip to content

[Python] Do not use mutable default argument - #4613

Closed
jirikuncar wants to merge 8 commits into
OpenAPITools:masterfrom
jirikuncar:python-mutable-default-argument
Closed

[Python] Do not use mutable default argument#4613
jirikuncar wants to merge 8 commits into
OpenAPITools:masterfrom
jirikuncar:python-mutable-default-argument

Conversation

@jirikuncar

@jirikuncarjirikuncar commented Nov 26, 2019

Copy link
Copy Markdown
Contributor

Avoid using mutable default arguments in Python.

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

--
cc @taxpon (2017/07) @frol (2017/07) @mbohlool (2017/07) @cbornet (2017/09) @kenjones-cisco (2017/11) @tomplus (2018/10) @Jyhess (2019/01) @slash-arun (2019/11) @spacether (2019/11)

@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 512c7c4 to 31c80b6CompareNovember 26, 2019 23:16
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from b0dec03 to 6b058b7CompareNovember 27, 2019 09:07
@jirikuncar

Copy link
Copy Markdown
ContributorAuthor

@spacether thank you for the review. I have cleaned up the configuration template even more based on your suggestions.

Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 6b058b7 to 2808b6dCompareNovember 28, 2019 15:34
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 2808b6d to da67f9fCompareNovember 29, 2019 09:02
According to @spacether it is better to document only property
getter with combined signature of both getter and setter
instead of individual getters and setters.
@spacether

spacether commented Nov 30, 2019

Copy link
Copy Markdown
Contributor

@jirikuncar it sounds like there may have been a misunderstanding here. My comments were asking that you preserve the docstring information from the setters as you were deleting the types shown there. I also give a reason why the docstring for both the getter and the setter exists in the getter. In my opinion having the docstring in the getter + setter is helpful for the following reasons. As a dev I want to be able to:

  • read a getter docstring to understand what I get
  • read a setter docstring to understand what I need to set
  • use the help(ClassName) in the python terminal to read getter docstring and read what we need to get/set. In my comments I didn't ask that you delete the setter docstrings.

If you want to delete the setter docstrings I am okay with that as long as the needed information still exists in the getter docstrings.


@property
def debug(self):
"""Debug status

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a type description to this docstring
We are losing the information when we delete it from the setter

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@spacether I don't get your comment.

@propertydefdebug(self):
"""The debug status. :param value: The debug status, True or False. :type: bool """

@spacetherspacetherDec 3, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, my mistake, I missed the remaining bool type here. This is good.

@spacether

Copy link
Copy Markdown
Contributor

@jirikuncar can you check out the Travis CI error here?
https://travis-ci.org/OpenAPITools/openapi-generator/builds/618563611?utm_source=github_status&utm_medium=notification
It looks like there are python errors in CI testing there.

@jirikuncar

Copy link
Copy Markdown
ContributorAuthor

I might revisit this one in the future by updating docstrings to follow PEP 257 (pydocstyle).

A minimal changed for mutable defaults has been moved to #4665.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jirikuncar@spacether
, '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('^' + ".*" + ' [Python] Do not use mutable default argument by jirikuncar · Pull Request #4613 · OpenAPITools/openapi-generator · GitHub
Skip to content

[Python] Do not use mutable default argument - #4613

Closed
jirikuncar wants to merge 8 commits into
OpenAPITools:masterfrom
jirikuncar:python-mutable-default-argument
Closed

[Python] Do not use mutable default argument#4613
jirikuncar wants to merge 8 commits into
OpenAPITools:masterfrom
jirikuncar:python-mutable-default-argument

Conversation

@jirikuncar

@jirikuncarjirikuncar commented Nov 26, 2019

Copy link
Copy Markdown
Contributor

Avoid using mutable default arguments in Python.

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

--
cc @taxpon (2017/07) @frol (2017/07) @mbohlool (2017/07) @cbornet (2017/09) @kenjones-cisco (2017/11) @tomplus (2018/10) @Jyhess (2019/01) @slash-arun (2019/11) @spacether (2019/11)

@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 512c7c4 to 31c80b6CompareNovember 26, 2019 23:16
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from b0dec03 to 6b058b7CompareNovember 27, 2019 09:07
@jirikuncar

Copy link
Copy Markdown
ContributorAuthor

@spacether thank you for the review. I have cleaned up the configuration template even more based on your suggestions.

Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 6b058b7 to 2808b6dCompareNovember 28, 2019 15:34
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 2808b6d to da67f9fCompareNovember 29, 2019 09:02
According to @spacether it is better to document only property
getter with combined signature of both getter and setter
instead of individual getters and setters.
@spacether

spacether commented Nov 30, 2019

Copy link
Copy Markdown
Contributor

@jirikuncar it sounds like there may have been a misunderstanding here. My comments were asking that you preserve the docstring information from the setters as you were deleting the types shown there. I also give a reason why the docstring for both the getter and the setter exists in the getter. In my opinion having the docstring in the getter + setter is helpful for the following reasons. As a dev I want to be able to:

  • read a getter docstring to understand what I get
  • read a setter docstring to understand what I need to set
  • use the help(ClassName) in the python terminal to read getter docstring and read what we need to get/set. In my comments I didn't ask that you delete the setter docstrings.

If you want to delete the setter docstrings I am okay with that as long as the needed information still exists in the getter docstrings.


@property
def debug(self):
"""Debug status

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a type description to this docstring
We are losing the information when we delete it from the setter

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@spacether I don't get your comment.

@propertydefdebug(self):
"""The debug status. :param value: The debug status, True or False. :type: bool """

@spacetherspacetherDec 3, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, my mistake, I missed the remaining bool type here. This is good.

@spacether

Copy link
Copy Markdown
Contributor

@jirikuncar can you check out the Travis CI error here?
https://travis-ci.org/OpenAPITools/openapi-generator/builds/618563611?utm_source=github_status&utm_medium=notification
It looks like there are python errors in CI testing there.

@jirikuncar

Copy link
Copy Markdown
ContributorAuthor

I might revisit this one in the future by updating docstrings to follow PEP 257 (pydocstyle).

A minimal changed for mutable defaults has been moved to #4665.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jirikuncar@spacether
, '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" + ' [Python] Do not use mutable default argument by jirikuncar · Pull Request #4613 · OpenAPITools/openapi-generator · GitHub
Skip to content

[Python] Do not use mutable default argument - #4613

Closed
jirikuncar wants to merge 8 commits into
OpenAPITools:masterfrom
jirikuncar:python-mutable-default-argument
Closed

[Python] Do not use mutable default argument#4613
jirikuncar wants to merge 8 commits into
OpenAPITools:masterfrom
jirikuncar:python-mutable-default-argument

Conversation

@jirikuncar

@jirikuncarjirikuncar commented Nov 26, 2019

Copy link
Copy Markdown
Contributor

Avoid using mutable default arguments in Python.

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

--
cc @taxpon (2017/07) @frol (2017/07) @mbohlool (2017/07) @cbornet (2017/09) @kenjones-cisco (2017/11) @tomplus (2018/10) @Jyhess (2019/01) @slash-arun (2019/11) @spacether (2019/11)

@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 512c7c4 to 31c80b6CompareNovember 26, 2019 23:16
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from b0dec03 to 6b058b7CompareNovember 27, 2019 09:07
@jirikuncar

Copy link
Copy Markdown
ContributorAuthor

@spacether thank you for the review. I have cleaned up the configuration template even more based on your suggestions.

Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 6b058b7 to 2808b6dCompareNovember 28, 2019 15:34
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 2808b6d to da67f9fCompareNovember 29, 2019 09:02
According to @spacether it is better to document only property
getter with combined signature of both getter and setter
instead of individual getters and setters.
@spacether

spacether commented Nov 30, 2019

Copy link
Copy Markdown
Contributor

@jirikuncar it sounds like there may have been a misunderstanding here. My comments were asking that you preserve the docstring information from the setters as you were deleting the types shown there. I also give a reason why the docstring for both the getter and the setter exists in the getter. In my opinion having the docstring in the getter + setter is helpful for the following reasons. As a dev I want to be able to:

  • read a getter docstring to understand what I get
  • read a setter docstring to understand what I need to set
  • use the help(ClassName) in the python terminal to read getter docstring and read what we need to get/set. In my comments I didn't ask that you delete the setter docstrings.

If you want to delete the setter docstrings I am okay with that as long as the needed information still exists in the getter docstrings.


@property
def debug(self):
"""Debug status

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a type description to this docstring
We are losing the information when we delete it from the setter

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@spacether I don't get your comment.

@propertydefdebug(self):
"""The debug status. :param value: The debug status, True or False. :type: bool """

@spacetherspacetherDec 3, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, my mistake, I missed the remaining bool type here. This is good.

@spacether

Copy link
Copy Markdown
Contributor

@jirikuncar can you check out the Travis CI error here?
https://travis-ci.org/OpenAPITools/openapi-generator/builds/618563611?utm_source=github_status&utm_medium=notification
It looks like there are python errors in CI testing there.

@jirikuncar

Copy link
Copy Markdown
ContributorAuthor

I might revisit this one in the future by updating docstrings to follow PEP 257 (pydocstyle).

A minimal changed for mutable defaults has been moved to #4665.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jirikuncar@spacether
, '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('^' + ".*" + ' [Python] Do not use mutable default argument by jirikuncar · Pull Request #4613 · OpenAPITools/openapi-generator · GitHub
Skip to content

[Python] Do not use mutable default argument - #4613

Closed
jirikuncar wants to merge 8 commits into
OpenAPITools:masterfrom
jirikuncar:python-mutable-default-argument
Closed

[Python] Do not use mutable default argument#4613
jirikuncar wants to merge 8 commits into
OpenAPITools:masterfrom
jirikuncar:python-mutable-default-argument

Conversation

@jirikuncar

@jirikuncarjirikuncar commented Nov 26, 2019

Copy link
Copy Markdown
Contributor

Avoid using mutable default arguments in Python.

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

--
cc @taxpon (2017/07) @frol (2017/07) @mbohlool (2017/07) @cbornet (2017/09) @kenjones-cisco (2017/11) @tomplus (2018/10) @Jyhess (2019/01) @slash-arun (2019/11) @spacether (2019/11)

@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 512c7c4 to 31c80b6CompareNovember 26, 2019 23:16
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from b0dec03 to 6b058b7CompareNovember 27, 2019 09:07
@jirikuncar

Copy link
Copy Markdown
ContributorAuthor

@spacether thank you for the review. I have cleaned up the configuration template even more based on your suggestions.

Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 6b058b7 to 2808b6dCompareNovember 28, 2019 15:34
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 2808b6d to da67f9fCompareNovember 29, 2019 09:02
According to @spacether it is better to document only property
getter with combined signature of both getter and setter
instead of individual getters and setters.
@spacether

spacether commented Nov 30, 2019

Copy link
Copy Markdown
Contributor

@jirikuncar it sounds like there may have been a misunderstanding here. My comments were asking that you preserve the docstring information from the setters as you were deleting the types shown there. I also give a reason why the docstring for both the getter and the setter exists in the getter. In my opinion having the docstring in the getter + setter is helpful for the following reasons. As a dev I want to be able to:

  • read a getter docstring to understand what I get
  • read a setter docstring to understand what I need to set
  • use the help(ClassName) in the python terminal to read getter docstring and read what we need to get/set. In my comments I didn't ask that you delete the setter docstrings.

If you want to delete the setter docstrings I am okay with that as long as the needed information still exists in the getter docstrings.


@property
def debug(self):
"""Debug status

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a type description to this docstring
We are losing the information when we delete it from the setter

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@spacether I don't get your comment.

@propertydefdebug(self):
"""The debug status. :param value: The debug status, True or False. :type: bool """

@spacetherspacetherDec 3, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, my mistake, I missed the remaining bool type here. This is good.

@spacether

Copy link
Copy Markdown
Contributor

@jirikuncar can you check out the Travis CI error here?
https://travis-ci.org/OpenAPITools/openapi-generator/builds/618563611?utm_source=github_status&utm_medium=notification
It looks like there are python errors in CI testing there.

@jirikuncar

Copy link
Copy Markdown
ContributorAuthor

I might revisit this one in the future by updating docstrings to follow PEP 257 (pydocstyle).

A minimal changed for mutable defaults has been moved to #4665.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jirikuncar@spacether
, '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('^' + ".*" + ' [Python] Do not use mutable default argument by jirikuncar · Pull Request #4613 · OpenAPITools/openapi-generator · GitHub
Skip to content

[Python] Do not use mutable default argument - #4613

Closed
jirikuncar wants to merge 8 commits into
OpenAPITools:masterfrom
jirikuncar:python-mutable-default-argument
Closed

[Python] Do not use mutable default argument#4613
jirikuncar wants to merge 8 commits into
OpenAPITools:masterfrom
jirikuncar:python-mutable-default-argument

Conversation

@jirikuncar

@jirikuncarjirikuncar commented Nov 26, 2019

Copy link
Copy Markdown
Contributor

Avoid using mutable default arguments in Python.

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

--
cc @taxpon (2017/07) @frol (2017/07) @mbohlool (2017/07) @cbornet (2017/09) @kenjones-cisco (2017/11) @tomplus (2018/10) @Jyhess (2019/01) @slash-arun (2019/11) @spacether (2019/11)

@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 512c7c4 to 31c80b6CompareNovember 26, 2019 23:16
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from b0dec03 to 6b058b7CompareNovember 27, 2019 09:07
@jirikuncar

Copy link
Copy Markdown
ContributorAuthor

@spacether thank you for the review. I have cleaned up the configuration template even more based on your suggestions.

Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 6b058b7 to 2808b6dCompareNovember 28, 2019 15:34
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 2808b6d to da67f9fCompareNovember 29, 2019 09:02
According to @spacether it is better to document only property
getter with combined signature of both getter and setter
instead of individual getters and setters.
@spacether

spacether commented Nov 30, 2019

Copy link
Copy Markdown
Contributor

@jirikuncar it sounds like there may have been a misunderstanding here. My comments were asking that you preserve the docstring information from the setters as you were deleting the types shown there. I also give a reason why the docstring for both the getter and the setter exists in the getter. In my opinion having the docstring in the getter + setter is helpful for the following reasons. As a dev I want to be able to:

  • read a getter docstring to understand what I get
  • read a setter docstring to understand what I need to set
  • use the help(ClassName) in the python terminal to read getter docstring and read what we need to get/set. In my comments I didn't ask that you delete the setter docstrings.

If you want to delete the setter docstrings I am okay with that as long as the needed information still exists in the getter docstrings.


@property
def debug(self):
"""Debug status

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a type description to this docstring
We are losing the information when we delete it from the setter

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@spacether I don't get your comment.

@propertydefdebug(self):
"""The debug status. :param value: The debug status, True or False. :type: bool """

@spacetherspacetherDec 3, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, my mistake, I missed the remaining bool type here. This is good.

@spacether

Copy link
Copy Markdown
Contributor

@jirikuncar can you check out the Travis CI error here?
https://travis-ci.org/OpenAPITools/openapi-generator/builds/618563611?utm_source=github_status&utm_medium=notification
It looks like there are python errors in CI testing there.

@jirikuncar

Copy link
Copy Markdown
ContributorAuthor

I might revisit this one in the future by updating docstrings to follow PEP 257 (pydocstyle).

A minimal changed for mutable defaults has been moved to #4665.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jirikuncar@spacether
, '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); } })(); })(); [Python] Do not use mutable default argument by jirikuncar · Pull Request #4613 · OpenAPITools/openapi-generator · GitHub
Skip to content

[Python] Do not use mutable default argument - #4613

Closed
jirikuncar wants to merge 8 commits into
OpenAPITools:masterfrom
jirikuncar:python-mutable-default-argument
Closed

[Python] Do not use mutable default argument#4613
jirikuncar wants to merge 8 commits into
OpenAPITools:masterfrom
jirikuncar:python-mutable-default-argument

Conversation

@jirikuncar

@jirikuncarjirikuncar commented Nov 26, 2019

Copy link
Copy Markdown
Contributor

Avoid using mutable default arguments in Python.

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

--
cc @taxpon (2017/07) @frol (2017/07) @mbohlool (2017/07) @cbornet (2017/09) @kenjones-cisco (2017/11) @tomplus (2018/10) @Jyhess (2019/01) @slash-arun (2019/11) @spacether (2019/11)

@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 512c7c4 to 31c80b6CompareNovember 26, 2019 23:16
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from b0dec03 to 6b058b7CompareNovember 27, 2019 09:07
@jirikuncar

Copy link
Copy Markdown
ContributorAuthor

@spacether thank you for the review. I have cleaned up the configuration template even more based on your suggestions.

Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
Comment threadmodules/openapi-generator/src/main/resources/python/configuration.mustache Outdated
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 6b058b7 to 2808b6dCompareNovember 28, 2019 15:34
@jirikuncar
jirikuncarforce-pushed the python-mutable-default-argument branch from 2808b6d to da67f9fCompareNovember 29, 2019 09:02
According to @spacether it is better to document only property
getter with combined signature of both getter and setter
instead of individual getters and setters.
@spacether

spacether commented Nov 30, 2019

Copy link
Copy Markdown
Contributor

@jirikuncar it sounds like there may have been a misunderstanding here. My comments were asking that you preserve the docstring information from the setters as you were deleting the types shown there. I also give a reason why the docstring for both the getter and the setter exists in the getter. In my opinion having the docstring in the getter + setter is helpful for the following reasons. As a dev I want to be able to:

  • read a getter docstring to understand what I get
  • read a setter docstring to understand what I need to set
  • use the help(ClassName) in the python terminal to read getter docstring and read what we need to get/set. In my comments I didn't ask that you delete the setter docstrings.

If you want to delete the setter docstrings I am okay with that as long as the needed information still exists in the getter docstrings.


@property
def debug(self):
"""Debug status

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a type description to this docstring
We are losing the information when we delete it from the setter

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@spacether I don't get your comment.

@propertydefdebug(self):
"""The debug status. :param value: The debug status, True or False. :type: bool """

@spacetherspacetherDec 3, 2019

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, my mistake, I missed the remaining bool type here. This is good.

@spacether

Copy link
Copy Markdown
Contributor

@jirikuncar can you check out the Travis CI error here?
https://travis-ci.org/OpenAPITools/openapi-generator/builds/618563611?utm_source=github_status&utm_medium=notification
It looks like there are python errors in CI testing there.

@jirikuncar

Copy link
Copy Markdown
ContributorAuthor

I might revisit this one in the future by updating docstrings to follow PEP 257 (pydocstyle).

A minimal changed for mutable defaults has been moved to #4665.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@jirikuncar@spacether