# <img src="https://raw.githubusercontent.com/deadc0de6/dotdrop/master/assets/dotdrop.svg" width="100" height="100" align="left"> dotdrop
<br/>
<br/>
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/deadc0de6/dotdrop)](https://github.com/deadc0de6/dotdrop/releases/latest)
[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](http://www.gnu.org/licenses/gpl-3.0)
[![Tests Status](https://github.com/deadc0de6/dotdrop/workflows/tests/badge.svg?branch=master)](https://github.com/deadc0de6/dotdrop/actions)
[![Doc Status](https://readthedocs.org/projects/dotdrop/badge/?version=latest)](https://dotdrop.readthedocs.io/en/latest/?badge=latest)
[![codecov](https://codecov.io/github/deadc0de6/dotdrop/graph/badge.svg?token=SscGyrtgYL)](https://codecov.io/github/deadc0de6/dotdrop)
![CodeQL](https://github.com/deadc0de6/dotdrop/workflows/CodeQL/badge.svg)
[![Python](https://img.shields.io/pypi/pyversions/dotdrop.svg)](https://pypi.python.org/pypi/dotdrop)
[![PyPI](https://img.shields.io/pypi/v/dotdrop)](https://badge.fury.io/py/dotdrop)
[![Homebrew version](https://img.shields.io/homebrew/v/dotdrop)](https://formulae.brew.sh/formula/dotdrop)
[![AUR](https://img.shields.io/aur/version/dotdrop.svg)](https://aur.archlinux.org/packages/dotdrop)
[![Snap](https://badgen.net/snapcraft/v/dotdrop)](https://snapcraft.io/dotdrop)
[![Donate](https://img.shields.io/badge/donate-KoFi-blue.svg)](https://ko-fi.com/deadc0de6)
*Save your dotfiles once, deploy them everywhere*
[Dotdrop](https://github.com/deadc0de6/dotdrop) makes the management of dotfiles between different hosts easy.
It allows you to store your dotfiles in Git and automagically deploy
different versions of the same file on different setups.
It also allows to manage different *sets* of dotfiles.
For example, you can have a set of dotfiles for your home laptop and
a different set for your office desktop. Those sets may overlap, and different
versions of the same dotfiles can be deployed using different predefined *profiles*.
Or you may have a main set of dotfiles for your
everyday host and a subset you only need to deploy to temporary
hosts (cloud VM etc.) that may be using
a slightly different version of some of the dotfiles.
Features:
* Sync once every dotfile in Git for different usages
* Allow dotfile templating
* Dynamically generated dotfile contents with pre-defined variables
* Comparison between deployed and stored dotfiles
* Handling multiple profiles with different sets of dotfiles
* Easily import and update dotfiles
* Handle files and directories
* Support symlinking of dotfiles
* Associate actions to the deployment of specific dotfiles
* Associate transformations for storing encrypted/compressed dotfiles
* Provide solutions for handling dotfiles containing sensitive information
Check the [example](#getting-started), the [documentation](https://dotdrop.readthedocs.io/) or
how [people are using dotdrop](https://dotdrop.readthedocs.io/en/latest/misc/people-using-dotdrop/)
for more.
Quick start:
```bash
## using dotdrop as a submodule
mkdir dotfiles && cd dotfiles
git init
git submodule add https://github.com/deadc0de6/dotdrop.git
pip3 install -r dotdrop/requirements.txt --user
./dotdrop/bootstrap.sh
./dotdrop.sh --help
```
## Why dotdrop?
There exist many tools to manage dotfiles; however, not
many allow to deploy different versions of the same dotfile
on different hosts. Moreover, dotdrop allows to specify the
set of dotfiles that need to be deployed for a specific profile.
See the [example](#getting-started) for a concrete example of
why [dotdrop](https://github.com/deadc0de6/dotdrop) rocks.
---
**Table of Contents**
* [Installation](#installation)
* [Getting started](#getting-started)
* [Documentation](#documentation)
* [Thank you](#thank-you)
# Installation
See the [installation instructions](https://dotdrop.readthedocs.io/en/latest/installation/).
Dotdrop is available on:
* [PyPI](https://pypi.org/project/dotdrop/)
* [Homebrew](https://formulae.brew.sh/formula/dotdrop)
* [AUR (stable)](https://aur.archlinux.org/packages/dotdrop/)
* [AUR (git version)](https://aur.archlinux.org/packages/dotdrop-git/)
* [Snapcraft](https://snapcraft.io/dotdrop)
* [Pacstall](https://github.com/pacstall/pacstall-programs/blob/master/packages/dotdrop/dotdrop.pacscript)
# Getting started
[Create a new repository](https://dotdrop.readthedocs.io/en/latest/getting-started/#repository-setup)
to store your dotfiles with dotdrop. *Init* or *clone* that new repository,
[install dotdrop](https://dotdrop.readthedocs.io/en/latest/installation/) and
generate a default config file [generate config file](https://dotdrop.readthedocs.io/en/latest/usage/#generate-a-default-config)
Then import any dotfiles (files or directories) you want to manage with dotdrop.
You can either use the default profile (which resolves to the *hostname* of the host
you are running dotdrop on) or provide it explicitly using the switch `-p`/`--profile`.
Import dotfiles on host *home*:
```bash
$ dotdrop import ~/.vimrc ~/.xinitrc ~/.config/polybar
```
Dotdrop does two things:
* Copy the dotfiles to the *dotpath* directory
(defined in `config.yaml`, defaults to *dotfiles*)
* Create the associated entries in the `config.yaml` file
(in the `dotfiles` and `profiles` entries)
Your config file will look like something similar to this:
```yaml
config:
backup: true
banner: true
create: true
dotpath: dotfiles
ignoreempty: false
keepdot: false
longkey: false
showdiff: false
workdir: ~/.config/dotdrop
dotfiles:
d_polybar:
dst: ~/.config/polybar
src: config/polybar
f_vimrc:
dst: ~/.vimrc
src: vimrc
f_xinitrc:
dst: ~/.xinitrc
src: xinitrc
profiles:
home:
dotfiles:
- f_vimrc
- f_xinitrc
- d_polybar
```
For a description of the different fields and their use,
see the [config doc](https://dotdrop.readthedocs.io/en/latest/config/config-config/).
Commit and push your changes with git.
Then go to another host where your dotfiles need to be managed as well,
clone the previously set up repository,
and compare the local dotfiles with the ones stored in dotdrop:
```bash
$ dotdrop compare --profile=home
```
Now you might want to adapt the `config.yaml` file to your liking on
that second host. Let's say, for example, that you only want `d_polybar` and
`f_xinitrc` to be deployed on that second host. You would then change your config
to something like this (assuming that the second host's hostname is *office*):
```yaml
…
profiles:
home:
dotfiles:
- f_vimrc
- f_xinitrc
- d_polybar
office:
dotfiles:
- f_xinitrc
- d_polybar
```
Then adapt any dotfile using the [templating](https://dotdrop.readthedocs.io/en/latest/template/templating/)
feature (if needed). For example, you might want different fonts sizes in Polybar for each host.
Edit `<dotpath>/config/polybar/config`:
```bash
…
{%@@ if profile == "home" @@%}
font0 = sans:size=10;0
{%@@ elif profile == "office" @@%}
font0 = sans:size=14;0
{%@@ endif @@%}
font1 = "Material Design Icons:style=Regular:size=14;0"
font2 = "unifont:size=6;0"
…
```
You also want to have the correct interface set on the wireless network in
the Polybar config.
Add a [variable](https://dotdrop.readthedocs.io/en/latest/config/config-variables/)
to the config file (In the below example, *home* gets the default `wlan0` value for
the variable `wifi` while *office* gets `wlp2s0`):
```yaml
…
variables:
wifi: "wlan0"
…
profiles:
home:
dotfiles:
- f_vimrc
- f_xinitrc
- d_polybar
office:
dotfiles:
- f_xinitrc
- d_polybar
variables:
wifi: "wlp2s0"
```
Then you can adapt the Polybar config file so that the
variable `wifi` gets correctly replaced during installation:
```bash
[module/wireless-network]
type = internal/network
interface = {{@@ wifi @@}}
```
Also, the home computer is running [awesomeWM](https://awesomewm.org/),
and the office computer [bspwm](https://github.com/baskerville/bspwm).
The `~/.xinitrc` file will therefore be different while still sharing some lines.
Edit `<dotpath>/xinitrc`:
```bash
#!/bin/bash
# load Xresources
userresources=$HOME/.Xresources
if [ -f "$userresources" ]; then
xrdb -merge "$userresources" &
fi
# launch the wm
{%@@ if profile == "home" @@%}
exec awesome
{%@@ elif profile == "office" @@%}
exec bspwm
{%@@ endif @@%}
```
Finally you want everything installed with the *office* profile
to be logged; you thus add an action to the config file:
```yaml
…
actions:
loginstall: "echo {{@@ _dotfile_abs_src @@}} installed to {{@@ _dotfile_abs_dst @@}} >> {0}"
…
profiles:
home:
dotfiles:
- f_vimrc
- f_xinitrc
- d_polybar
office:
dotfiles:
- f_xinitrc
- d_polybar
variables:
wifi: "wlp2s0"
actions:
- loginstall "/tmp/dotdrop-installation.log"
```
When done, you can install your dotfiles using:
```bash
$ dotdrop install
```
If you are unsure, you can always run `dotdrop compare` to see
how your local dotfiles would be updated by dotdrop before running
`install` or you could run install with `--dry`.
That's it, a single repository with all your dotfiles for your different hosts.
For more, see the [docs](https://dotdrop.readthedocs.io):
* [Create actions](https://dotdrop.readthedocs.io/en/latest/config/config-actions/)
* [Use transformations](https://dotdrop.readthedocs.io/en/latest/config/config-transformations/)
* [Use variables](https://dotdrop.readthedocs.io/en/latest/config/config-variables/)
* [Symlink dotfiles](https://dotdrop.readthedocs.io/en/latest/howto/symlink-dotfiles/)
* [and more](https://dotdrop.readthedocs.io/en/latest/howto/howto/)
# Documentation
Dotdrop's documentation is hosted on [Read the Docs](https://dotdrop.readthedocs.io/en/latest/).
# Thank you
If you like dotdrop, [buy me a coffee](https://ko-fi.com/deadc0de6).
# Contribution
If you are having trouble installing or using dotdrop,
[open an issue](https://github.com/deadc0de6/dotdrop/issues).
If you want to contribute, feel free to do a PR (please follow PEP8).
Have a look at the
[contribution guidelines](https://github.com/deadc0de6/dotdrop/blob/master/CONTRIBUTING.md).
# License
This project is licensed under the terms of the GPLv3 license.
Raw data
{
"_id": null,
"home_page": "https://github.com/deadc0de6/dotdrop",
"name": "dotdrop",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3",
"maintainer_email": null,
"keywords": "dotfiles jinja2",
"author": "deadc0de6",
"author_email": "deadc0de6@foo.bar",
"download_url": "https://files.pythonhosted.org/packages/66/a7/8c8f1d7268bcb0ae3f7e43d8b0da03ad0c1336baabbd4b9ce88a4b1d7b36/dotdrop-1.15.0.tar.gz",
"platform": null,
"description": "# <img src=\"https://raw.githubusercontent.com/deadc0de6/dotdrop/master/assets/dotdrop.svg\" width=\"100\" height=\"100\" align=\"left\"> dotdrop\n<br/>\n<br/>\n\n[![GitHub release (latest by date)](https://img.shields.io/github/v/release/deadc0de6/dotdrop)](https://github.com/deadc0de6/dotdrop/releases/latest)\n[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](http://www.gnu.org/licenses/gpl-3.0)\n\n[![Tests Status](https://github.com/deadc0de6/dotdrop/workflows/tests/badge.svg?branch=master)](https://github.com/deadc0de6/dotdrop/actions)\n[![Doc Status](https://readthedocs.org/projects/dotdrop/badge/?version=latest)](https://dotdrop.readthedocs.io/en/latest/?badge=latest)\n[![codecov](https://codecov.io/github/deadc0de6/dotdrop/graph/badge.svg?token=SscGyrtgYL)](https://codecov.io/github/deadc0de6/dotdrop)\n![CodeQL](https://github.com/deadc0de6/dotdrop/workflows/CodeQL/badge.svg)\n\n[![Python](https://img.shields.io/pypi/pyversions/dotdrop.svg)](https://pypi.python.org/pypi/dotdrop)\n\n[![PyPI](https://img.shields.io/pypi/v/dotdrop)](https://badge.fury.io/py/dotdrop)\n[![Homebrew version](https://img.shields.io/homebrew/v/dotdrop)](https://formulae.brew.sh/formula/dotdrop)\n[![AUR](https://img.shields.io/aur/version/dotdrop.svg)](https://aur.archlinux.org/packages/dotdrop)\n[![Snap](https://badgen.net/snapcraft/v/dotdrop)](https://snapcraft.io/dotdrop)\n\n[![Donate](https://img.shields.io/badge/donate-KoFi-blue.svg)](https://ko-fi.com/deadc0de6)\n\n*Save your dotfiles once, deploy them everywhere*\n\n[Dotdrop](https://github.com/deadc0de6/dotdrop) makes the management of dotfiles between different hosts easy.\nIt allows you to store your dotfiles in Git and automagically deploy\ndifferent versions of the same file on different setups.\n\nIt also allows to manage different *sets* of dotfiles.\nFor example, you can have a set of dotfiles for your home laptop and\na different set for your office desktop. Those sets may overlap, and different\nversions of the same dotfiles can be deployed using different predefined *profiles*.\nOr you may have a main set of dotfiles for your\neveryday host and a subset you only need to deploy to temporary\nhosts (cloud VM etc.) that may be using\na slightly different version of some of the dotfiles.\n\nFeatures:\n\n* Sync once every dotfile in Git for different usages\n* Allow dotfile templating\n* Dynamically generated dotfile contents with pre-defined variables\n* Comparison between deployed and stored dotfiles\n* Handling multiple profiles with different sets of dotfiles\n* Easily import and update dotfiles\n* Handle files and directories\n* Support symlinking of dotfiles\n* Associate actions to the deployment of specific dotfiles\n* Associate transformations for storing encrypted/compressed dotfiles\n* Provide solutions for handling dotfiles containing sensitive information\n\nCheck the [example](#getting-started), the [documentation](https://dotdrop.readthedocs.io/) or\nhow [people are using dotdrop](https://dotdrop.readthedocs.io/en/latest/misc/people-using-dotdrop/)\nfor more.\n\nQuick start:\n```bash\n## using dotdrop as a submodule\nmkdir dotfiles && cd dotfiles\ngit init\ngit submodule add https://github.com/deadc0de6/dotdrop.git\npip3 install -r dotdrop/requirements.txt --user\n./dotdrop/bootstrap.sh\n./dotdrop.sh --help\n```\n\n## Why dotdrop?\n\nThere exist many tools to manage dotfiles; however, not\nmany allow to deploy different versions of the same dotfile\non different hosts. Moreover, dotdrop allows to specify the\nset of dotfiles that need to be deployed for a specific profile.\n\nSee the [example](#getting-started) for a concrete example of\nwhy [dotdrop](https://github.com/deadc0de6/dotdrop) rocks.\n\n---\n\n**Table of Contents**\n\n* [Installation](#installation)\n* [Getting started](#getting-started)\n* [Documentation](#documentation)\n* [Thank you](#thank-you)\n\n# Installation\n\nSee the [installation instructions](https://dotdrop.readthedocs.io/en/latest/installation/).\n\nDotdrop is available on:\n\n* [PyPI](https://pypi.org/project/dotdrop/)\n* [Homebrew](https://formulae.brew.sh/formula/dotdrop)\n* [AUR (stable)](https://aur.archlinux.org/packages/dotdrop/)\n* [AUR (git version)](https://aur.archlinux.org/packages/dotdrop-git/)\n* [Snapcraft](https://snapcraft.io/dotdrop)\n* [Pacstall](https://github.com/pacstall/pacstall-programs/blob/master/packages/dotdrop/dotdrop.pacscript)\n\n# Getting started\n\n[Create a new repository](https://dotdrop.readthedocs.io/en/latest/getting-started/#repository-setup)\nto store your dotfiles with dotdrop. *Init* or *clone* that new repository,\n[install dotdrop](https://dotdrop.readthedocs.io/en/latest/installation/) and\ngenerate a default config file [generate config file](https://dotdrop.readthedocs.io/en/latest/usage/#generate-a-default-config)\n\nThen import any dotfiles (files or directories) you want to manage with dotdrop.\nYou can either use the default profile (which resolves to the *hostname* of the host\nyou are running dotdrop on) or provide it explicitly using the switch `-p`/`--profile`.\n\nImport dotfiles on host *home*:\n```bash\n$ dotdrop import ~/.vimrc ~/.xinitrc ~/.config/polybar\n```\n\nDotdrop does two things:\n\n* Copy the dotfiles to the *dotpath* directory\n (defined in `config.yaml`, defaults to *dotfiles*)\n* Create the associated entries in the `config.yaml` file\n (in the `dotfiles` and `profiles` entries)\n\nYour config file will look like something similar to this:\n```yaml\nconfig:\n backup: true\n banner: true\n create: true\n dotpath: dotfiles\n ignoreempty: false\n keepdot: false\n longkey: false\n showdiff: false\n workdir: ~/.config/dotdrop\ndotfiles:\n d_polybar:\n dst: ~/.config/polybar\n src: config/polybar\n f_vimrc:\n dst: ~/.vimrc\n src: vimrc\n f_xinitrc:\n dst: ~/.xinitrc\n src: xinitrc\nprofiles:\n home:\n dotfiles:\n - f_vimrc\n - f_xinitrc\n - d_polybar\n```\nFor a description of the different fields and their use,\nsee the [config doc](https://dotdrop.readthedocs.io/en/latest/config/config-config/).\n\nCommit and push your changes with git.\n\nThen go to another host where your dotfiles need to be managed as well,\nclone the previously set up repository,\nand compare the local dotfiles with the ones stored in dotdrop:\n```bash\n$ dotdrop compare --profile=home\n```\n\nNow you might want to adapt the `config.yaml` file to your liking on\nthat second host. Let's say, for example, that you only want `d_polybar` and\n`f_xinitrc` to be deployed on that second host. You would then change your config\nto something like this (assuming that the second host's hostname is *office*):\n```yaml\n\u2026\nprofiles:\n home:\n dotfiles:\n - f_vimrc\n - f_xinitrc\n - d_polybar\n office:\n dotfiles:\n - f_xinitrc\n - d_polybar\n```\n\nThen adapt any dotfile using the [templating](https://dotdrop.readthedocs.io/en/latest/template/templating/)\nfeature (if needed). For example, you might want different fonts sizes in Polybar for each host.\n\nEdit `<dotpath>/config/polybar/config`:\n```bash\n\u2026\n{%@@ if profile == \"home\" @@%}\nfont0 = sans:size=10;0\n{%@@ elif profile == \"office\" @@%}\nfont0 = sans:size=14;0\n{%@@ endif @@%}\nfont1 = \"Material Design Icons:style=Regular:size=14;0\"\nfont2 = \"unifont:size=6;0\"\n\u2026\n```\n\nYou also want to have the correct interface set on the wireless network in\nthe Polybar config.\n\nAdd a [variable](https://dotdrop.readthedocs.io/en/latest/config/config-variables/)\nto the config file (In the below example, *home* gets the default `wlan0` value for\nthe variable `wifi` while *office* gets `wlp2s0`):\n```yaml\n\u2026\nvariables:\n wifi: \"wlan0\"\n\u2026\nprofiles:\n home:\n dotfiles:\n - f_vimrc\n - f_xinitrc\n - d_polybar\n office:\n dotfiles:\n - f_xinitrc\n - d_polybar\n variables:\n wifi: \"wlp2s0\"\n```\n\nThen you can adapt the Polybar config file so that the\nvariable `wifi` gets correctly replaced during installation:\n```bash\n[module/wireless-network]\ntype = internal/network\ninterface = {{@@ wifi @@}}\n```\n\nAlso, the home computer is running [awesomeWM](https://awesomewm.org/),\nand the office computer [bspwm](https://github.com/baskerville/bspwm).\nThe `~/.xinitrc` file will therefore be different while still sharing some lines.\n\nEdit `<dotpath>/xinitrc`:\n```bash\n#!/bin/bash\n\n# load Xresources\nuserresources=$HOME/.Xresources\nif [ -f \"$userresources\" ]; then\n xrdb -merge \"$userresources\" &\nfi\n\n# launch the wm\n{%@@ if profile == \"home\" @@%}\nexec awesome\n{%@@ elif profile == \"office\" @@%}\nexec bspwm\n{%@@ endif @@%}\n```\n\nFinally you want everything installed with the *office* profile\nto be logged; you thus add an action to the config file:\n```yaml\n\u2026\nactions:\n loginstall: \"echo {{@@ _dotfile_abs_src @@}} installed to {{@@ _dotfile_abs_dst @@}} >> {0}\"\n\u2026\nprofiles:\n home:\n dotfiles:\n - f_vimrc\n - f_xinitrc\n - d_polybar\n office:\n dotfiles:\n - f_xinitrc\n - d_polybar\n variables:\n wifi: \"wlp2s0\"\n actions:\n - loginstall \"/tmp/dotdrop-installation.log\"\n```\n\nWhen done, you can install your dotfiles using:\n```bash\n$ dotdrop install\n```\n\nIf you are unsure, you can always run `dotdrop compare` to see\nhow your local dotfiles would be updated by dotdrop before running\n`install` or you could run install with `--dry`.\n\nThat's it, a single repository with all your dotfiles for your different hosts.\n\nFor more, see the [docs](https://dotdrop.readthedocs.io):\n\n* [Create actions](https://dotdrop.readthedocs.io/en/latest/config/config-actions/)\n* [Use transformations](https://dotdrop.readthedocs.io/en/latest/config/config-transformations/)\n* [Use variables](https://dotdrop.readthedocs.io/en/latest/config/config-variables/)\n* [Symlink dotfiles](https://dotdrop.readthedocs.io/en/latest/howto/symlink-dotfiles/)\n* [and more](https://dotdrop.readthedocs.io/en/latest/howto/howto/)\n\n# Documentation\n\nDotdrop's documentation is hosted on [Read the Docs](https://dotdrop.readthedocs.io/en/latest/).\n\n# Thank you\n\nIf you like dotdrop, [buy me a coffee](https://ko-fi.com/deadc0de6).\n\n# Contribution\n\nIf you are having trouble installing or using dotdrop,\n[open an issue](https://github.com/deadc0de6/dotdrop/issues).\n\nIf you want to contribute, feel free to do a PR (please follow PEP8).\nHave a look at the\n[contribution guidelines](https://github.com/deadc0de6/dotdrop/blob/master/CONTRIBUTING.md).\n\n# License\n\nThis project is licensed under the terms of the GPLv3 license.\n",
"bugtrack_url": null,
"license": "GPLv3",
"summary": "Save your dotfiles once, deploy them everywhere",
"version": "1.15.0",
"project_urls": {
"Download": "https://github.com/deadc0de6/dotdrop/archive/v1.15.0.tar.gz",
"Homepage": "https://github.com/deadc0de6/dotdrop"
},
"split_keywords": [
"dotfiles",
"jinja2"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "49d3935b49031814473dccd13fdc704f06bddfb6c8ef8dee90aeb01a094b2ee0",
"md5": "40ddfecb6ea71f8d874529e8a52b1bd5",
"sha256": "f26ba589e0777fea87860408b51639a4da2e6d40a0efc40e2cc9b9a9c9b90232"
},
"downloads": -1,
"filename": "dotdrop-1.15.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "40ddfecb6ea71f8d874529e8a52b1bd5",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3",
"size": 82839,
"upload_time": "2024-12-16T09:11:50",
"upload_time_iso_8601": "2024-12-16T09:11:50.774374Z",
"url": "https://files.pythonhosted.org/packages/49/d3/935b49031814473dccd13fdc704f06bddfb6c8ef8dee90aeb01a094b2ee0/dotdrop-1.15.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "66a78c8f1d7268bcb0ae3f7e43d8b0da03ad0c1336baabbd4b9ce88a4b1d7b36",
"md5": "294da96a870180befafc1d7063c67b27",
"sha256": "7e7b5558a66ac514c3861e0bb31262d5972bc15fc97c1402aef8cccffd0bde61"
},
"downloads": -1,
"filename": "dotdrop-1.15.0.tar.gz",
"has_sig": false,
"md5_digest": "294da96a870180befafc1d7063c67b27",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3",
"size": 77399,
"upload_time": "2024-12-16T09:11:51",
"upload_time_iso_8601": "2024-12-16T09:11:51.986369Z",
"url": "https://files.pythonhosted.org/packages/66/a7/8c8f1d7268bcb0ae3f7e43d8b0da03ad0c1336baabbd4b9ce88a4b1d7b36/dotdrop-1.15.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-16 09:11:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "deadc0de6",
"github_project": "dotdrop",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "Jinja2",
"specs": []
},
{
"name": "docopt-ng",
"specs": []
},
{
"name": "ruamel.yaml",
"specs": []
},
{
"name": "python-magic",
"specs": []
},
{
"name": "packaging",
"specs": []
},
{
"name": "requests",
"specs": []
},
{
"name": "tomli",
"specs": []
},
{
"name": "tomli_w",
"specs": []
},
{
"name": "distro",
"specs": []
}
],
"lcname": "dotdrop"
}