Name | minidir JSON |
Version |
0.1.3
JSON |
| download |
home_page | None |
Summary | Minimal directory interface and some implementations |
upload_time | 2024-06-07 03:11:00 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.7 |
license | None |
keywords |
directory
fake
filesystem
testing
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# minidir: Minimal directory interface and implementation
The minimal interface for directories and files and
two implementations: in-memory and real file system versions.
It's a good choice when we want to separate file-access side effects from
pure functional part of our code base.
## Installation
Already published on Pypi
```shell
pip install minidir
```
## Usage
- Interface: `Directory` -> `Path`, `File`
- `Directory` is the container where we access `File` by `Path`
- Implementation
- `SystemDirectory`: a `Directory` backed by real file system.
- `FakeDirectory`: a `Directory` only exists in-memory.
Some error like `NameCollision` and `NotFound` will be raised in corresponding situations.
Example:
```python
import minidir
class SomeClass:
folder: minidir.Directory
def __init__(self, folder: minidir.Directory) -> None:
# inject directory to separate side effect from core logic
pass
def main():
# use actual file system during production
instance = SomeClass(minidir.SystemDirectory("/path/to/root"))
def test_some_class():
# use in-memory implementation during test
instance = SomeClass(minidir.FakeDirectory())
```
## Future Work
- Implementations for network-oriented storage, e.g. WebDAV, S3, Dropbox ...
- Stream based file read / write interface.
Raw data
{
"_id": null,
"home_page": null,
"name": "minidir",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "directory, fake, filesystem, testing",
"author": null,
"author_email": "Weida Hong <wdhongtw@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/a7/38/10f2ccedbd8cc9b5d7f8f8366944472da640e55f8bccb10eeae39879e324/minidir-0.1.3.tar.gz",
"platform": null,
"description": "# minidir: Minimal directory interface and implementation\n\nThe minimal interface for directories and files and\ntwo implementations: in-memory and real file system versions.\n\nIt's a good choice when we want to separate file-access side effects from\npure functional part of our code base.\n\n## Installation\n\nAlready published on Pypi\n\n```shell\npip install minidir\n```\n\n## Usage\n\n- Interface: `Directory` -> `Path`, `File`\n - `Directory` is the container where we access `File` by `Path`\n- Implementation\n - `SystemDirectory`: a `Directory` backed by real file system.\n - `FakeDirectory`: a `Directory` only exists in-memory.\n\nSome error like `NameCollision` and `NotFound` will be raised in corresponding situations.\n\nExample:\n\n```python\nimport minidir\n\nclass SomeClass:\n folder: minidir.Directory\n\n def __init__(self, folder: minidir.Directory) -> None:\n # inject directory to separate side effect from core logic\n pass\n\ndef main():\n # use actual file system during production\n instance = SomeClass(minidir.SystemDirectory(\"/path/to/root\"))\n\ndef test_some_class():\n # use in-memory implementation during test\n instance = SomeClass(minidir.FakeDirectory())\n```\n\n## Future Work\n\n- Implementations for network-oriented storage, e.g. WebDAV, S3, Dropbox ...\n- Stream based file read / write interface.\n",
"bugtrack_url": null,
"license": null,
"summary": "Minimal directory interface and some implementations",
"version": "0.1.3",
"project_urls": {
"Homepage": "https://github.com/wdhongtw/minidir"
},
"split_keywords": [
"directory",
" fake",
" filesystem",
" testing"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c757a5244323c0208e7437ef05093e7a3acc7cbce0747d6ff72ccd9bbd7ec6af",
"md5": "c01dbbbf2ca9136a31ee6eaec67d0c14",
"sha256": "558f64b1967f4a674039491b4f719e7f400d0c541026dd156f0d6ea4602c4c20"
},
"downloads": -1,
"filename": "minidir-0.1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c01dbbbf2ca9136a31ee6eaec67d0c14",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 3088,
"upload_time": "2024-06-07T03:10:59",
"upload_time_iso_8601": "2024-06-07T03:10:59.644359Z",
"url": "https://files.pythonhosted.org/packages/c7/57/a5244323c0208e7437ef05093e7a3acc7cbce0747d6ff72ccd9bbd7ec6af/minidir-0.1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a73810f2ccedbd8cc9b5d7f8f8366944472da640e55f8bccb10eeae39879e324",
"md5": "244e27044078fb7e67d6efd2ff96d93e",
"sha256": "072fb532bdca0d9a85dac111eac74cb8657d74de65a79f023ce0fbcfc3496e8a"
},
"downloads": -1,
"filename": "minidir-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "244e27044078fb7e67d6efd2ff96d93e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 4493,
"upload_time": "2024-06-07T03:11:00",
"upload_time_iso_8601": "2024-06-07T03:11:00.867222Z",
"url": "https://files.pythonhosted.org/packages/a7/38/10f2ccedbd8cc9b5d7f8f8366944472da640e55f8bccb10eeae39879e324/minidir-0.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-07 03:11:00",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "wdhongtw",
"github_project": "minidir",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "minidir"
}