Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make dependency free by requiring python 3.8+ and dropping typing-extensions dependency #2

Open
wants to merge 15 commits into
base: main
Choose a base branch
from
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Robust And Fast Functional IO Toolkit

*Raffiot* is small (almost) dependency-free python library providing some
*Raffiot* is small dependency-free python library providing some
usual functional tools. It currently provides
- an easy-to-use `IO` monad which is **stack-safe**, **fast**, support
**asynchronous**, **concurrent**, **parallel** programming, has many other features.
Expand Down Expand Up @@ -35,10 +35,9 @@ The [API](https://chrilves.github.io/raffiot.py/api/index.html) is online at

## Features

- **pure python**: *Raffiot* is written entirely in Python 3.7+.
- **pure python**: *Raffiot* is written entirely in Python 3.8+.
- **small**: it is just a few small files.
- **(almost) dependency-free**: it only depends on `typing-extensions` (for the
`@final` annotation).
- **dependency-free**: it only depends on the python standary library.
- **crystal clear code**

### IO
Expand Down Expand Up @@ -72,4 +71,4 @@ result of a computation:
- `Ok(value)`: the computation successfully computed the this `value`.
- `Error(error)`: the computation failed on some expected failure `error`, probably
from the business domain.
- `Panic(exception)`: the computation failed on some unexpected failure `exception`.
- `Panic(exception)`: the computation failed on some unexpected failure `exception`.
3 changes: 1 addition & 2 deletions raffiot/_internal.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@

from enum import Enum

from typing_extensions import final
from typing import List, Any, Iterable
from typing import List, Any, Iterable, final
from collections import abc

__all__ = ["IOTag", "ContTag", "ResultTag", "FiberState"]
Expand Down
4 changes: 1 addition & 3 deletions raffiot/_runtime.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@
from queue import Queue
from random import randint
from threading import Thread
from typing import Any, List, TypeVar, Generic, Callable, Optional, Tuple

from typing_extensions import final
from typing import Any, List, TypeVar, Generic, Callable, Optional, Tuple, final

from raffiot._internal import ContTag, FiberState, IOTag, ResultTag
from raffiot.io import IO
Expand Down
4 changes: 1 addition & 3 deletions raffiot/io.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@

import time
from collections import abc
from typing import TypeVar, Generic, Callable, Any, List, Iterable

from typing_extensions import final
from typing import TypeVar, Generic, Callable, Any, List, Iterable, final

from raffiot import result
from raffiot._internal import IOTag
Expand Down
4 changes: 1 addition & 3 deletions raffiot/resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@

from collections import abc
from dataclasses import dataclass
from typing import TypeVar, Generic, Callable, Any, Tuple, List, Iterable

from typing_extensions import final
from typing import TypeVar, Generic, Callable, Any, Tuple, List, Iterable, final

from raffiot import _runtime
from raffiot import io
Expand Down
4 changes: 1 addition & 3 deletions raffiot/result.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@

from collections import abc
from dataclasses import dataclass
from typing import TypeVar, Generic, Callable, Any, List, Iterable, Union

from typing_extensions import final
from typing import TypeVar, Generic, Callable, Any, List, Iterable, Union, final

from raffiot.utils import (
ComputationStatus,
Expand Down
4 changes: 1 addition & 3 deletions raffiot/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@
from dataclasses import dataclass
from enum import IntEnum
from traceback import format_exc, format_stack
from typing import Any, List, Generic, TypeVar, Iterable

from typing_extensions import final
from typing import Any, List, Generic, TypeVar, Iterable, final

__all__ = [
"TracedException",
Expand Down
4 changes: 1 addition & 3 deletions raffiot/val.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@

from collections import abc
from dataclasses import dataclass
from typing import Generic, TypeVar, Callable, List, Any

from typing_extensions import final
from typing import Generic, TypeVar, Callable, List, Any, final

from raffiot import io, resource
from raffiot.io import IO
Expand Down
4 changes: 1 addition & 3 deletions raffiot/var.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,7 @@

from collections import abc
from dataclasses import dataclass
from typing import Generic, TypeVar, Callable, List, Any, Tuple

from typing_extensions import final
from typing import Generic, TypeVar, Callable, List, Any, Tuple, final

from raffiot import io, resource
from raffiot.io import IO
Expand Down
6 changes: 3 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,13 @@
"Intended Audience :: Developers",
"Topic :: Software Development :: Build Tools",
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Operating System :: OS Independent",
],
install_requires=["typing-extensions"],
python_requires=">=3.7",
install_requires=[],
python_requires=">=3.8",
zip_safe=False,
package_data={"raffiot": ["py.typed"]},
)