[](https://github.com/psf/black)
# pydllfile - double linked list in heap file storage
`pydllfile` implements a file persistent
[`double linked list`](https://en.wikipedia.org/wiki/Doubly_linked_list)
# What's new ?
Check
[`CHANGELOG`](https://github.com/kr-g/pydllfile/blob/main/CHANGELOG.MD)
for latest ongoing, or upcoming news
# memory / file layout
a double linked element node resides inside a heap node as data part.
see also [`pyheapfile`](https://github.com/kr-g/pyheapfile/) for layout.
## general node layout
| name | size / value | description |
| --- | --- | --- |
| prev | xpos bytes | previous element |
| succ | xpos bytes | next element |
| data | x bytes | data area |
## limitation
- xpos (default) == 8 bytes ==> 2**(8*8)
== 18.446.744.073.709.551.616 bytes total file size (default)
| [binary prefix](https://en.wikipedia.org/wiki/Binary_prefix) | size | unit |
| --- | --- | --- |
| 2**20 | 17.592.186.044.416 | MB |
| 2**30 | 17.179.869.184 | GB |
| 2**40 | 16.777.216 | TB |
| 2**50 | 16.384 | PB |
| 2**60 | 16 | EB |
- the default can be changed by creating `DoubleLinkedListFile` with a different `link_size`
- see other limits also here [`pyheapfile`](https://github.com/kr-g/pyheapfile/)
-
## remark on hexdump tool
hexdump tool raise error when configured not properly. use valid hex address for node and link.
the internal hexdump tool for dumping single elements nodes from the dllfile can be called with:
usage: python3 -m pydllfile.hexdump [options]
dump heapfile double linked elements
optional arguments:
-h, --help show this help message and exit
-v, --version show version info and exit
-V, --verbose show more info
-f FILE_NAME, --file FILE_NAME
input file
-n NODE_NO, --node NODE_NO
hex address of node. blanks in a quoted string are ignored. address of 0x0 will read the 2nd heap node since a dll element node can not be
stored in first heap node. (default: 000000)
-l LINK_NO, --link LINK_NO
hex address of dll element node. blanks in a quoted string are ignored. (default: 000000)
-aw ADDESS_WIDTH, --addess_width ADDESS_WIDTH
hex address width. (default: 6)
-ls LINK_SIZE, --link_size LINK_SIZE
link size. (default: 8)
-r REL_NO, --relative REL_NO
relative position of dll element node. can be combined with -n or -l option. when negative it reads backwards starting from the -n/-l node.
keep in mind that -n is an address and -r is a position. (default: 0)
-w WIDTH, --width WIDTH
with of data output (default: 16)
-g GROUP, --group GROUP
group bytes in data output (default: 1)
-ho, --header_only prints only header, no data.
# Related Projects
search for topic [`pyheapfile`](https://github.com/topics/pyheapfile)
on github to explore related tools/ modules.
# Platform
Tested on Python3, and Linux.
# development status
alpha state.
the API or logical call flow might change without prior notice.
read [`CHANGELOG`](https://github.com/kr-g/pydllfile/blob/main/CHANGELOG.MD)
for latest, or upcoming news.
# installation
available on pypi. install with:
python3 -m pip install pydllfile
Raw data
{
"_id": null,
"home_page": "https://github.com/kr-g/pydllfile",
"name": "pydllfile",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "",
"keywords": "double linked list file storage memory management pyheapfile",
"author": "k.r. goger",
"author_email": "k.r.goger+pydllfile@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/0a/5d/ef30f7298599922606175c9a4ec8b2db3425050f39e67bda29c38c30111e/pydllfile-0.0.4.linux-x86_64.tar.gz",
"platform": "",
"description": "\n[](https://github.com/psf/black)\n\n\n# pydllfile - double linked list in heap file storage\n\n`pydllfile` implements a file persistent \n[`double linked list`](https://en.wikipedia.org/wiki/Doubly_linked_list)\n\n\n# What's new ?\n\nCheck\n[`CHANGELOG`](https://github.com/kr-g/pydllfile/blob/main/CHANGELOG.MD)\nfor latest ongoing, or upcoming news\n\n\n# memory / file layout\n\na double linked element node resides inside a heap node as data part. \nsee also [`pyheapfile`](https://github.com/kr-g/pyheapfile/) for layout.\n\n\n## general node layout\n\n| name | size / value | description |\n| --- | --- | --- | \n| prev | xpos bytes | previous element |\n| succ | xpos bytes | next element |\n| data | x bytes | data area |\n\n\n## limitation\n\n- xpos (default) == 8 bytes ==> 2**(8*8) \n== 18.446.744.073.709.551.616 bytes total file size (default)\n\n| [binary prefix](https://en.wikipedia.org/wiki/Binary_prefix) | size | unit |\n| --- | --- | --- |\n| 2**20 | 17.592.186.044.416 | MB |\n| 2**30 | 17.179.869.184 | GB |\n| 2**40 | 16.777.216 | TB |\n| 2**50 | 16.384 | PB |\n| 2**60 | 16 | EB |\n\n- the default can be changed by creating `DoubleLinkedListFile` with a different `link_size`\n- see other limits also here [`pyheapfile`](https://github.com/kr-g/pyheapfile/)\n-\n\n## remark on hexdump tool\n\nhexdump tool raise error when configured not properly. use valid hex address for node and link.\nthe internal hexdump tool for dumping single elements nodes from the dllfile can be called with:\n\n\n usage: python3 -m pydllfile.hexdump [options]\n\n dump heapfile double linked elements\n\n optional arguments:\n -h, --help show this help message and exit\n -v, --version show version info and exit\n -V, --verbose show more info\n -f FILE_NAME, --file FILE_NAME\n input file\n -n NODE_NO, --node NODE_NO\n hex address of node. blanks in a quoted string are ignored. address of 0x0 will read the 2nd heap node since a dll element node can not be\n stored in first heap node. (default: 000000)\n -l LINK_NO, --link LINK_NO\n hex address of dll element node. blanks in a quoted string are ignored. (default: 000000)\n -aw ADDESS_WIDTH, --addess_width ADDESS_WIDTH\n hex address width. (default: 6)\n -ls LINK_SIZE, --link_size LINK_SIZE\n link size. (default: 8)\n -r REL_NO, --relative REL_NO\n relative position of dll element node. can be combined with -n or -l option. when negative it reads backwards starting from the -n/-l node.\n keep in mind that -n is an address and -r is a position. (default: 0)\n -w WIDTH, --width WIDTH\n with of data output (default: 16)\n -g GROUP, --group GROUP\n group bytes in data output (default: 1)\n -ho, --header_only prints only header, no data.\n\n\n# Related Projects\n\nsearch for topic [`pyheapfile`](https://github.com/topics/pyheapfile) \non github to explore related tools/ modules.\n\n\n# Platform\n\nTested on Python3, and Linux.\n\n\n# development status\n\nalpha state.\nthe API or logical call flow might change without prior notice.\n\nread [`CHANGELOG`](https://github.com/kr-g/pydllfile/blob/main/CHANGELOG.MD)\nfor latest, or upcoming news.\n\n\n# installation\n\navailable on pypi. install with:\n\n python3 -m pip install pydllfile\n\n\n\n",
"bugtrack_url": null,
"license": "",
"summary": "pydllfile - python double linked list file storage memory management",
"version": "0.0.4",
"split_keywords": [
"double",
"linked",
"list",
"file",
"storage",
"memory",
"management",
"pyheapfile"
],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "69f939fddaeef715e96319d6d15caf3d",
"sha256": "2f2ed6aeed385ee86d673f1fc6208a4e3669510fa97e3f375e1418f74e90f001"
},
"downloads": -1,
"filename": "pydllfile-0.0.4.linux-x86_64.tar.gz",
"has_sig": false,
"md5_digest": "69f939fddaeef715e96319d6d15caf3d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 9584,
"upload_time": "2021-04-12T19:23:46",
"upload_time_iso_8601": "2021-04-12T19:23:46.637212Z",
"url": "https://files.pythonhosted.org/packages/0a/5d/ef30f7298599922606175c9a4ec8b2db3425050f39e67bda29c38c30111e/pydllfile-0.0.4.linux-x86_64.tar.gz",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "e2ea9dfcafd68518c76afa3e01ab7c39",
"sha256": "30de37ae3482a008ab51f4726f4ce45ba146a59b0d755642f91bd597ad83d90d"
},
"downloads": -1,
"filename": "pydllfile-0.0.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e2ea9dfcafd68518c76afa3e01ab7c39",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 18078,
"upload_time": "2021-04-12T19:23:45",
"upload_time_iso_8601": "2021-04-12T19:23:45.482821Z",
"url": "https://files.pythonhosted.org/packages/5b/49/c7b80efe2d112302e489ccce548a814b809f34de16c462b623931b53d182/pydllfile-0.0.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2021-04-12 19:23:46",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": null,
"github_project": "kr-g",
"error": "Could not fetch GitHub repository",
"lcname": "pydllfile"
}