diff --git a/docs/next/src/pages/community/contributing.mdx b/docs/next/src/pages/community/contributing.mdx --- a/docs/next/src/pages/community/contributing.mdx +++ b/docs/next/src/pages/community/contributing.mdx @@ -14,8 +14,7 @@ 1. Install Python. Python 3.6 or above recommended, but our CI/CD pipeline currently tests against up-to-date patch versions of Python - 2.7, 3.5, 3.6, and 3.7. Note that Dagster is a 2/3 compatible - project: tests must pass against Python 2.7. + 3.6, 3.7 and 3.8. 2. Create and activate a virtualenv, using the tool of your choice. On macOS you can install `pyenv` with Homebrew: diff --git a/docs/sections/api/apidocs/libraries/dagster_dask.rst b/docs/sections/api/apidocs/libraries/dagster_dask.rst --- a/docs/sections/api/apidocs/libraries/dagster_dask.rst +++ b/docs/sections/api/apidocs/libraries/dagster_dask.rst @@ -2,10 +2,6 @@ ------------------- See also the `Dask deployment guide `_. -Python version support -^^^^^^^^^^^^^^^^^^^^^^ -Because Dask has dropped support for Python versions < 3.6, we do not test dagster-dask on -Python 2.7 or 3.5. .. currentmodule:: dagster_dask diff --git a/docs/sections/api/apidocs/types.rst b/docs/sections/api/apidocs/types.rst --- a/docs/sections/api/apidocs/types.rst +++ b/docs/sections/api/apidocs/types.rst @@ -29,12 +29,12 @@ def identity_imp(_, x): return x - # Explicitly typed on Python 2 + # Explicitly typed @solid( input_defs=[InputDefinition('x', dagster_type=Any)], output_defs=[OutputDefinition(dagster_type=Any)] ) - def identity_py2(_, x): + def identity(_, x): return x @solid(config_schema=Field(Any)) @@ -60,19 +60,19 @@ def empty_string(_, x: String) -> bool: return len(x) == 0 - # Python 2 + # Explicit @solid( input_defs=[InputDefinition('x', dagster_type=Bool)], output_defs=[OutputDefinition(dagster_type=String)] ) - def boolean_py2(_, x): + def boolean(_, x): return 'true' if x else 'false' @solid( input_defs=[InputDefinition('x', dagster_type=String)], output_defs=[OutputDefinition(dagster_type=bool)] ) - def empty_string_py2(_, x): + def empty_string(_, x): return len(x) == 0 @solid(config_schema=Field(Bool)) @@ -83,8 +83,7 @@ .. attribute:: Int Use this type for any integer input or output. At runtime, this will perform an - ``isinstance(value, six.integer_types)`` check -- that is, on Python 2, both ``long`` and - ``int`` will pass this check. In Python 3, you may also use the ordinary :py:class:`~python:int` + ``isinstance(value, int)`` check. You may also use the ordinary :py:class:`~python:int` type as an alias. **Examples:** @@ -95,12 +94,12 @@ def add_3(_, x: Int) -> int: return x + 3 - # Python 2 + # Explicit @solid( input_defs=[InputDefinition('x', dagster_type=Int)], - output_defs=[OutputDefinition(dagster_type=int)] + output_defs=[OutputDefinition(dagster_type=Int)] ) - def add_3_py2(_, x): + def add_3(_, x): return x + 3 @@ -118,11 +117,12 @@ def div_2(_, x: Float) -> float: return x / 2 + # Explicit @solid( input_defs=[InputDefinition('x', dagster_type=Float)], output_defs=[OutputDefinition(dagster_type=float)] ) - def div_2_py_2(_, x): + def div_2(_, x): return x / 2 @solid(config_schema=Field(Float)) @@ -133,8 +133,7 @@ .. attribute:: String Use this type for any string input, output, or config value. At runtime, this will perform an - ``isinstance(value, six.string_types)`` -- that is on Python 2, both ``unicode`` and ``str`` - will pass this check. In Python 3, you may also use the ordinary :py:class:`~python:str` type + ``isinstance(value, str)`` check. You may also use the ordinary :py:class:`~python:str` type as an alias. **Examples:** @@ -145,6 +144,7 @@ def concat(_, x: String, y: str) -> str: return x + y + # Explicit @solid( input_defs=[ InputDefinition('x', dagster_type=String), @@ -152,7 +152,7 @@ ], output_defs=[OutputDefinition(dagster_type=str)] ) - def concat_py_2(_, x, y): + def concat(_, x, y): return x + y @solid(config_schema=Field(String)) @@ -211,7 +211,7 @@ def nullable_concat(_, x: String, y: Optional[String]) -> String: return x + (y or '') - # Python 2 + # Explicit @solid( input_defs=[ InputDefinition('x', dagster_type=String), @@ -219,7 +219,7 @@ ], output_defs=[OutputDefinition(dagster_type=String)] ) - def nullable_concat_py2(_, x, y): + def nullable_concat(_, x, y): return x + (y or '') .. attribute:: List @@ -237,12 +237,12 @@ def concat_list(_, xs: List[String]) -> String: return ''.join(xs) - # Python 2 + # Explicit @solid( input_defs=[InputDefinition('xs', dagster_type=List[String])], output_defs=[OutputDefinition(dagster_type=String)] ) - def concat_list_py2(_, xs) -> String: + def concat_list(_, xs) -> String: return ''.join(xs) # Fanning in multiple outputs @@ -282,12 +282,12 @@ def repeat(_, spec: Dict) -> str: return spec['word'] * spec['times'] - # Python 2 + # Explicit @solid( input_defs=[InputDefinition('spec', dagster_type=Dict)], output_defs=[OutputDefinition(String)] ) - def repeat_py2(_, spec): + def repeat(_, spec): return spec['word'] * spec['times'] @@ -306,12 +306,12 @@ def set_solid(_, set_input: Set[String]) -> List[String]: return sorted([x for x in set_input]) - # Python 2 + # Explicit @solid( input_defs=[InputDefinition('set_input', dagster_type=Set[String])], output_defs=[OutputDefinition(List[String])], ) - def set_solid_py2(_, set_input): + def set_solid(_, set_input): return sorted([x for x in set_input]) .. attribute:: Tuple @@ -331,12 +331,12 @@ def tuple_solid(_, tuple_input: Tuple[String, Int, Float]) -> List: return [x for x in tuple_input] - # Python 2 + # Explicit @solid( input_defs=[InputDefinition('tuple_input', dagster_type=Tuple[String, Int, Float])], output_defs=[OutputDefinition(List)], ) - def tuple_solid_py2(_, tuple_input): + def tuple_solid(_, tuple_input): return [x for x in tuple_input] diff --git a/examples/docs_snippets/docs_snippets/legacy/how_tos/conditional_execution.py b/examples/docs_snippets/docs_snippets/legacy/how_tos/conditional_execution.py --- a/examples/docs_snippets/docs_snippets/legacy/how_tos/conditional_execution.py +++ b/examples/docs_snippets/docs_snippets/legacy/how_tos/conditional_execution.py @@ -55,5 +55,3 @@ do_dangerous_thing() except MyException as e: raise Failure("Failure description", metadata_entries=[...]) from e - # Or in Python 2 - # six.raise_from(Failure("Failure description"), metadata_entries=[...], e)