@staticmethod
def is_segment_name(string) ->bool:
    """
        Is true when ``string`` is canonical segment name.

        ..  container:: example

            >>> abjad.Path.is_segment_name('_')
            True

            >>> abjad.Path.is_segment_name('_1')
            True

            >>> abjad.Path.is_segment_name('_2')
            True

            >>> abjad.Path.is_segment_name('_99')
            True

            >>> abjad.Path.is_segment_name('A')
            True

            >>> abjad.Path.is_segment_name('A1')
            True

            >>> abjad.Path.is_segment_name('A2')
            True

            >>> abjad.Path.is_segment_name('A99')
            True

            >>> abjad.Path.is_segment_name('B')
            True

            >>> abjad.Path.is_segment_name('B1')
            True

            >>> abjad.Path.is_segment_name('B2')
            True

            >>> abjad.Path.is_segment_name('B99')
            True

            >>> abjad.Path.is_segment_name('AA')
            True

            >>> abjad.Path.is_segment_name('AA1')
            True

            >>> abjad.Path.is_segment_name('AA2')
            True

            >>> abjad.Path.is_segment_name('AA99')
            True

            >>> abjad.Path.is_segment_name('AB')
            True

            >>> abjad.Path.is_segment_name('AB1')
            True

            >>> abjad.Path.is_segment_name('AB2')
            True

            >>> abjad.Path.is_segment_name('AB99')
            True

            >>> abjad.Path.is_segment_name('__')
            False

            >>> abjad.Path.is_segment_name('1')
            False

            >>> abjad.Path.is_segment_name('a')
            False

            >>> abjad.Path.is_segment_name('b')
            False

            >>> abjad.Path.is_segment_name('aa')
            False

            >>> abjad.Path.is_segment_name('ab')
            False

            >>> abjad.Path.is_segment_name('AAA')
            False

        """
    if not isinstance(string, str):
        return False
    if not bool(string):
        return False
    if not (string[0].isupper() or string[0] == '_'):
        return False
    if len(string) == 1:
        return True
    if not (string[1].isupper() or string[1].isdigit()):
        return False
    if len(string) == 2:
        return True
    return string[2:].isnumeric()
