copy-to


Namecopy-to JSON
Version 1.3.42 PyPI version JSON
download
home_pageNone
SummaryA little commandline tool to copy and paste multiple files and directories to single directory with use of configuration
upload_time2024-05-22 01:45:48
maintainerNone
docs_urlNone
authorNone
requires_python>=3.7
licenseNone
keywords copy-to setuptools development
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ## Copy-to

A little python script I use in conjunction with git so you can easily copy (config) files located outside of a git repository to one (or to wherever you want to). Useful for configuration files.  

Available on with pip/pipx: https://pypi.org/project/copy-to/  

Depends on [argcomplete](https://pypi.org/project/argcomplete/), [GitPython](https://pypi.org/project/GitPython/), [prompt_toolkit](https://pypi.org/project/prompt_toolkit/)  

## Install it with:  

Linux:  
```
sudo apt install pipx / sudo pacman -S python-pipx
pipx install copy-to
```  

Windows Powershell:  
```
winget install python3
python -m pip install --user pipx
python -m pipx ensurepath
python -m pipx install copy-to
```  

Then, restart you shell.  

For autocompletion on Windows Powershell v5.1, first run:  
```
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
```  

Then, for Powershell autocompletion in general, run:  
```
mkdir -p $HOME\Documents\WindowsPowerShell\Modules
python ((where.exe register-python-argcomplete).Split([Environment]::NewLine) | Select -First 1) --shell powershell copy-to.exe > $HOME\Documents\WindowsPowerShell\Modules/copy-to.psm1
```

Then check your Profile folder using `echo $PSHOME`, and (using for example notepad) open a file in that path called `Profile.ps1`. This requires administrator access.   
For powershell v5.1, this is `C:\Windows\System32\WindowsPowerShell\v1.0\Profile.ps1`. Open notepad as an administrator and create the file if it doesn't exist yet.  
Then in that file, put this:  
```
Import-Module $HOME\Documents\WindowsPowerShell\Modules/copy-to.psm1
```  

For Linux / MacOs, try running it once if autocompletions aren't working  

You can also run:  
```
sudo activate-global-python-argcomplete
```  

## How to use it:  

Add a pairset of destination folder - source files and/or directories with  
```
copy-to add myname destination_folder sourcefile1 (sourcefolder1 sourcefile2 sourcefile3 sourcefolder2/*) ...
```  

Copy the files to their destination by running  
```
copy-to run myname1 (myname2)
```  

Or copy the files back to source by running  
```
copy-to run-reverse myname1 (myname2)
```  

When the destination is missing, a prompt will ask you if you want to create the destination folder.  

Run and run-reverse can also run without arguments when git is installed and present in a git local repository that has configured copy-to. This is so it can be hooked to a git macro more easily, f.ex. with an alias/function  

Windows Powershell: (put in your profile - `notepad $PSHOME\Profile.ps1`)  
```
function git-status { copy-to.exe run && git.exe status }
```  

Linux bash (put in your .bashrc - `nano ~/.bashrc`):  
```
alias git-status="copy-to run && git status"
```  

or for those who use it, on startup of [Lazygit](https://github.com/jesseduffield/lazygit):  

Windows Powershell:  
```
function lazygit { copy-to.exe run && lazygit.exe }
```  

Linux bash:  
```
alias lazygit="copy-to run && lazygit"
```  

Local git config:  
```
[copy-to]  
    run = myname1 myname2  
    file = myconf.json
```  
This can be setup with `copy-to add myname` and `copy-to set-git myname` or  
`copy-to add myname` and `copy-to run`/`copy-to run-reverse` after wich a prompt will ask if you want to set it up with git. Both `copy-to run` and `copy-to run-reverse` will run using the same `run` arguments possibly given in a local gitconfig. A custom conf.json can be also be setup and will always take precedence over other file options when set up.  


## Quick setup for firefox dotfiles  

This will setup a git repository for your firefox configuration files using copy-to on Windows.  

### Install git, initialize git repository and setup copy-to

We start with installing git if it's not installed already.  

```
winget install Git.Git
```  

(Optional: get latest version of PowerShell)  

```
winget install Microsoft.PowerShell
```  

![Setup git](https://raw.githubusercontent.com/excited-bore/copy-to/main/images/Setup_git.gif "Setup git")  

This guide shows you how to use copy-to to and git to backup (and restore) your firefox profile following the [officical mozilla docs](https://support.mozilla.org/en-US/kb/back-and-restore-information-firefox-profiles)

First we create a local git repository and cd into it.  

We can make this repostitory for firefox only `firefox`, or make it for all our dotfiles `dotfiles`  

```
git init dotfiles  
cd dotfiles
```  

Now, we could just start and copy-to will put all your configurations in the default location (`$HOME/.config/copy-to/confs.json`), or we could set it up so our configuration file is also in our git repository.  

Since we're in a git repostitory, we could accomplish this using `copy-to set-git file confs.json` and copy-to will make the config file `confs.json` in our current folder while also using this specific file to read files and folders from when we `cd` into this git repository. You can see this whether or not this is done by running `git config -e`.   

We could change the confs.json file from the default path by setting the environment variable `COPY_TO` or by using the `--file` parameter.  

Then we add everything in the firefox 'profile' folder programmatically using copy-to:  
    - First we open the profile folder by opening firefox-> Help-> More Troubleshooting Information-> Open 'Profile' Folder and copy the folder path.  
    - Then we run `copy-to add firefox firefox ` to add a the target folder but without the source files. This will also create a subfolder `firefox` in our git repository wich will be our destination.  

We can handpick what parts of our firefox config we want to backup, for example to keep only our bookmarks, we could store <em>places.sqlite</em>, <em>bookmarksbackups/</em> and <em>favicons.sqlite</em> (See [this](https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data)) from  
`"C:\Users\username\AppData\Roaming\Mozilla\Firefox\Profiles\random_release\"`.  
Don't forget to *close* firefox <em>first</em> and change this folder to *your* <em>profile folder</em> and/or <em>username</em>.  

```
copy-to add-source firefox "C:\Users\username\AppData\Roaming\Mozilla\Firefox\Profiles\random_release\places.sqlite" "C:\Users\username\AppData\Roaming\Mozilla\Firefox\Profiles\random_release\bookmarksbackups/" "C:\Users\username\AppData\Roaming\Mozilla\Firefox\Profiles\random_release\favicons.sqlite"
```  

Folders added to source will automatically copy recursively.  

On the other hand, we could also iterate over each file in our profile folder (dont forget to replace the path with the path you copied earlier):  

```
Get-ChildItem "C:\Users\username\AppData\Roaming\Mozilla\Firefox\Profiles\random_release" -Filter * |  
ForEach-Object {copy-to add-source firefox "C:\Users\username\AppData\Roaming\Mozilla\Firefox\Profiles\random_release\$_" }
```  

For Linux (and presumably MacOs), this would be:
```
copy-to add-source firefox /home/username/.mozilla/firefox/random_release/*
```  
If you get an error along the lines of `The file/directory /home/username/.mozilla/firefox/9mw2xroo.default-release/lock does not exist!`, try removing the file and running the command again.  

Then we run `copy-to run firefox` to copy the files to the target folder.  

Now that everything we want related to firefox is inside our local git repository, we can start setting up our remote repository.  

### Setup ssh for github  

![Setup git_ssh](https://raw.githubusercontent.com/excited-bore/copy-to/main/images/Setup_git_ssh.gif "Setup git ssh")  

Following the instructions on [Github](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent):  
    - We create a public/private keypair using `ssh-keygen -t ed25519`. This will save our keypair inside `C:\Users\username\.ssh\id_ed25519` and `C:\Users\username\.ssh\id_ed25519.pub` respectively.  
    - Then we open up an administrator powershell and run:  

```
Get-Service -Name ssh-agent | Set-Service -StartupType Manual  
Start-Service ssh-agent
```  

to startup the ssh-agent.  
    - Back inside a regular powershell, we add our private key using  
    `ssh-add C:\Users\username\.ssh\id_ed25519`.  
    - Then we add the ssh key to our github account and test our connecting using `ssh -T git@github.com`.  

### Setup remote repository

![Setup git_remote](https://raw.githubusercontent.com/excited-bore/copy-to/main/images/Setup_git_remote.gif "Setup git remote")  

First we make sure we've made our first commit adding every new change:  

```
git add --all  
git commit -m "Initial commit"
```  

Next we got to our github account and create a new private repository.  
After that, we configure the remote repository using `git remote add origin git@github.com/username/dotfiles.git`.  
Then if everything went well, we can just push to our remote repository using `git push -u origin main`.  

We can keep this up-to-date regularly by running `copy-to run firefox`, `cd C:/Users/username/dotfiles` and `git push` whenever we make changes.  

Now, if we ever need to freshly install firefox, we have a backup ready to go that we can use by running `copy-to run-reverse`.  
Or, if we ever decide to use a different operating system, we clone our repository after installing firefox and relocate the firefox profile folder. Then we run:  
```
copy-to set-file file confs.json
copy-to reset-destination firefox "new-profile-folder"  
copy-to run-reverse firefox
```  

We have reconfigure our file because git doesn't upload the local .git/ files.  
As an alternative for backing up application configurationfiles accross operating systems, you could add multiple configuration names for each os. (`copy-to add firefox-windows .. ` / `copy-to add firefox-linux ..`)  

## Other commands

List configured paths and files with  
```
copy-to list myname/mygroupname/all/all-no-group/groups/all-groups/names/groupnames/all-names
```  
or as a flag  
```
copy-to --list othercommand
```  
'all-no-group' and 'groups' to list all regular configs and groups respectively  
'names' and 'groupnames' to list just the regular names and groupnames respectively  
You can also use 'all' to list/run all known configurations  


Delete set of dest/src by name with  
```
copy-to delete myname1 (myname2)
```  

Add sources with  
```
copy-to add-source myname folder1 file1
```  

Delete source by index with  
```
copy-to delete-source myname 1 4 7
```  

Reset source and destination folders  
```
copy-to reset-source myname
copy-to reset-destination myname newDest
```  

Set the path of source files/folders by index with  
```
copy-to set-source-path myname1 /home/user/ 1 2-4  
```  

Groups are based on names. For copying to multiple directories in one go.  
Groupnames 'group'/'all' cannot be used.  

Add groupname  
```
copy-to add-group mygroupname myname1 myname2
```  

Delete groupname
```
copy-to delete-group mygroupname
```  

Add name to group  
```
copy-to add-to-group mygroupname myname1 myname2
```  

Delete name from group  
```
copy-to delete-from-group mygroupname myname1 myname2
```  

At default the configuration file is located at `~/.config/copy-to/confs.json`, but you can set a environment variable `COPY_TO` to change this, or pass a `-f, --file` flag.  

Mac not tested

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "copy-to",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "copy-to, setuptools, development",
    "author": null,
    "author_email": "Stan Nys <stan96@duck.com>",
    "download_url": "https://files.pythonhosted.org/packages/68/eb/9294e4b65dbe21f79d7b264cb8bf773beee630f5a9dacd9b67d53a04eb4f/copy_to-1.3.42.tar.gz",
    "platform": null,
    "description": "## Copy-to\n\nA little python script I use in conjunction with git so you can easily copy (config) files located outside of a git repository to one (or to wherever you want to). Useful for configuration files.  \n\nAvailable on with pip/pipx: https://pypi.org/project/copy-to/  \n\nDepends on [argcomplete](https://pypi.org/project/argcomplete/), [GitPython](https://pypi.org/project/GitPython/), [prompt_toolkit](https://pypi.org/project/prompt_toolkit/)  \n\n## Install it with:  \n\nLinux:  \n```\nsudo apt install pipx / sudo pacman -S python-pipx\npipx install copy-to\n```  \n\nWindows Powershell:  \n```\nwinget install python3\npython -m pip install --user pipx\npython -m pipx ensurepath\npython -m pipx install copy-to\n```  \n\nThen, restart you shell.  \n\nFor autocompletion on Windows Powershell v5.1, first run:  \n```\nSet-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted\n```  \n\nThen, for Powershell autocompletion in general, run:  \n```\nmkdir -p $HOME\\Documents\\WindowsPowerShell\\Modules\npython ((where.exe register-python-argcomplete).Split([Environment]::NewLine) | Select -First 1) --shell powershell copy-to.exe > $HOME\\Documents\\WindowsPowerShell\\Modules/copy-to.psm1\n```\n\nThen check your Profile folder using `echo $PSHOME`, and (using for example notepad) open a file in that path called `Profile.ps1`. This requires administrator access.   \nFor powershell v5.1, this is `C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\Profile.ps1`. Open notepad as an administrator and create the file if it doesn't exist yet.  \nThen in that file, put this:  \n```\nImport-Module $HOME\\Documents\\WindowsPowerShell\\Modules/copy-to.psm1\n```  \n\nFor Linux / MacOs, try running it once if autocompletions aren't working  \n\nYou can also run:  \n```\nsudo activate-global-python-argcomplete\n```  \n\n## How to use it:  \n\nAdd a pairset of destination folder - source files and/or directories with  \n```\ncopy-to add myname destination_folder sourcefile1 (sourcefolder1 sourcefile2 sourcefile3 sourcefolder2/*) ...\n```  \n\nCopy the files to their destination by running  \n```\ncopy-to run myname1 (myname2)\n```  \n\nOr copy the files back to source by running  \n```\ncopy-to run-reverse myname1 (myname2)\n```  \n\nWhen the destination is missing, a prompt will ask you if you want to create the destination folder.  \n\nRun and run-reverse can also run without arguments when git is installed and present in a git local repository that has configured copy-to. This is so it can be hooked to a git macro more easily, f.ex. with an alias/function  \n\nWindows Powershell: (put in your profile - `notepad $PSHOME\\Profile.ps1`)  \n```\nfunction git-status { copy-to.exe run && git.exe status }\n```  \n\nLinux bash (put in your .bashrc - `nano ~/.bashrc`):  \n```\nalias git-status=\"copy-to run && git status\"\n```  \n\nor for those who use it, on startup of [Lazygit](https://github.com/jesseduffield/lazygit):  \n\nWindows Powershell:  \n```\nfunction lazygit { copy-to.exe run && lazygit.exe }\n```  \n\nLinux bash:  \n```\nalias lazygit=\"copy-to run && lazygit\"\n```  \n\nLocal git config:  \n```\n[copy-to]  \n    run = myname1 myname2  \n    file = myconf.json\n```  \nThis can be setup with `copy-to add myname` and `copy-to set-git myname` or  \n`copy-to add myname` and `copy-to run`/`copy-to run-reverse` after wich a prompt will ask if you want to set it up with git. Both `copy-to run` and `copy-to run-reverse` will run using the same `run` arguments possibly given in a local gitconfig. A custom conf.json can be also be setup and will always take precedence over other file options when set up.  \n\n\n## Quick setup for firefox dotfiles  \n\nThis will setup a git repository for your firefox configuration files using copy-to on Windows.  \n\n### Install git, initialize git repository and setup copy-to\n\nWe start with installing git if it's not installed already.  \n\n```\nwinget install Git.Git\n```  \n\n(Optional: get latest version of PowerShell)  \n\n```\nwinget install Microsoft.PowerShell\n```  \n\n![Setup git](https://raw.githubusercontent.com/excited-bore/copy-to/main/images/Setup_git.gif \"Setup git\")  \n\nThis guide shows you how to use copy-to to and git to backup (and restore) your firefox profile following the [officical mozilla docs](https://support.mozilla.org/en-US/kb/back-and-restore-information-firefox-profiles)\n\nFirst we create a local git repository and cd into it.  \n\nWe can make this repostitory for firefox only `firefox`, or make it for all our dotfiles `dotfiles`  \n\n```\ngit init dotfiles  \ncd dotfiles\n```  \n\nNow, we could just start and copy-to will put all your configurations in the default location (`$HOME/.config/copy-to/confs.json`), or we could set it up so our configuration file is also in our git repository.  \n\nSince we're in a git repostitory, we could accomplish this using `copy-to set-git file confs.json` and copy-to will make the config file `confs.json` in our current folder while also using this specific file to read files and folders from when we `cd` into this git repository. You can see this whether or not this is done by running `git config -e`.   \n\nWe could change the confs.json file from the default path by setting the environment variable `COPY_TO` or by using the `--file` parameter.  \n\nThen we add everything in the firefox 'profile' folder programmatically using copy-to:  \n    - First we open the profile folder by opening firefox-> Help-> More Troubleshooting Information-> Open 'Profile' Folder and copy the folder path.  \n    - Then we run `copy-to add firefox firefox ` to add a the target folder but without the source files. This will also create a subfolder `firefox` in our git repository wich will be our destination.  \n\nWe can handpick what parts of our firefox config we want to backup, for example to keep only our bookmarks, we could store <em>places.sqlite</em>, <em>bookmarksbackups/</em> and <em>favicons.sqlite</em> (See [this](https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data)) from  \n`\"C:\\Users\\username\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\random_release\\\"`.  \nDon't forget to *close* firefox <em>first</em> and change this folder to *your* <em>profile folder</em> and/or <em>username</em>.  \n\n```\ncopy-to add-source firefox \"C:\\Users\\username\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\random_release\\places.sqlite\" \"C:\\Users\\username\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\random_release\\bookmarksbackups/\" \"C:\\Users\\username\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\random_release\\favicons.sqlite\"\n```  \n\nFolders added to source will automatically copy recursively.  \n\nOn the other hand, we could also iterate over each file in our profile folder (dont forget to replace the path with the path you copied earlier):  \n\n```\nGet-ChildItem \"C:\\Users\\username\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\random_release\" -Filter * |  \nForEach-Object {copy-to add-source firefox \"C:\\Users\\username\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\random_release\\$_\" }\n```  \n\nFor Linux (and presumably MacOs), this would be:\n```\ncopy-to add-source firefox /home/username/.mozilla/firefox/random_release/*\n```  \nIf you get an error along the lines of `The file/directory /home/username/.mozilla/firefox/9mw2xroo.default-release/lock does not exist!`, try removing the file and running the command again.  \n\nThen we run `copy-to run firefox` to copy the files to the target folder.  \n\nNow that everything we want related to firefox is inside our local git repository, we can start setting up our remote repository.  \n\n### Setup ssh for github  \n\n![Setup git_ssh](https://raw.githubusercontent.com/excited-bore/copy-to/main/images/Setup_git_ssh.gif \"Setup git ssh\")  \n\nFollowing the instructions on [Github](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent):  \n    - We create a public/private keypair using `ssh-keygen -t ed25519`. This will save our keypair inside `C:\\Users\\username\\.ssh\\id_ed25519` and `C:\\Users\\username\\.ssh\\id_ed25519.pub` respectively.  \n    - Then we open up an administrator powershell and run:  \n\n```\nGet-Service -Name ssh-agent | Set-Service -StartupType Manual  \nStart-Service ssh-agent\n```  \n\nto startup the ssh-agent.  \n    - Back inside a regular powershell, we add our private key using  \n    `ssh-add C:\\Users\\username\\.ssh\\id_ed25519`.  \n    - Then we add the ssh key to our github account and test our connecting using `ssh -T git@github.com`.  \n\n### Setup remote repository\n\n![Setup git_remote](https://raw.githubusercontent.com/excited-bore/copy-to/main/images/Setup_git_remote.gif \"Setup git remote\")  \n\nFirst we make sure we've made our first commit adding every new change:  \n\n```\ngit add --all  \ngit commit -m \"Initial commit\"\n```  \n\nNext we got to our github account and create a new private repository.  \nAfter that, we configure the remote repository using `git remote add origin git@github.com/username/dotfiles.git`.  \nThen if everything went well, we can just push to our remote repository using `git push -u origin main`.  \n\nWe can keep this up-to-date regularly by running `copy-to run firefox`, `cd C:/Users/username/dotfiles` and `git push` whenever we make changes.  \n\nNow, if we ever need to freshly install firefox, we have a backup ready to go that we can use by running `copy-to run-reverse`.  \nOr, if we ever decide to use a different operating system, we clone our repository after installing firefox and relocate the firefox profile folder. Then we run:  \n```\ncopy-to set-file file confs.json\ncopy-to reset-destination firefox \"new-profile-folder\"  \ncopy-to run-reverse firefox\n```  \n\nWe have reconfigure our file because git doesn't upload the local .git/ files.  \nAs an alternative for backing up application configurationfiles accross operating systems, you could add multiple configuration names for each os. (`copy-to add firefox-windows .. ` / `copy-to add firefox-linux ..`)  \n\n## Other commands\n\nList configured paths and files with  \n```\ncopy-to list myname/mygroupname/all/all-no-group/groups/all-groups/names/groupnames/all-names\n```  \nor as a flag  \n```\ncopy-to --list othercommand\n```  \n'all-no-group' and 'groups' to list all regular configs and groups respectively  \n'names' and 'groupnames' to list just the regular names and groupnames respectively  \nYou can also use 'all' to list/run all known configurations  \n\n\nDelete set of dest/src by name with  \n```\ncopy-to delete myname1 (myname2)\n```  \n\nAdd sources with  \n```\ncopy-to add-source myname folder1 file1\n```  \n\nDelete source by index with  \n```\ncopy-to delete-source myname 1 4 7\n```  \n\nReset source and destination folders  \n```\ncopy-to reset-source myname\ncopy-to reset-destination myname newDest\n```  \n\nSet the path of source files/folders by index with  \n```\ncopy-to set-source-path myname1 /home/user/ 1 2-4  \n```  \n\nGroups are based on names. For copying to multiple directories in one go.  \nGroupnames 'group'/'all' cannot be used.  \n\nAdd groupname  \n```\ncopy-to add-group mygroupname myname1 myname2\n```  \n\nDelete groupname\n```\ncopy-to delete-group mygroupname\n```  \n\nAdd name to group  \n```\ncopy-to add-to-group mygroupname myname1 myname2\n```  \n\nDelete name from group  \n```\ncopy-to delete-from-group mygroupname myname1 myname2\n```  \n\nAt default the configuration file is located at `~/.config/copy-to/confs.json`, but you can set a environment variable `COPY_TO` to change this, or pass a `-f, --file` flag.  \n\nMac not tested\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A little commandline tool to copy and paste multiple files and directories to single directory with use of configuration",
    "version": "1.3.42",
    "project_urls": {
        "Bug Tracker": "https://github.com/excited-bore/copy-to/issues",
        "Homepage": "https://github.com/excited-bore/copy-to"
    },
    "split_keywords": [
        "copy-to",
        " setuptools",
        " development"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "640ebe6ffb0ed93d2699cdc7e325d996413c9c2d0f94006fb0b554bed3a128db",
                "md5": "b6352af620bb30fc50cb3facb12a061f",
                "sha256": "c883f4b687a9a6cd2bfa005f4e2b8f7367fbe73fe17eec760e23f59a6059fd09"
            },
            "downloads": -1,
            "filename": "copy_to-1.3.42-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b6352af620bb30fc50cb3facb12a061f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 14516,
            "upload_time": "2024-05-22T01:45:46",
            "upload_time_iso_8601": "2024-05-22T01:45:46.857528Z",
            "url": "https://files.pythonhosted.org/packages/64/0e/be6ffb0ed93d2699cdc7e325d996413c9c2d0f94006fb0b554bed3a128db/copy_to-1.3.42-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "68eb9294e4b65dbe21f79d7b264cb8bf773beee630f5a9dacd9b67d53a04eb4f",
                "md5": "1bbb4edf411195d82e9419123f81641f",
                "sha256": "b1f8a9e9c78dc4b46a7a8c4160711f08c1f4adf087c464ce18d0d7584a43f2bf"
            },
            "downloads": -1,
            "filename": "copy_to-1.3.42.tar.gz",
            "has_sig": false,
            "md5_digest": "1bbb4edf411195d82e9419123f81641f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 18486,
            "upload_time": "2024-05-22T01:45:48",
            "upload_time_iso_8601": "2024-05-22T01:45:48.935263Z",
            "url": "https://files.pythonhosted.org/packages/68/eb/9294e4b65dbe21f79d7b264cb8bf773beee630f5a9dacd9b67d53a04eb4f/copy_to-1.3.42.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-22 01:45:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "excited-bore",
    "github_project": "copy-to",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "copy-to"
}
        
Elapsed time: 0.24071s