code: def pytest_collection(session: "Session") -> Optional[object]:
      """Perform the collection phase for the given session.
  
      Stops at first non-None result, see :ref:`firstresult`.
      The return value is not used, but only stops further processing.
  
      The default collection phase is this (see individual hooks for full details):
  
      1. Starting from ``session`` as the initial collector:
  
        1. ``pytest_collectstart(collector)``
        2. ``report = pytest_make_collect_report(collector)``
        3. ``pytest_exception_interact(collector, call, report)`` if an interactive exception occurred
        4. For each collected node:
  
          1. If an item, ``pytest_itemcollected(item)``
          2. If a collector, recurse into it.
  
        5. ``pytest_collectreport(report)``
  
      2. ``pytest_collection_modifyitems(session, config, items)``
  
        1. ``pytest_deselected(items)`` for any deselected items (may be called multiple times)
  
      3. ``pytest_collection_finish(session)``
      4. Set ``session.items`` to the list of collected items
      5. Set ``session.testscollected`` to the number of collected items
  
      You can implement this hook to only perform some action before collection,
      for example the terminal plugin uses it to start displaying the collection
      counter (and returns `None`).
  
      :param session: The pytest session object.
      """
  
imports: from pathlib import Path
  from typing import Any
  from typing import Dict
  from typing import List
  from typing import Mapping
  from typing import Optional
  from typing import Sequence
  from typing import Tuple
  from typing import TYPE_CHECKING
  from typing import Union
  from pluggy import HookspecMarker
label_desc: Use image node_id 8 for calling a global function with example usage: pytest_collection(session) without return types