<commit_before># Copyright 2018 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""Skylib module containing functions for checking Bazel versions."""

def _get_bazel_version():
  """Returns the current Bazel version"""

  return native.bazel_version


def _extract_version_number(bazel_version):
  """Extracts the semantic version number from a version string

  Args:
    bazel_version: the version string that begins with the semantic version
      e.g. "1.2.3rc1 abc1234" where "abc1234" is a commit hash.

  Returns:
    The semantic version string, like "1.2.3".
  """
  for i in range(len(bazel_version)):
    c = bazel_version[i]
    if not (c.isdigit() or c == "."):
      return bazel_version[:i]
  return bazel_version

# Parse the bazel version string from `native.bazel_version`.
# e.g.
# "0.10.0rc1 abc123d" => (0, 10, 0)
# "0.3.0" => (0, 3, 0)
def _parse_bazel_version(bazel_version):
  """Parses a version string into a 3-tuple of ints

  int tuples can be compared directly using binary operators (<, >).

  Args:
    bazel_version: the Bazel version string

  Returns:
    An int 3-tuple of a (major, minor, patch) version.
  """

  version = _extract_version_number(bazel_version)
  return tuple([int(n) for n in version.split(".")])


def _is_at_most(threshold, version):
  """Check that a version is lower or equals to a threshold.

  Args:
    threshold: the maximum version string
    version: the version string to be compared to the threshold

  Returns:
    True if version <= threshold.
  """
  return _parse_bazel_version(version) <= _parse_bazel_version(threshold)


def _is_at_least(threshold, version):
  """Check that a version is higher or equals to a threshold.

  Args:
    threshold: the minimum version string
    version: the version string to be compared to the threshold

  Returns:
    True if version >= threshold.
  """

  return _parse_bazel_version(version) >= _parse_bazel_version(threshold)


def _check_bazel_version(minimum_bazel_version, maximum_bazel_version=None, bazel_version=None):
  """Check that the version of Bazel is valid within the specified range.

  Args:
    minimum_bazel_version: minimum version of Bazel expected
    maximum_bazel_version: maximum version of Bazel expected
    bazel_version: the version of Bazel to check. Used for testing, defaults to native.bazel_version
  """
  if not bazel_version:
    if "bazel_version" not in dir(native):
      fail("\nCurrent Bazel version is lower than 0.2.1, expected at least %s\n" % minimum_bazel_version)
    elif not native.bazel_version:
      print("\nCurrent Bazel is not a release version, cannot check for compatibility.")
      print("Make sure that you are running at least Bazel %s.\n" % minimum_bazel_version)
      return
    else:
      bazel_version = native.bazel_version

  if not _is_at_least(
      threshold = minimum_bazel_version,
      version = bazel_version):
    fail("\nCurrent Bazel version is {}, expected at least {}\n".format(
        bazel_version, minimum_bazel_version))

  if maximum_bazel_version:
    if not _is_at_most(
        threshold = maximum_bazel_version,
        version = bazel_version):
      fail("\nCurrent Bazel version is {}, expected at most {}\n".format(
          bazel_version, maximum_bazel_version))

  pass

versions = struct(
    get=_get_bazel_version,<commit_msg>Remove noisy debug log for missing version (#1703)<commit_after># Copyright 2018 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""Skylib module containing functions for checking Bazel versions."""

def _get_bazel_version():
  """Returns the current Bazel version"""

  return native.bazel_version


def _extract_version_number(bazel_version):
  """Extracts the semantic version number from a version string

  Args:
    bazel_version: the version string that begins with the semantic version
      e.g. "1.2.3rc1 abc1234" where "abc1234" is a commit hash.

  Returns:
    The semantic version string, like "1.2.3".
  """
  for i in range(len(bazel_version)):
    c = bazel_version[i]
    if not (c.isdigit() or c == "."):
      return bazel_version[:i]
  return bazel_version

# Parse the bazel version string from `native.bazel_version`.
# e.g.
# "0.10.0rc1 abc123d" => (0, 10, 0)
# "0.3.0" => (0, 3, 0)
def _parse_bazel_version(bazel_version):
  """Parses a version string into a 3-tuple of ints

  int tuples can be compared directly using binary operators (<, >).

  Args:
    bazel_version: the Bazel version string

  Returns:
    An int 3-tuple of a (major, minor, patch) version.
  """

  version = _extract_version_number(bazel_version)
  return tuple([int(n) for n in version.split(".")])


def _is_at_most(threshold, version):
  """Check that a version is lower or equals to a threshold.

  Args:
    threshold: the maximum version string
    version: the version string to be compared to the threshold

  Returns:
    True if version <= threshold.
  """
  return _parse_bazel_version(version) <= _parse_bazel_version(threshold)


def _is_at_least(threshold, version):
  """Check that a version is higher or equals to a threshold.

  Args:
    threshold: the minimum version string
    version: the version string to be compared to the threshold

  Returns:
    True if version >= threshold.
  """

  return _parse_bazel_version(version) >= _parse_bazel_version(threshold)


def _check_bazel_version(minimum_bazel_version, maximum_bazel_version=None, bazel_version=None):
  """Check that the version of Bazel is valid within the specified range.

  Args:
    minimum_bazel_version: minimum version of Bazel expected
    maximum_bazel_version: maximum version of Bazel expected
    bazel_version: the version of Bazel to check. Used for testing, defaults to native.bazel_version
  """
  if not bazel_version:
    if "bazel_version" not in dir(native):
      fail("\nCurrent Bazel version is lower than 0.2.1, expected at least %s\n" % minimum_bazel_version)
    else:
      bazel_version = native.bazel_version

  if not _is_at_least(
      threshold = minimum_bazel_version,
      version = bazel_version):
    fail("\nCurrent Bazel version is {}, expected at least {}\n".format(
        bazel_version, minimum_bazel_version))

  if maximum_bazel_version:
    if not _is_at_most(
        threshold = maximum_bazel_version,
        version = bazel_version):
      fail("\nCurrent Bazel version is {}, expected at most {}\n".format(
          bazel_version, maximum_bazel_version))

  pass

versions = struct(
    get=_get_bazel_version,
{'fraction_non_alphanumeric': 0.085680285600952, 'fraction_numerical': 0.012693375644585482, 'mean_word_length': 3.848717948717949, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4991963', 'n_tokens_mistral': 2427, 'n_tokens_neox': 2261, 'n_words': 831}