class_docstr: A class for storing information and managing Neptune project.
  
  Args:
      backend (:class:`~neptune.ApiClient`, required): A ApiClient object.
      internal_id (:obj:`str`, required): ID of the project.
      namespace (:obj:`str`, required): It can either be your workspace or user name.
      name (:obj:`str`, required): project name.
  
  Note:
      ``namespace`` and ``name`` joined together with ``/`` form ``project_qualified_name``.
code: def __init__(self, backend, internal_id, namespace, name):
      self._backend = backend
      self.internal_id = internal_id
      self.namespace = namespace
      self.name = name
  
      self._experiments_stack = []
      self.__lock = threading.RLock()
      atexit.register(self._shutdown_hook)
  
imports: import atexit
  import logging
  import os
  import os.path
  import threading
  from platform import node
  import click
  import pandas
  import six
  from neptune.common.utils import as_list, discover_git_repo_location, get_git_info, map_keys
  from neptune.legacy.envs import NOTEBOOK_ID_ENV_NAME, NOTEBOOK_PATH_ENV_NAME
  from neptune.legacy.exceptions import NeptuneNoExperimentContextException
  from neptune.legacy.experiments import Experiment
  from neptune.legacy.internal.abort import DefaultAbortImpl
  from neptune.legacy.internal.notebooks.notebooks import create_checkpoint
  from neptune.legacy.internal.utils.deprecation import legacy_client_deprecation
  from neptune.legacy.internal.utils.source_code import get_source_code_to_upload
label_desc: Use image node_id 1 to create a new Project object from inherited base classes: object with example: obj = Project(backend, internal_id, namespace, name)