Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Submodule.__init__parent_commit conversion/validation is implied but not done #1869

Closed
@EliahKagan

Description

@EliahKagan

Theparent_commit parameter ofSubmodule.__init__ is documented this way:

:param parent_commit:
See :meth:`set_parent_commit`.

Submodule.__init__ binds this directly to the private_parent_commit attribute:

self._parent_commit=parent_commit

But this is at odds with the documented relationship toSubmodule.set_parent_commit. That method'scommit parameter corresponds to theparent_commit parameter ofSubmodule.__init__, in that itscommit parameter is used to identify the commit, if any, to set as_parent_commit. However,set_parent_commit performs both conversion and validation.

This is the relevant fragment ofset_parent_commit's docstring:

:param commit:
Commit-ish reference pointing at the root_tree, or ``None`` to always point
to the most recent commit.

Whencommit isNone, it setsNone to_parent_commit. Otherwise, however,commit may not already be aCommit object, and that is okay, because a commit is looked up from it:

pcommit=self.repo.commit(commit)

That's the conversion. Then validation is performed, with_parent_commit ending up set to the commit thatcommit identified only if there is such a suitable commit:

pctree=pcommit.tree
ifself.k_modules_filenotinpctree:
raiseValueError("Tree of commit %s did not contain the %s file"% (commit,self.k_modules_file))
# END handle exceptions
prev_pc=self._parent_commit
self._parent_commit=pcommit
ifcheck:
parser=self._config_parser(self.repo,self._parent_commit,read_only=True)
ifnotparser.has_section(sm_section(self.name)):
self._parent_commit=prev_pc
raiseValueError("Submodule at path %r did not exist in parent commit %s"% (self.path,commit))
# END handle submodule did not exist
# END handle checking mode

The type annotations do not reveal the intent, as they are among those usingCommit_ish that need to be updated with the fix forCommit_ish, and that I am fixing up in#1859. My immediate motivation for opening this issue is that I'm having trouble figuring out how to annotate them, because due to the inconsistency between the docstring and the implementations, I don't know what is intended to be accepted.

Either the documentation should be updated, which could be part of#1859, or the code should be fixed to perform any expected validation and conversion and a test case added to check that this is working, which would be best done separately from#1859 (lest its scope expand ever further). I am not sure which. For#1859, it is likely sufficient for me to know what isintended, so full progress on this is not needed to finish#1859. It is my hope and also strong guess that this issue is not a blocker for#1859.

This should not be confused with#1866, which is about theparent_commits parameter ofIndexFile.commit rather than theparent_commit parameter ofSubmodule.__init__ (and which, unlike this, really is about annotations).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp