watchmenpy


Namewatchmenpy JSON
Version 0.0.1 PyPI version JSON
download
home_page
SummaryWatchmen is a daemon process manager that for you manage and keep your application online 24/7
upload_time2024-01-03 06:37:22
maintainer
docs_urlNone
authorahriknow
requires_python>=3.5
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Watchmen (0.0.1)

`
Watchmen is a daemon process manager that for you manage and keep your application online 24/7
`

[中文简体](README.md) | [English](README_EN.md)

## Install

### Build from source

```shell
# Clone the repository
git clone https://git.ahriknow.com/ahriknow/watchmenpy.git

# Go into the repository
cd watchmenpy

# Install watchmen daemon and cli tool
pip install -e .
```

### Install from pypi

```shell
# Install watchmen daemon
pip install watchmen
```

## Getting Started

### Generate config file

> "" Default is ${HOME}/.watchmen/config.toml

`watchmen -g ""`

```toml
[watchmen]
# The engine to use for the watchmen server
# Valid values are "sock", "socket", "http", "redis"
# sock: Unix socket
# socket: TCP socket
# http: HTTP Api (Include Web panel)
# redis: Redis pub/sub
engines = ["sock"]

# The default engine to use for connecting to the watchmen server
engine = "sock"

# The log directory of the watchmen server
log_dir = "$HOME/.watchmen/logs"

# The log level of the watchmen server
# Valid values are "debug", "info", "warn", "error". Default is "info"
log_level = "info"

# The standard output of the watchmen server
# Default is None
stdout = "$HOME/.watchmen/watchmen.stdout.log"

# The standard error of the watchmen server
# Default is None
stderr = "$HOME/.watchmen/watchmen.stderr.log"

# The pid file of the watchmen server
# Default is `$HOME/.watchmen/watchmen.pid`
pid = "$HOME/.watchmen/watchmen.pid"

# The task config file name matching pattern
# Default is `^.*\\.(toml|ini|json)$`
mat = "^.*\\.(toml|ini|json)$"

# Tasks cache file, json format
cache = "$HOME/.watchmen/cache.json"

# Monitor interval for rerun tasks, u64: second
interval = 5


[sock]
# The unix socket path of the watchmen server
path = "/tmp/watchmen.sock"


[socket]
host = "127.0.0.1"
port = 1949


[http]
host = "127.0.0.1"
port = 1997


[redis]
host = "localhost"
port = 6379
username = ""
password = ""
queue_index = 0
queue_name = "watchmen"
subscribe_channels = ["watchmen"]
subscribe_name = "watchmen"
```

### Start watchmen daemon

`watchmend`

### Task Config file

```toml
[[task]]
id = 1
name = "Async Task 1"
command = "command"
args = ["arg1", "arg2"]
dir = "/path/to/directory"
env = { key1 = "value1", key2 = "value2" }
stdin = true
stdout = "output.txt"
stderr = "error.txt"
task_type = { Async = { max_restart = 2, has_restart = 0, started_at = 0, stopped_at = 0 } }
```

```ini
[Async Task]
id = 2
name = Async Task 2
command = command
args = arg1 arg2
dir = /path/to/directory
env = key1=value1 key2=value2
stdin = true
stdout = "output.txt"
stderr = "error.txt"
task_type = async
max_restart = 2
```

```json
[
    {
        "id": 3,
        "name": "Async Task 3",
        "command": "command",
        "args": ["arg1", "arg2"],
        "dir": "/path/to/directory",
        "env": {},
        "stdin": true,
        "stdout": "output.txt",
        "stderr": "error.txt",
        "created_at": 0,
        "task_type": { "Async": { "max_restart": 2, "has_restart": 0, "started_at": 0, "stopped_at": 0 } }
    }
]
```

## Command

### watchmen -h

```shell
usage: watchmen [OPTIONS] [COMMAND]

Watchmen (Python) is a daemon process manager that for you manage and keep your application online 24/7

options:
  -h, --help            show this help message and exit
  -c <CONFIG>, --config <CONFIG>
                        Config file path. Default: $HOME/.watchmen/config.toml
  -g <GENERATE>, --generate <GENERATE>
                        Generate config file
  -e <ENGINE>, --engine <ENGINE>
                        Engine for send message
  -v, --version         Print version

Sub Commands:
  {run,add,reload,start,restart,stop,remove,pause,resume,list}
    run                 Add and run tasks
    add                 Add tasks
    reload              Reload tasks
    start               Start tasks
    restart             Restart tasks
    stop                Stop tasks
    remove              Remove tasks
    pause               Pause tasks
    resume              Resume tasks
    list                Get tasks list

See "watchmen COMMAND --help" for more information on a specific command.
```

