"""Import and register all account types."""

from abc import ABC, abstractmethod


class Account(ABC):

    @abstractmethod
    def __init__(self, *breadcrumbs):
        """
        Return an Account object corresponding to the breadcrumbs.

        This should only be called if "match" returned truthy about matching the
        breadcrumbs.  Otherwise, you're just mean.
        """
        pass

    @staticmethod
    @abstractmethod
    def match(*breadcrumbs):
        """
        Return truthy if the breadcrumbs match the account.

        The breadcrumbs are described below, but match functions should be
        written to gracefully accept more or less keys in the breadcrumbs.

        :param dict breadcrumbs: Dictionary containing at least one of the
          following breadcrumbs:
          - url: A URL that probably points to their profile.
          - email: An email that could be used to find the profile.
          - username: A username for the account.
        """
        pass

    @abstractmethod
    def expand(self, info):
        """
        Return an iterable of breadcrumb structs!

        :param info: A dictionary that should contain information about the
          person.  It should be updated with any information you come across,
          and you may want to use any info in it to help narrow down your
          search.
        """
        pass

"""Import and register all account types."""

from abc import ABC, abstractmethod

__all__ = ['github']


class Account(ABC):

    @abstractmethod
    def __init__(self, *breadcrumbs):
        """
        Return an Account object corresponding to the breadcrumbs.

        This should only be called if "match" returned truthy about matching the
        breadcrumbs.  Otherwise, you're just mean.
        """
        pass

    @staticmethod
    @abstractmethod
    def match(*breadcrumbs):
        """
        Return truthy if the breadcrumbs match the account.

        The breadcrumbs are described below, but match functions should be
        written to gracefully accept more or less keys in the breadcrumbs.

        :param dict breadcrumbs: Dictionary containing at least one of the
          following breadcrumbs:
          - url: A URL that probably points to their profile.
          - email: An email that could be used to find the profile.
          - username: A username for the account.
        """
        pass

    @abstractmethod
    def expand(self, info):
        """
        Return an iterable of breadcrumb structs!

        :param info: A dictionary that should contain information about the
          person.  It should be updated with any information you come across,
          and you may want to use any info in it to help narrow down your
          search.
        """
        pass

Add github to the accounts package.
Add github to the accounts package.

  """Import and register all account types."""
  
  from abc import ABC, abstractmethod
+ 
+ __all__ = ['github']
  
  
  class Account(ABC):
  
      @abstractmethod
      def __init__(self, *breadcrumbs):
          """
          Return an Account object corresponding to the breadcrumbs.
  
          This should only be called if "match" returned truthy about matching the
          breadcrumbs.  Otherwise, you're just mean.
          """
          pass
  
      @staticmethod
      @abstractmethod
      def match(*breadcrumbs):
          """
          Return truthy if the breadcrumbs match the account.
  
          The breadcrumbs are described below, but match functions should be
          written to gracefully accept more or less keys in the breadcrumbs.
  
          :param dict breadcrumbs: Dictionary containing at least one of the
            following breadcrumbs:
            - url: A URL that probably points to their profile.
            - email: An email that could be used to find the profile.
            - username: A username for the account.
          """
          pass
  
      @abstractmethod
      def expand(self, info):
          """
          Return an iterable of breadcrumb structs!
  
          :param info: A dictionary that should contain information about the
            person.  It should be updated with any information you come across,
            and you may want to use any info in it to help narrow down your
            search.
          """
          pass
  
Add github to the accounts package.
## Code Before:
"""Import and register all account types."""

from abc import ABC, abstractmethod


class Account(ABC):

    @abstractmethod
    def __init__(self, *breadcrumbs):
        """
        Return an Account object corresponding to the breadcrumbs.

        This should only be called if "match" returned truthy about matching the
        breadcrumbs.  Otherwise, you're just mean.
        """
        pass

    @staticmethod
    @abstractmethod
    def match(*breadcrumbs):
        """
        Return truthy if the breadcrumbs match the account.

        The breadcrumbs are described below, but match functions should be
        written to gracefully accept more or less keys in the breadcrumbs.

        :param dict breadcrumbs: Dictionary containing at least one of the
          following breadcrumbs:
          - url: A URL that probably points to their profile.
          - email: An email that could be used to find the profile.
          - username: A username for the account.
        """
        pass

    @abstractmethod
    def expand(self, info):
        """
        Return an iterable of breadcrumb structs!

        :param info: A dictionary that should contain information about the
          person.  It should be updated with any information you come across,
          and you may want to use any info in it to help narrow down your
          search.
        """
        pass

## Instruction:
Add github to the accounts package.
## Code After:
"""Import and register all account types."""

from abc import ABC, abstractmethod

__all__ = ['github']


class Account(ABC):

    @abstractmethod
    def __init__(self, *breadcrumbs):
        """
        Return an Account object corresponding to the breadcrumbs.

        This should only be called if "match" returned truthy about matching the
        breadcrumbs.  Otherwise, you're just mean.
        """
        pass

    @staticmethod
    @abstractmethod
    def match(*breadcrumbs):
        """
        Return truthy if the breadcrumbs match the account.

        The breadcrumbs are described below, but match functions should be
        written to gracefully accept more or less keys in the breadcrumbs.

        :param dict breadcrumbs: Dictionary containing at least one of the
          following breadcrumbs:
          - url: A URL that probably points to their profile.
          - email: An email that could be used to find the profile.
          - username: A username for the account.
        """
        pass

    @abstractmethod
    def expand(self, info):
        """
        Return an iterable of breadcrumb structs!

        :param info: A dictionary that should contain information about the
          person.  It should be updated with any information you come across,
          and you may want to use any info in it to help narrow down your
          search.
        """
        pass
