class_docstr: Small class to handle module creation and check project structure
      
class_docstr_tok: ["Small","class","to","handle","module","creation","and","check","project","structure"]
code: def __init__(self, module_path, extension_name):
      module_path = os.path.normpath(module_path)
  
      # Module C++ source directory (e.g. lib/cpp/tick/base)
      self.src = os.path.join(module_path, "src")
  
      # Module SWIG interface files directory (e.g. tick/array/swig)
      self.swig = "lib/swig/" + module_path[5:]
  
      # Module build directory. Will contain generated .py files, and .so
      # files if built with flag --inplace.
      #
      # E.g. tick/array/build
      self.build = os.path.join(module_path, "build")
  
      self.extension_name = extension_name
      self.private_extension_name = "_" + extension_name
  
      # Transform folder path to module path
      self.extension_path = (
          self.build.replace(".", "").replace("/", ".")
          + "."
          + self.private_extension_name
      )
  
      # Filename of the produced .so file (e.g. _array.so)
      self.lib_filename = "{}{}".format(
          self.private_extension_name,
          sysconfig.get_config_var("EXT_SUFFIX"),
      )
  
imports: import multiprocessing
  import os
  import pathlib
  import platform
  import re
  import shutil
  import subprocess
  import sys
  import sysconfig
  import time
  import unittest
  import warnings
  from abc import ABC
  from setuptools import find_packages, setup, Command
  from setuptools.command.install import install
  from setuptools.extension import Extension
  import distutils
  from distutils.command.build import build
  from distutils.command.clean import clean
  from distutils import sysconfig
  from packaging import version
label_desc: Use image node_id 1 to create a new SwigPath object  with example: obj = SwigPath(module_path, extension_name)