### watchmen run -h

```shell
usage: watchmen run [OPTIONS]

options:
  -h, --help            show this help message and exit
  -p <PATH>, --path <PATH>
                        Task config directory
  -r <REGEX>, --regex <REGEX>
                        Task config filename regex pattern
  -f <CONFIG>, --config <CONFIG>
                        Task config file
  -n <NAME>, --name <NAME>
                        Task name (unique)
  -c <COMMAND>, --command <COMMAND>
                        Task command
  -a <ARGS> [<ARGS> ...], --args <ARGS> [<ARGS> ...]
                        Task arguments
  -d <DIR>, --dir <DIR>
                        Task working directory
  -e <ENV> [<ENV> ...], --env <ENV> [<ENV> ...]
                        Task environment variables
  -i, --stdin           Task standard input
  -o <STDOUT>, --stdout <STDOUT>
                        Task standard output
  -w <STDERR>, --stderr <STDERR>
                        Task standard error
```

### watchmen add -h

```shell
usage: watchmen add [OPTIONS]

options:
  -h, --help            show this help message and exit
  -p <PATH>, --path <PATH>
                        Task config directory
  -r <REGEX>, --regex <REGEX>
                        Task config filename regex pattern
  -f <CONFIG>, --config <CONFIG>
                        Task config file
  -n <NAME>, --name <NAME>
                        Task name (unique)
  -c <COMMAND>, --command <COMMAND>
                        Task command
  -a <ARGS> [<ARGS> ...], --args <ARGS> [<ARGS> ...]
                        Task arguments
  -d <DIR>, --dir <DIR>
                        Task working directory
  -e <ENV> [<ENV> ...], --env <ENV> [<ENV> ...]
                        Task environment variables
  -i, --stdin           Task standard input
  -o <STDOUT>, --stdout <STDOUT>
                        Task standard output
  -w <STDERR>, --stderr <STDERR>
                        Task standard error
```

### watchmen reload -h

```shell
usage: watchmen reload [OPTIONS]

options:
  -h, --help            show this help message and exit
  -p <PATH>, --path <PATH>
                        Task config directory
  -r <REGEX>, --regex <REGEX>
                        Task config filename regex pattern
  -f <CONFIG>, --config <CONFIG>
                        Task config file
  -n <NAME>, --name <NAME>
                        Task name (unique)
  -c <COMMAND>, --command <COMMAND>
                        Task command
  -a <ARGS> [<ARGS> ...], --args <ARGS> [<ARGS> ...]
                        Task arguments
  -d <DIR>, --dir <DIR>
                        Task working directory
  -e <ENV> [<ENV> ...], --env <ENV> [<ENV> ...]
                        Task environment variables
  -i, --stdin           Task standard input
  -o <STDOUT>, --stdout <STDOUT>
                        Task standard output
  -w <STDERR>, --stderr <STDERR>
                        Task standard error
```

### watchmen start -h

```shell
usage: watchmen start [OPTIONS]

options:
  -h, --help            show this help message and exit
  -p <PATH>, --path <PATH>
                        Task config directory
  -r <REGEX>, --regex <REGEX>
                        Task config filename regex pattern
  -f <CONFIG>, --config <CONFIG>
                        Task config file
  -i <ID>, --id <ID>    Task id (unique)
  -n <NAME>, --name <NAME>
                        Task name (unique)
  -m, --mat             Is match regex pattern by namae
```

### watchmen restart -h

```shell
usage: watchmen restart [OPTIONS]

options:
  -h, --help            show this help message and exit
  -p <PATH>, --path <PATH>
                        Task config directory
  -r <REGEX>, --regex <REGEX>
                        Task config filename regex pattern
  -f <CONFIG>, --config <CONFIG>
                        Task config file
  -i <ID>, --id <ID>    Task id (unique)
  -n <NAME>, --name <NAME>
                        Task name (unique)
  -m, --mat             Is match regex pattern by namae
```

### watchmen stop -h

