@classmethod
def from_path(cls, path, parent=None, meta=None):
    """
        Given a :class:`pathlib.Path`, create a Node from that path as well as
        any children. Children are loaded in Unicode codepoint order - this
        order is preserved in ``Node.children`` if you're unsure what that
        means.

        If the path is not a file or a dir, an :class:`AssertionError` is
        raised

        :param path:
            A :class:`pathlib.Path` that is either the ``content_path`` or a
            child of it.
        :param parent:
            Either another :class:`Node` or ``None``
        :param meta:
            A dict-like object that will be passed to a :class:`Config`
            instance
        """
    assert path.is_file() or path.is_dir()
    node = cls(path, parent=parent, meta=meta)
    if path.is_dir():
        children = []
        dir_files = sorted(path.iterdir(), key=lambda p: p.name)
        for child in dir_files:
            if child.name in cls._meta_names and child.is_file():
                with child.open() as co:
                    node.meta.load(co)
            else:
                children.append(child)
        for child in children:
            ignored = False
            globs = node.meta.get('ignore', [])
            if not isinstance(globs, (list, tuple)):
                globs = [globs]
            for glob in globs:
                if child in path.glob(glob):
                    ignored = True
                    break
            if not ignored:
                cls.from_path(child, node)
    return node
