--- pdal/pipeline.py.orig	2021-11-24 10:30:42 UTC
+++ pdal/pipeline.py
@@ -1,5 +1,5 @@
-from __future__ import annotations
 
+
 import json
 import logging
 from typing import Any, Container, Dict, Iterator, List, Optional, Sequence, Union, cast
@@ -19,7 +19,7 @@ LogLevelToPDAL = {
     logging.INFO: 2,
     logging.DEBUG: 8,  # pdal::LogLevel::Debug5
 }
-LogLevelFromPDAL = {v: k for k, v in LogLevelToPDAL.items()}
+LogLevelFromPDAL = {v: k for k, v in list(LogLevelToPDAL.items())}
 
 
 class Pipeline(libpdalpython.Pipeline):
@@ -106,7 +106,7 @@ class Pipeline(libpdalpython.Pipeline):
         if all(isinstance(stage, Reader) for stage in stages):
             stages = [*stages, Filter.merge()]
         for stage in stages:
-            stage2tag[stage] = stage.tag or _generate_tag(stage, stage2tag.values())
+            stage2tag[stage] = stage.tag or _generate_tag(stage, list(stage2tag.values()))
             options = stage.options
             options["tag"] = stage2tag[stage]
             inputs = _get_input_tags(stage, stage2tag)