```shell
usage: watchmen stop [OPTIONS]

options:
  -h, --help            show this help message and exit
  -p <PATH>, --path <PATH>
                        Task config directory
  -r <REGEX>, --regex <REGEX>
                        Task config filename regex pattern
  -f <CONFIG>, --config <CONFIG>
                        Task config file
  -i <ID>, --id <ID>    Task id (unique)
  -n <NAME>, --name <NAME>
                        Task name (unique)
  -m, --mat             Is match regex pattern by namae
```

### watchmen remove -h

```shell
usage: watchmen remove [OPTIONS]

options:
  -h, --help            show this help message and exit
  -p <PATH>, --path <PATH>
                        Task config directory
  -r <REGEX>, --regex <REGEX>
                        Task config filename regex pattern
  -f <CONFIG>, --config <CONFIG>
                        Task config file
  -i <ID>, --id <ID>    Task id (unique)
  -n <NAME>, --name <NAME>
                        Task name (unique)
  -m, --mat             Is match regex pattern by namae
```

### watchmen pause -h

```shell
usage: watchmen pause [OPTIONS]

options:
  -h, --help            show this help message and exit
  -p <PATH>, --path <PATH>
                        Task config directory
  -r <REGEX>, --regex <REGEX>
                        Task config filename regex pattern
  -f <CONFIG>, --config <CONFIG>
                        Task config file
  -i <ID>, --id <ID>    Task id (unique)
  -n <NAME>, --name <NAME>
                        Task name (unique)
  -m, --mat             Is match regex pattern by namae
```

### watchmen resume -h

```shell
usage: watchmen resume [OPTIONS]

options:
  -h, --help            show this help message and exit
  -p <PATH>, --path <PATH>
                        Task config directory
  -r <REGEX>, --regex <REGEX>
                        Task config filename regex pattern
  -f <CONFIG>, --config <CONFIG>
                        Task config file
  -i <ID>, --id <ID>    Task id (unique)
  -n <NAME>, --name <NAME>
                        Task name (unique)
  -m, --mat             Is match regex pattern by namae
```

### watchmen list -h

```shell
usage: watchmen list [OPTIONS]

options:
  -h, --help            show this help message and exit
  -p <PATH>, --path <PATH>
                        Task config directory
  -r <REGEX>, --regex <REGEX>
                        Task config filename regex pattern
  -f <CONFIG>, --config <CONFIG>
                        Task config file
  -i <ID>, --id <ID>    Task id (unique)
  -n <NAME>, --name <NAME>
                        Task name (unique)
  -R, --mat             Is match regex pattern by name
  -m, --more            Show more info
  -l, --less            Show less info
```

## License Apache Licence 2.0
[License](./LICENSE)

