securedata


Namesecuredata JSON
Version 2023.1.30.1 PyPI version JSON
download
home_pagehttps://github.com/tylerjwoodfin/securedata
SummaryEasily manage data storage and logging across repos
upload_time2023-01-31 05:14:15
maintainer
docs_urlNone
authorTyler Woodfin
requires_python>=3.6
license: OSI Approved :: MIT License
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # SecureData

A library that allows for easy reading/writing of settings across repositories, as well as mail and logging.

## Author

- Tyler Woodfin
  - [GitHub](https://www.github.com/tylerjwoodfin)
  - [Website](http://tyler.cloud)

## Features

- Get/Set data within a JSON file in the location of your choice
- Sync with cloud providers using custom commands
- Log to a file/directory of your choice without having to configure `logger` each time
- Send/receive mail

## Structure

- Data is stored in `settings.json`
- Logs are written to `/path/to/securedata/log` by default

## Installation and Setup

```bash
  python3 -m pip install securedata

  securedata config
```

## Configuration

- To choose where `settings.json` is stored, use `securedata config`

- To choose where logs will be stored, edit `settings.json` and set `path -> log` to the full path to the log folder. (in other words, `{"path": "log": "/path/to/folder"}`)

### cloud syncing

- Set `settings.json -> path -> securedata -> {sync-pull/sync-push}`, like this example:

```
# example only; these commands will be unique to your cloud syncing setup

# if set, pull commands will be used before loading `settings.json` if `sync` is True; pull and push commands will be used before and after `setItem` if `sync` is True

{
  "path": {
    "securedata": {
      "sync-pull": "rclone sync Dropbox:SecureData /home/{username}/securedata",
      "sync-push": "rclone copy /home/{username}/securedata Dropbox:SecureData"
    }
  }
}

setItem("test", "123") # will not sync, because `sync` is not true
setItem("test", "123", sync=True) # will sync if the properties above are set
getItem("test") # will not pull from cloud before returning, because `sync` is not true
getItem("test", sync=True) # will pull from cloud before returning
```

### editFile

- see example below to enable something like `securedata edit shopping` from the terminal
  - or `securedata.editFile("shopping")`, rather than `securedata.editFile("/home/{username}/path/to/shopping.md")`
- if sync-push and set-pull are set, pull commands will be used before loading the file; push commands will be used after saving
- each shortcut should have a `value` (full path to the file)
  - to enable syncing, each shortcut should also have `sync` set to `true`

```
# example only; these commands will be unique to your cloud syncing setup

{
  "path": {
    "edit": {
      "shopping": {
        "value": "/home/{username}/path/to/shopping.md",
        "sync": true
      },
      "todo": {
        "value": "/home/{username}/path/to/todo.md",
        "sync": false
      }
      "sync-pull": "rclone sync Dropbox:SecureData /home/{username}/securedata",
      "sync-push": "rclone copy /home/{username}/securedata Dropbox:SecureData"
    }
  }
}
```

### mail

- It is NEVER a good idea to store your password in plaintext; for this reason, I strongly recommend a "throwaway" account that is only used for sending emails
- Gmail (as of May 2022) and most other mainstream email providers won't work with this; for support, search for sending mail from your email provider with `smtplib`.
- In `settings.json`, add the `email` object to make your settings file look like this example:

```
{
    "email": {
        "from": "throwaway@example.com",
        "from_pw": "example",
        "from_name": "Raspberry Pi",
        "to": "destination@protonmail.com",
        "smtp_server": "example.com",
        "imap_server": "example.com",
        "port": 123
    }
}
```

## Examples

### `setItem`

```
from securedata import securedata

securedata.setItem("employee", "Tyler", "salary", 7.25)
```

results in this structure in settings.json:

```
{
    "employee": {
        "Tyler": {
            "salary": 7.25
        }
    }
}
```

### `getItem`

```
from securedata import securedata

print(securedata.getItem("employee", "Tyler", "salary")) # given example settings.json above
```

```
> python3 test.py
> 7.25
```

### `editFile`

```
from securedata import securedata

# if setItem("path", "edit", "shopping", "/path/to/shopping.md") has been called, this will edit the file
# assigned to that shortcut.

# opens file in Vim, saves upon exit
securedata.editFile("shopping")

# or you can edit a file directly...
securedata.editFile("/path/to/shopping.md")

# set path -> edit -> sync-pull and path -> edit -> sync-push to specify commands that should be run for cloud integration.
```

### `mail`

```

from securedata import mail

mail.send('Test Subject', 'Test Body')

```

### `log`

```

from securedata import securedata

# writes to a file named LOG_DAILY YYYY-MM-DD in the default log folder (or securedata.getItem('path', 'log')) inside a YYYY-MM-DD folder

securedata.log("Dear Diary...")
securedata.log("This function hit a breakpoint", level="debug")
securedata.log("Looks like the server is on fire", level="critical")
securedata.log("This is fine", level="info")

# writes to a file named LOG_TEMPERATURE

securedata.log("30", logName="LOG_TEMPERATURE")

# writes to a file named LOG_TEMPERATURE in /home/{username}/weather

securedata.log("30", logName="LOG_TEMPERATURE", filePath="/home/{username}/weather")

    # format
    # 2021-12-29 19:29:27,896 — INFO — 30

```

## Dependencies

- Python >= 3.6
- smtplib

## Disclaimers

- Although I've done quite a bit of testing, I can't guarantee everything that works on my machine will work on yours. Always back up your data to multiple places to avoid data loss.
- If you find any issues, please contact me... or get your hands dirty and raise a PR!

```

```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/tylerjwoodfin/securedata",
    "name": "securedata",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "",
    "author": "Tyler Woodfin",
    "author_email": "feedback@tyler.cloud",
    "download_url": "https://files.pythonhosted.org/packages/b0/93/0a91c0da437c461117306cd14b59487c2ff04c4d8da807a35063d867ac6f/securedata-2023.1.30.1.tar.gz",
    "platform": null,
    "description": "# SecureData\n\nA library that allows for easy reading/writing of settings across repositories, as well as mail and logging.\n\n## Author\n\n- Tyler Woodfin\n  - [GitHub](https://www.github.com/tylerjwoodfin)\n  - [Website](http://tyler.cloud)\n\n## Features\n\n- Get/Set data within a JSON file in the location of your choice\n- Sync with cloud providers using custom commands\n- Log to a file/directory of your choice without having to configure `logger` each time\n- Send/receive mail\n\n## Structure\n\n- Data is stored in `settings.json`\n- Logs are written to `/path/to/securedata/log` by default\n\n## Installation and Setup\n\n```bash\n  python3 -m pip install securedata\n\n  securedata config\n```\n\n## Configuration\n\n- To choose where `settings.json` is stored, use `securedata config`\n\n- To choose where logs will be stored, edit `settings.json` and set `path -> log` to the full path to the log folder. (in other words, `{\"path\": \"log\": \"/path/to/folder\"}`)\n\n### cloud syncing\n\n- Set `settings.json -> path -> securedata -> {sync-pull/sync-push}`, like this example:\n\n```\n# example only; these commands will be unique to your cloud syncing setup\n\n# if set, pull commands will be used before loading `settings.json` if `sync` is True; pull and push commands will be used before and after `setItem` if `sync` is True\n\n{\n  \"path\": {\n    \"securedata\": {\n      \"sync-pull\": \"rclone sync Dropbox:SecureData /home/{username}/securedata\",\n      \"sync-push\": \"rclone copy /home/{username}/securedata Dropbox:SecureData\"\n    }\n  }\n}\n\nsetItem(\"test\", \"123\") # will not sync, because `sync` is not true\nsetItem(\"test\", \"123\", sync=True) # will sync if the properties above are set\ngetItem(\"test\") # will not pull from cloud before returning, because `sync` is not true\ngetItem(\"test\", sync=True) # will pull from cloud before returning\n```\n\n### editFile\n\n- see example below to enable something like `securedata edit shopping` from the terminal\n  - or `securedata.editFile(\"shopping\")`, rather than `securedata.editFile(\"/home/{username}/path/to/shopping.md\")`\n- if sync-push and set-pull are set, pull commands will be used before loading the file; push commands will be used after saving\n- each shortcut should have a `value` (full path to the file)\n  - to enable syncing, each shortcut should also have `sync` set to `true`\n\n```\n# example only; these commands will be unique to your cloud syncing setup\n\n{\n  \"path\": {\n    \"edit\": {\n      \"shopping\": {\n        \"value\": \"/home/{username}/path/to/shopping.md\",\n        \"sync\": true\n      },\n      \"todo\": {\n        \"value\": \"/home/{username}/path/to/todo.md\",\n        \"sync\": false\n      }\n      \"sync-pull\": \"rclone sync Dropbox:SecureData /home/{username}/securedata\",\n      \"sync-push\": \"rclone copy /home/{username}/securedata Dropbox:SecureData\"\n    }\n  }\n}\n```\n\n### mail\n\n- It is NEVER a good idea to store your password in plaintext; for this reason, I strongly recommend a \"throwaway\" account that is only used for sending emails\n- Gmail (as of May 2022) and most other mainstream email providers won't work with this; for support, search for sending mail from your email provider with `smtplib`.\n- In `settings.json`, add the `email` object to make your settings file look like this example:\n\n```\n{\n    \"email\": {\n        \"from\": \"throwaway@example.com\",\n        \"from_pw\": \"example\",\n        \"from_name\": \"Raspberry Pi\",\n        \"to\": \"destination@protonmail.com\",\n        \"smtp_server\": \"example.com\",\n        \"imap_server\": \"example.com\",\n        \"port\": 123\n    }\n}\n```\n\n## Examples\n\n### `setItem`\n\n```\nfrom securedata import securedata\n\nsecuredata.setItem(\"employee\", \"Tyler\", \"salary\", 7.25)\n```\n\nresults in this structure in settings.json:\n\n```\n{\n    \"employee\": {\n        \"Tyler\": {\n            \"salary\": 7.25\n        }\n    }\n}\n```\n\n### `getItem`\n\n```\nfrom securedata import securedata\n\nprint(securedata.getItem(\"employee\", \"Tyler\", \"salary\")) # given example settings.json above\n```\n\n```\n> python3 test.py\n> 7.25\n```\n\n### `editFile`\n\n```\nfrom securedata import securedata\n\n# if setItem(\"path\", \"edit\", \"shopping\", \"/path/to/shopping.md\") has been called, this will edit the file\n# assigned to that shortcut.\n\n# opens file in Vim, saves upon exit\nsecuredata.editFile(\"shopping\")\n\n# or you can edit a file directly...\nsecuredata.editFile(\"/path/to/shopping.md\")\n\n# set path -> edit -> sync-pull and path -> edit -> sync-push to specify commands that should be run for cloud integration.\n```\n\n### `mail`\n\n```\n\nfrom securedata import mail\n\nmail.send('Test Subject', 'Test Body')\n\n```\n\n### `log`\n\n```\n\nfrom securedata import securedata\n\n# writes to a file named LOG_DAILY YYYY-MM-DD in the default log folder (or securedata.getItem('path', 'log')) inside a YYYY-MM-DD folder\n\nsecuredata.log(\"Dear Diary...\")\nsecuredata.log(\"This function hit a breakpoint\", level=\"debug\")\nsecuredata.log(\"Looks like the server is on fire\", level=\"critical\")\nsecuredata.log(\"This is fine\", level=\"info\")\n\n# writes to a file named LOG_TEMPERATURE\n\nsecuredata.log(\"30\", logName=\"LOG_TEMPERATURE\")\n\n# writes to a file named LOG_TEMPERATURE in /home/{username}/weather\n\nsecuredata.log(\"30\", logName=\"LOG_TEMPERATURE\", filePath=\"/home/{username}/weather\")\n\n    # format\n    # 2021-12-29 19:29:27,896 \u2014 INFO \u2014 30\n\n```\n\n## Dependencies\n\n- Python >= 3.6\n- smtplib\n\n## Disclaimers\n\n- Although I've done quite a bit of testing, I can't guarantee everything that works on my machine will work on yours. Always back up your data to multiple places to avoid data loss.\n- If you find any issues, please contact me... or get your hands dirty and raise a PR!\n\n```\n\n```\n",
    "bugtrack_url": null,
    "license": ": OSI Approved :: MIT License",
    "summary": "Easily manage data storage and logging across repos",
    "version": "2023.1.30.1",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f71c189cc6db1030d9169dea16244a618e05fcf6f66923fe3af5f5edc6876499",
                "md5": "776e1a706774c5a053c2cc777b146160",
                "sha256": "76c12f7d4c7151f1ff1c9f4e77fc1445255f7a36014d5229d388e8bcd4d09ad1"
            },
            "downloads": -1,
            "filename": "securedata-2023.1.30.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "776e1a706774c5a053c2cc777b146160",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 10246,
            "upload_time": "2023-01-31T05:14:13",
            "upload_time_iso_8601": "2023-01-31T05:14:13.858039Z",
            "url": "https://files.pythonhosted.org/packages/f7/1c/189cc6db1030d9169dea16244a618e05fcf6f66923fe3af5f5edc6876499/securedata-2023.1.30.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b0930a91c0da437c461117306cd14b59487c2ff04c4d8da807a35063d867ac6f",
                "md5": "155827ea956a4a3b0e74d18eb6f2b7c4",
                "sha256": "babd9bc53520387e8bb1d6c264a10c30eeeabd97e9ba533a62f6fa72941b40ef"
            },
            "downloads": -1,
            "filename": "securedata-2023.1.30.1.tar.gz",
            "has_sig": false,
            "md5_digest": "155827ea956a4a3b0e74d18eb6f2b7c4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 11148,
            "upload_time": "2023-01-31T05:14:15",
            "upload_time_iso_8601": "2023-01-31T05:14:15.576189Z",
            "url": "https://files.pythonhosted.org/packages/b0/93/0a91c0da437c461117306cd14b59487c2ff04c4d8da807a35063d867ac6f/securedata-2023.1.30.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-01-31 05:14:15",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "tylerjwoodfin",
    "github_project": "securedata",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "securedata"
}
        
Elapsed time: 0.04443s