"""Node2Vec class to initiate, train, and use a node2vec model
described in https://arxiv.org/pdf/1607.00653.pdf
based on networkx and gensim

Date: 07/Mar/2021
Author: <NAME>
"""
from typing import Union, List, Tuple
from multiprocessing import Pool

import networkx as nx
from gensim.models import Word2Vec

from .deepwalk import DeepWalk
from ..toolbox import random_walk

__author__ = ['<NAME>']
__copyright__ = 'Li Tang'
__credits__ = ['<NAME>']
__license__ = 'MIT'
__version__ = '0.1.11'
__maintainer__ = ['<NAME>']
__email__ = '<EMAIL>'
__status__ = 'Production'


class SuiNode2VecError(Exception):
    pass


class Node2Vec(DeepWalk):
    """Initiate, train and use a node2vec model described in https://arxiv.org/pdf/1607.00653.pdf;
    this class is implemented based on gensim and networkx.
    """

    def __init__(self, G=nx.Graph(), model=None, walk_path: list = []):
        super().__init__(G=G, model=model, walk_path=walk_path)

    def concurrent_walk(self, walk_depth: int, walking_workers: int = 4, nodes_list: List[list] = None) -> List[list]:
        pass

"""Node2Vec class to initiate, train, and use a node2vec model
described in https://arxiv.org/pdf/1607.00653.pdf
based on networkx and gensim

Date: 07/Mar/2021
Author: <NAME>
"""
from typing import Union, List, Tuple
from multiprocessing import Pool

import networkx as nx
from gensim.models import Word2Vec

from .deepwalk import DeepWalk
from ..toolbox import random_walk

__author__ = ['<NAME>']
__copyright__ = 'Li Tang'
__credits__ = ['<NAME>']
__license__ = 'MIT'
__version__ = '0.1.11'
__maintainer__ = ['<NAME>']
__email__ = '<EMAIL>'
__status__ = 'Production'


class SuiNode2VecError(Exception):
    pass


class Node2Vec(DeepWalk):
    """Initiate, train and use a node2vec model described in https://arxiv.org/pdf/1607.00653.pdf;
    this class is implemented based on gensim and networkx.
    """

    def __init__(self, G=nx.Graph(), model=None, walk_path: list = []):
        super().__init__(G=G, model=model, walk_path=walk_path)

    def concurrent_walk(self, walk_depth: int, walking_workers: int = 4, nodes_list: List[list] = None) -> List[list]:
        pass

Node2Vec class to initiate, train, and use a node2vec model described in https://arxiv.org/pdf/1607.00653.pdf based on networkx and gensim  Date: 07/Mar/2021 Author: <NAME> Initiate, train and use a node2vec model described in https://arxiv.org/pdf/1607.00653.pdf;     this class is implemented based on gensim and networkx.