## Copyright ahriknow 2022

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "watchmenpy",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.5",
    "maintainer_email": "",
    "keywords": "",
    "author": "ahriknow",
    "author_email": "ahriknow@ahriknow.com",
    "download_url": "https://files.pythonhosted.org/packages/8a/a2/7b55a3867fe5ed2891bcba868a1a2af2b50ba7f389892196b0e9c6a265d4/watchmenpy-0.0.1.tar.gz",
    "platform": null,
    "description": "# Watchmen (0.0.1)\n\n`\nWatchmen is a daemon process manager that for you manage and keep your application online 24/7\n`\n\n[\u4e2d\u6587\u7b80\u4f53](README.md) | [English](README_EN.md)\n\n## Install\n\n### Build from source\n\n```shell\n# Clone the repository\ngit clone https://git.ahriknow.com/ahriknow/watchmenpy.git\n\n# Go into the repository\ncd watchmenpy\n\n# Install watchmen daemon and cli tool\npip install -e .\n```\n\n### Install from pypi\n\n```shell\n# Install watchmen daemon\npip install watchmen\n```\n\n## Getting Started\n\n### Generate config file\n\n> \"\" Default is ${HOME}/.watchmen/config.toml\n\n`watchmen -g \"\"`\n\n```toml\n[watchmen]\n# The engine to use for the watchmen server\n# Valid values are \"sock\", \"socket\", \"http\", \"redis\"\n# sock: Unix socket\n# socket: TCP socket\n# http: HTTP Api (Include Web panel)\n# redis: Redis pub/sub\nengines = [\"sock\"]\n\n# The default engine to use for connecting to the watchmen server\nengine = \"sock\"\n\n# The log directory of the watchmen server\nlog_dir = \"$HOME/.watchmen/logs\"\n\n# The log level of the watchmen server\n# Valid values are \"debug\", \"info\", \"warn\", \"error\". Default is \"info\"\nlog_level = \"info\"\n\n# The standard output of the watchmen server\n# Default is None\nstdout = \"$HOME/.watchmen/watchmen.stdout.log\"\n\n# The standard error of the watchmen server\n# Default is None\nstderr = \"$HOME/.watchmen/watchmen.stderr.log\"\n\n# The pid file of the watchmen server\n# Default is `$HOME/.watchmen/watchmen.pid`\npid = \"$HOME/.watchmen/watchmen.pid\"\n\n# The task config file name matching pattern\n# Default is `^.*\\\\.(toml|ini|json)$`\nmat = \"^.*\\\\.(toml|ini|json)$\"\n\n# Tasks cache file, json format\ncache = \"$HOME/.watchmen/cache.json\"\n\n# Monitor interval for rerun tasks, u64: second\ninterval = 5\n\n\n[sock]\n# The unix socket path of the watchmen server\npath = \"/tmp/watchmen.sock\"\n\n\n[socket]\nhost = \"127.0.0.1\"\nport = 1949\n\n\n[http]\nhost = \"127.0.0.1\"\nport = 1997\n\n\n[redis]\nhost = \"localhost\"\nport = 6379\nusername = \"\"\npassword = \"\"\nqueue_index = 0\nqueue_name = \"watchmen\"\nsubscribe_channels = [\"watchmen\"]\nsubscribe_name = \"watchmen\"\n```\n\n### Start watchmen daemon\n\n`watchmend`\n\n### Task Config file\n\n```toml\n[[task]]\nid = 1\nname = \"Async Task 1\"\ncommand = \"command\"\nargs = [\"arg1\", \"arg2\"]\ndir = \"/path/to/directory\"\nenv = { key1 = \"value1\", key2 = \"value2\" }\nstdin = true\nstdout = \"output.txt\"\nstderr = \"error.txt\"\ntask_type = { Async = { max_restart = 2, has_restart = 0, started_at = 0, stopped_at = 0 } }\n```\n\n```ini\n[Async Task]\nid = 2\nname = Async Task 2\ncommand = command\nargs = arg1 arg2\ndir = /path/to/directory\nenv = key1=value1 key2=value2\nstdin = true\nstdout = \"output.txt\"\nstderr = \"error.txt\"\ntask_type = async\nmax_restart = 2\n```\n\n```json\n[\n    {\n        \"id\": 3,\n        \"name\": \"Async Task 3\",\n        \"command\": \"command\",\n        \"args\": [\"arg1\", \"arg2\"],\n        \"dir\": \"/path/to/directory\",\n        \"env\": {},\n        \"stdin\": true,\n        \"stdout\": \"output.txt\",\n        \"stderr\": \"error.txt\",\n        \"created_at\": 0,\n        \"task_type\": { \"Async\": { \"max_restart\": 2, \"has_restart\": 0, \"started_at\": 0, \"stopped_at\": 0 } }\n    }\n]\n```\n\n## Command\n\n### watchmen -h\n\n```shell\nusage: watchmen [OPTIONS] [COMMAND]\n\nWatchmen (Python) is a daemon process manager that for you manage and keep your application online 24/7\n\noptions:\n  -h, --help            show this help message and exit\n  -c <CONFIG>, --config <CONFIG>\n                        Config file path. Default: $HOME/.watchmen/config.toml\n  -g <GENERATE>, --generate <GENERATE>\n                        Generate config file\n  -e <ENGINE>, --engine <ENGINE>\n                        Engine for send message\n  -v, --version         Print version\n\nSub Commands:\n  {run,add,reload,start,restart,stop,remove,pause,resume,list}\n    run                 Add and run tasks\n    add                 Add tasks\n    reload              Reload tasks\n    start               Start tasks\n    restart             Restart tasks\n    stop                Stop tasks\n    remove              Remove tasks\n    pause               Pause tasks\n    resume              Resume tasks\n    list                Get tasks list\n\nSee \"watchmen COMMAND --help\" for more information on a specific command.\n```\n\n### watchmen run -h\n\n```shell\nusage: watchmen run [OPTIONS]\n\noptions:\n  -h, --help            show this help message and exit\n  -p <PATH>, --path <PATH>\n                        Task config directory\n  -r <REGEX>, --regex <REGEX>\n                        Task config filename regex pattern\n  -f <CONFIG>, --config <CONFIG>\n                        Task config file\n  -n <NAME>, --name <NAME>\n                        Task name (unique)\n  -c <COMMAND>, --command <COMMAND>\n                        Task command\n  -a <ARGS> [<ARGS> ...], --args <ARGS> [<ARGS> ...]\n                        Task arguments\n  -d <DIR>, --dir <DIR>\n                        Task working directory\n  -e <ENV> [<ENV> ...], --env <ENV> [<ENV> ...]\n                        Task environment variables\n  -i, --stdin           Task standard input\n  -o <STDOUT>, --stdout <STDOUT>\n                        Task standard output\n  -w <STDERR>, --stderr <STDERR>\n                        Task standard error\n```\n\n### watchmen add -h\n\n```shell\nusage: watchmen add [OPTIONS]\n\noptions:\n  -h, --help            show this help message and exit\n  -p <PATH>, --path <PATH>\n                        Task config directory\n  -r <REGEX>, --regex <REGEX>\n                        Task config filename regex pattern\n  -f <CONFIG>, --config <CONFIG>\n                        Task config file\n  -n <NAME>, --name <NAME>\n                        Task name (unique)\n  -c <COMMAND>, --command <COMMAND>\n                        Task command\n  -a <ARGS> [<ARGS> ...], --args <ARGS> [<ARGS> ...]\n                        Task arguments\n  -d <DIR>, --dir <DIR>\n                        Task working directory\n  -e <ENV> [<ENV> ...], --env <ENV> [<ENV> ...]\n                        Task environment variables\n  -i, --stdin           Task standard input\n  -o <STDOUT>, --stdout <STDOUT>\n                        Task standard output\n  -w <STDERR>, --stderr <STDERR>\n                        Task standard error\n```\n\n### watchmen reload -h\n\n```shell\nusage: watchmen reload [OPTIONS]\n\noptions:\n  -h, --help            show this help message and exit\n  -p <PATH>, --path <PATH>\n                        Task config directory\n  -r <REGEX>, --regex <REGEX>\n                        Task config filename regex pattern\n  -f <CONFIG>, --config <CONFIG>\n                        Task config file\n  -n <NAME>, --name <NAME>\n                        Task name (unique)\n  -c <COMMAND>, --command <COMMAND>\n                        Task command\n  -a <ARGS> [<ARGS> ...], --args <ARGS> [<ARGS> ...]\n                        Task arguments\n  -d <DIR>, --dir <DIR>\n                        Task working directory\n  -e <ENV> [<ENV> ...], --env <ENV> [<ENV> ...]\n                        Task environment variables\n  -i, --stdin           Task standard input\n  -o <STDOUT>, --stdout <STDOUT>\n                        Task standard output\n  -w <STDERR>, --stderr <STDERR>\n                        Task standard error\n```\n\n### watchmen start -h\n\n```shell\nusage: watchmen start [OPTIONS]\n\noptions:\n  -h, --help            show this help message and exit\n  -p <PATH>, --path <PATH>\n                        Task config directory\n  -r <REGEX>, --regex <REGEX>\n                        Task config filename regex pattern\n  -f <CONFIG>, --config <CONFIG>\n                        Task config file\n  -i <ID>, --id <ID>    Task id (unique)\n  -n <NAME>, --name <NAME>\n                        Task name (unique)\n  -m, --mat             Is match regex pattern by namae\n```\n\n### watchmen restart -h\n\n```shell\nusage: watchmen restart [OPTIONS]\n\noptions:\n  -h, --help            show this help message and exit\n  -p <PATH>, --path <PATH>\n                        Task config directory\n  -r <REGEX>, --regex <REGEX>\n                        Task config filename regex pattern\n  -f <CONFIG>, --config <CONFIG>\n                        Task config file\n  -i <ID>, --id <ID>    Task id (unique)\n  -n <NAME>, --name <NAME>\n                        Task name (unique)\n  -m, --mat             Is match regex pattern by namae\n```\n\n### watchmen stop -h\n\n```shell\nusage: watchmen stop [OPTIONS]\n\noptions:\n  -h, --help            show this help message and exit\n  -p <PATH>, --path <PATH>\n                        Task config directory\n  -r <REGEX>, --regex <REGEX>\n                        Task config filename regex pattern\n  -f <CONFIG>, --config <CONFIG>\n                        Task config file\n  -i <ID>, --id <ID>    Task id (unique)\n  -n <NAME>, --name <NAME>\n                        Task name (unique)\n  -m, --mat             Is match regex pattern by namae\n```\n\n### watchmen remove -h\n\n```shell\nusage: watchmen remove [OPTIONS]\n\noptions:\n  -h, --help            show this help message and exit\n  -p <PATH>, --path <PATH>\n                        Task config directory\n  -r <REGEX>, --regex <REGEX>\n                        Task config filename regex pattern\n  -f <CONFIG>, --config <CONFIG>\n                        Task config file\n  -i <ID>, --id <ID>    Task id (unique)\n  -n <NAME>, --name <NAME>\n                        Task name (unique)\n  -m, --mat             Is match regex pattern by namae\n```\n\n### watchmen pause -h\n\n```shell\nusage: watchmen pause [OPTIONS]\n\noptions:\n  -h, --help            show this help message and exit\n  -p <PATH>, --path <PATH>\n                        Task config directory\n  -r <REGEX>, --regex <REGEX>\n                        Task config filename regex pattern\n  -f <CONFIG>, --config <CONFIG>\n                        Task config file\n  -i <ID>, --id <ID>    Task id (unique)\n  -n <NAME>, --name <NAME>\n                        Task name (unique)\n  -m, --mat             Is match regex pattern by namae\n```\n\n### watchmen resume -h\n\n```shell\nusage: watchmen resume [OPTIONS]\n\noptions:\n  -h, --help            show this help message and exit\n  -p <PATH>, --path <PATH>\n                        Task config directory\n  -r <REGEX>, --regex <REGEX>\n                        Task config filename regex pattern\n  -f <CONFIG>, --config <CONFIG>\n                        Task config file\n  -i <ID>, --id <ID>    Task id (unique)\n  -n <NAME>, --name <NAME>\n                        Task name (unique)\n  -m, --mat             Is match regex pattern by namae\n```\n\n### watchmen list -h\n\n```shell\nusage: watchmen list [OPTIONS]\n\noptions:\n  -h, --help            show this help message and exit\n  -p <PATH>, --path <PATH>\n                        Task config directory\n  -r <REGEX>, --regex <REGEX>\n                        Task config filename regex pattern\n  -f <CONFIG>, --config <CONFIG>\n                        Task config file\n  -i <ID>, --id <ID>    Task id (unique)\n  -n <NAME>, --name <NAME>\n                        Task name (unique)\n  -R, --mat             Is match regex pattern by name\n  -m, --more            Show more info\n  -l, --less            Show less info\n```\n\n## License Apache Licence 2.0\n[License](./LICENSE)\n\n## Copyright ahriknow 2022\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Watchmen is a daemon process manager that for you manage and keep your application online 24/7",
    "version": "0.0.1",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0cb33d737235681ca410c6fdd1ed2633b2d871230d203d791d8f54cf40fc2cbf",
                "md5": "96b91ef0dab8e093d0833ebd44dcfd1b",
                "sha256": "a8050d8d26db37e7785a76697cde58eae6eada62868ce37b4ad6833ba3459f39"
            },
            "downloads": -1,
            "filename": "watchmenpy-0.0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "96b91ef0dab8e093d0833ebd44dcfd1b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.5",
            "size": 33062,
            "upload_time": "2024-01-03T06:37:20",
            "upload_time_iso_8601": "2024-01-03T06:37:20.061013Z",
            "url": "https://files.pythonhosted.org/packages/0c/b3/3d737235681ca410c6fdd1ed2633b2d871230d203d791d8f54cf40fc2cbf/watchmenpy-0.0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8aa27b55a3867fe5ed2891bcba868a1a2af2b50ba7f389892196b0e9c6a265d4",
                "md5": "55f50568d328ac04291f6ea69eb3e72d",
                "sha256": "2089223284c6e3fb03c6bb184b0eb68416f65f2573cb79bb04480407c2fb0499"
            },
            "downloads": -1,
            "filename": "watchmenpy-0.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "55f50568d328ac04291f6ea69eb3e72d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.5",
            "size": 25003,
            "upload_time": "2024-01-03T06:37:22",
            "upload_time_iso_8601": "2024-01-03T06:37:22.330334Z",
            "url": "https://files.pythonhosted.org/packages/8a/a2/7b55a3867fe5ed2891bcba868a1a2af2b50ba7f389892196b0e9c6a265d4/watchmenpy-0.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-03 06:37:22",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "watchmenpy"
}
        
Elapsed time: 0.19571s