@@ -142,7 +142,7 @@ def copy(self, source, target):
142142 if self .preserve_metadata :
143143 metadata_keys = source ._readable_metadata & target ._writable_metadata
144144 else :
145- metadata_keys = frozenset ()
145+ metadata_keys = None
146146 if not self .follow_symlinks and source .is_symlink ():
147147 self .copy_symlink (source , target , metadata_keys )
148148 elif source .is_dir ():
@@ -152,7 +152,10 @@ def copy(self, source, target):
152152
153153 def copy_dir (self , source , target , metadata_keys , dir_entry = None ):
154154 """Copy the given directory to the given target."""
155- metadata = source ._read_metadata (metadata_keys , dir_entry = dir_entry )
155+ if metadata_keys :
156+ metadata = source ._read_metadata (metadata_keys , dir_entry = dir_entry )
157+ else :
158+ metadata = None
156159 with source .scandir () as entries :
157160 target .mkdir (exist_ok = self .dirs_exist_ok )
158161 for entry in entries :
@@ -164,12 +167,16 @@ def copy_dir(self, source, target, metadata_keys, dir_entry=None):
164167 self .copy_dir (src , dst , metadata_keys , entry )
165168 else :
166169 self .copy_file (src , dst , metadata_keys , entry )
167- target ._write_metadata (metadata )
170+ if metadata :
171+ target ._write_metadata (metadata )
168172
169173 def copy_file (self , source , target , metadata_keys , dir_entry = None ):
170174 """Copy the given file to the given target."""
171175 self .ensure_different_files (source , target )
172- metadata = source ._read_metadata (metadata_keys , dir_entry = dir_entry )
176+ if metadata_keys :
177+ metadata = source ._read_metadata (metadata_keys , dir_entry = dir_entry )
178+ else :
179+ metadata = None
173180 with source .open ('rb' ) as source_f :
174181 try :
175182 with target .open ('wb' ) as target_f :
@@ -181,14 +188,19 @@ def copy_file(self, source, target, metadata_keys, dir_entry=None):
181188 f'Directory does not exist: { target } ' ) from e
182189 else :
183190 raise
184- target ._write_metadata (metadata )
191+ if metadata :
192+ target ._write_metadata (metadata )
185193
186194 def copy_symlink (self , source , target , metadata_keys , dir_entry = None ):
187195 """Copy the given symlink to the given target."""
188- metadata = source ._read_metadata (
189- metadata_keys , follow_symlinks = False , dir_entry = dir_entry )
196+ if metadata_keys :
197+ metadata = source ._read_metadata (
198+ metadata_keys , follow_symlinks = False , dir_entry = dir_entry )
199+ else :
200+ metadata = None
190201 target .symlink_to (source .readlink ())
191- target ._write_metadata (metadata , follow_symlinks = False )
202+ if metadata :
203+ target ._write_metadata (metadata , follow_symlinks = False )
192204
193205
194206class PathGlobber (_GlobberBase ):
@@ -893,16 +905,12 @@ def _read_metadata(self, metadata_keys, *, follow_symlinks=True, dir_entry=None)
893905 """
894906 Returns path metadata as a dict with string keys.
895907 """
896- if not metadata_keys :
897- return {}
898908 raise UnsupportedOperation (self ._unsupported_msg ('_read_metadata()' ))
899909
900910 def _write_metadata (self , metadata , * , follow_symlinks = True ):
901911 """
902912 Sets path metadata from the given dict with string keys.
903913 """
904- if not metadata :
905- return
906914 raise UnsupportedOperation (self ._unsupported_msg ('_write_metadata()' ))
907915
908916 def copy (self , target , * , follow_symlinks = True , dirs_exist_ok = False ,
0 commit comments