Tank push_configuration command error

Hello Everyone,
Can anyone help figure out how I can fix this error with the tank push_configruation error ?

`Preformatted textPreformatted textPreformatted text````
File “C:\Users\sreyeeshgarimella\AppData\Roaming\Shotgun\kavaleer\p122c364.basic.desktop\cfg\install\core\python\tank\pipelineconfig.py”, line 108, in init
config_folder = os.path.join(self._pc_root, “config”)
File “C:\Program Files\Shotgun\Python3\lib\ntpath.py”, line 78, in join
path = os.fspath(path)
TypeError: expected str, bytes or os.PathLike object, not NoneType

Apparently it's erroring in the  pipelineconfig.py file  . I would like to use tank push_configruation  to push to shotgrid 

Encapsulates the pipeline configuration and helps navigate and resolve paths
across storages, configurations etc.

import glob

from tank_vendor import yaml
import tank_vendor.six.moves.cPickle as pickle

from .errors import TankError, TankUnreadableFileError
from .util.version import is_version_older
from . import constants
from .platform.environment import InstalledEnvironment, WritableEnvironment
from .util import shotgun, yaml_cache
from .util import ShotgunPath
from .util import StorageRoots
from .util.pickle import retrieve_env_var_pickled
from . import hook
from . import pipelineconfig_utils
from . import template_includes
from . import LogManager

from .descriptor import Descriptor, create_descriptor, descriptor_uri_to_dict
from tank_vendor import six

log = LogManager.get_logger(__name__)````

class PipelineConfiguration(object):
    Represents a pipeline configuration in Tank.

    Use the factory methods in pipelineconfig_factory
    to construct this object, do not create directly via the constructor.

    def __init__(self, pipeline_configuration_path, descriptor=None):
        Constructor. Do not call this directly, use the factory methods
        in pipelineconfig_factory.


        The pipeline_configuration_path is always populated by the paths
        that were registered in shotgun, regardless of how the symlink setup
        is handled on the OS level.

        :param str pipeline_configuration_path: Path to the pipeline configuration on disk.
        :param descriptor: Descriptor that was used to create this pipeline configuration.
            Defaults to ``None`` for backwards compatibility with Bootstrapper that only
            pass down one argument. Also this argument was passed down by cores from
            v0.18.72 to 0.18.94. The descriptor is now read from the disk inside
        :type descriptor: :class:`sgtk.descriptor.ConfigDescriptor`
        self._pc_root = pipeline_configuration_path

        # validate that the current code version matches or is compatible with
        # the code that is locally stored in this config!!!!
        our_associated_api_version = self.get_associated_core_version()

        # and get the version of the API currently in memory
        current_api_version = pipelineconfig_utils.get_currently_running_api_version()

        if our_associated_api_version not in [
        ] and is_version_older(current_api_version, our_associated_api_version):
            # currently running API is too old!
            current_api_path = os.path.abspath(
                os.path.join(os.path.dirname(__file__), "..")