Exemple #1
0
    def testMixedStrTypes(self):
        temp_dir = compat.as_bytes(test.get_temp_dir())

        for sub_dir in ["str", b"bytes", u"unicode"]:
            base_dir = os.path.join((temp_dir if isinstance(sub_dir, bytes)
                                     else temp_dir.decode()), sub_dir)
            self.assertFalse(gfile.Exists(base_dir))
            gfile.MakeDirs(os.path.join(compat.as_str_any(base_dir), "42"))
            gc._get_paths(base_dir, _create_parser(base_dir))
Exemple #2
0
  def testMixedStrTypes(self):
    temp_dir = compat.as_bytes(test.get_temp_dir())

    for sub_dir in ["str", b"bytes", u"unicode"]:
      base_dir = os.path.join(
          (temp_dir if isinstance(sub_dir, bytes) else temp_dir.decode()),
          sub_dir)
      self.assertFalse(gfile.Exists(base_dir))
      gfile.MakeDirs(os.path.join(compat.as_str_any(base_dir), "42"))
      gc._get_paths(base_dir, _create_parser(base_dir))
Exemple #3
0
  def _garbage_collect_exports(self, export_dir_base: Text):
    """Deletes older exports, retaining only a given number of the most recent.

    Export subdirectories are assumed to be named with monotonically increasing
    integers; the most recent are taken to be those with the largest values.

    Args:
      export_dir_base: the base directory under which each export is in a
        versioned subdirectory.
    """
    if self._exports_to_keep is None:
      return

    def _export_version_parser(path):
      # create a simple parser that pulls the export_version from the directory.
      filename = os.path.basename(path.path)
      if not (len(filename) == 10 and filename.isdigit()):
        return None
      return path._replace(export_version=int(filename))

    # pylint: disable=protected-access
    keep_filter = gc._largest_export_versions(self._exports_to_keep)
    delete_filter = gc._negation(keep_filter)
    for p in delete_filter(
        gc._get_paths(export_dir_base, parser=_export_version_parser)):
      try:
        gfile.DeleteRecursively(p.path)
      except errors_impl.NotFoundError as e:
        tf_logging.warn('Can not delete %s recursively: %s', p.path, e)
Exemple #4
0
  def _garbage_collect_exports(self, export_dir_base):
    """Deletes older exports, retaining only a given number of the most recent.

    Export subdirectories are assumed to be named with monotonically increasing
    integers; the most recent are taken to be those with the largest values.

    Args:
      export_dir_base: the base directory under which each export is in a
        versioned subdirectory.
    """
    if self._exports_to_keep is None:
      return

    def _export_version_parser(path):
      # create a simple parser that pulls the export_version from the directory.
      filename = os.path.basename(path.path)
      if not (len(filename) == 10 and filename.isdigit()):
        return None
      return path._replace(export_version=int(filename))

    # pylint: disable=protected-access
    keep_filter = gc._largest_export_versions(self._exports_to_keep)
    delete_filter = gc._negation(keep_filter)
    for p in delete_filter(
        gc._get_paths(export_dir_base, parser=_export_version_parser)):
      try:
        gfile.DeleteRecursively(p.path)
      except errors_impl.NotFoundError as e:
        tf_logging.warn('Can not delete %s recursively: %s', p.path, e)
Exemple #5
0
 def testGcsDirWithSeparator(self):
   base_dir = "gs://bucket/foo"
   with test.mock.patch.object(gfile, "ListDirectory") as mock_list_directory:
     # gfile.ListDirectory returns directory names with separator '/'
     mock_list_directory.return_value = ["0/", "1/"]
     self.assertEqual(
         gc._get_paths(base_dir, _create_parser(base_dir)),
         [
             gc.Path(os.path.join(base_dir, "0"), 0),
             gc.Path(os.path.join(base_dir, "1"), 1)
         ])
Exemple #6
0
 def testGcsDirWithSeparator(self):
     base_dir = "gs://bucket/foo"
     with test.mock.patch.object(gfile,
                                 "ListDirectory") as mock_list_directory:
         # gfile.ListDirectory returns directory names with separator '/'
         mock_list_directory.return_value = ["0/", "1/"]
         self.assertEqual(gc._get_paths(base_dir, _create_parser(base_dir)),
                          [
                              gc.Path(os.path.join(base_dir, "0"), 0),
                              gc.Path(os.path.join(base_dir, "1"), 1)
                          ])
Exemple #7
0
    def testPathsWithParse(self):
        base_dir = os.path.join(test.get_temp_dir(), "paths_parse")
        self.assertFalse(gfile.Exists(base_dir))
        for p in xrange(3):
            gfile.MakeDirs(os.path.join(base_dir, "%d" % p))
        # add a base_directory to ignore
        gfile.MakeDirs(os.path.join(base_dir, "ignore"))

        self.assertEqual(gc._get_paths(base_dir, _create_parser(base_dir)), [
            gc.Path(os.path.join(base_dir, "0"), 0),
            gc.Path(os.path.join(base_dir, "1"), 1),
            gc.Path(os.path.join(base_dir, "2"), 2)
        ])
Exemple #8
0
  def testPathsWithParse(self):
    base_dir = os.path.join(test.get_temp_dir(), "paths_parse")
    self.assertFalse(gfile.Exists(base_dir))
    for p in xrange(3):
      gfile.MakeDirs(os.path.join(base_dir, "%d" % p))
    # add a base_directory to ignore
    gfile.MakeDirs(os.path.join(base_dir, "ignore"))

    self.assertEqual(
        gc._get_paths(base_dir, _create_parser(base_dir)),
        [
            gc.Path(os.path.join(base_dir, "0"), 0),
            gc.Path(os.path.join(base_dir, "1"), 1),
            gc.Path(os.path.join(base_dir, "2"), 2)
        ])