Installer, package manager, build wrapper and version manager for Piccolo

Related tags

MiscellaneousPiccl
Overview

Piccl Logo

Piccl

Installer, package manager, build wrapper and version manager for Piccolo (https://github.com/PiccoloLang/piccolo)

Overview

Piccl aims to simplify the process of integrating and developing using Piccolo in your environments. "How?" I hear you ask? Simple!: - Compile the latest versions of Piccolo as a library, and offer to install it for you! - Manage your Piccolo versions conveniently from the command line! - Want more bang for your buck? Build Piccolo libraries and link them against your local versions!

Installing

Piccl itself can be installed quite easily! At the moment we can only provide the awesomeness that is Piccl for our Unix bretheren, but Windows support will be added down the line.

Simply run:

sudo Piccl/Install.py

And you should be ready to go! For more options use the --help switch.

Piccl requires: - Python 3.9 - git - cc compatible compiler (e.g. gcc or clang)

Any packages will have their own dependencies which should be listed in their repositories.

Running

In the future, Piccl will run tests to make sure that trunk Piccolo isn't banjaxed, but for now compiler errors will have to suffice on your end ;-;.

Using Piccl is simple! Here's the basic syntax:

piccl [flags] 
   
     [flags|suboperations...] [operands]

   

Each operation has its own set of flags and its own --help menu.

Versions

Piccolo versions are stored in the Piccl home directory under the Versions folder. Environments will hold references to installed Piccolo versions in this folder. By default Piccl will hold any versions meeting the following criteria: - Is the latest version - Has an active reference in an environment which is not set to autoupdate - Has been added by the user with the --keep flag of a version add operation - Has been registered manually with the config --register-version operation and flag

Piccl will always hold the latest version of Piccolo and will keep it up-to-date. To add a persistent version use:

piccl version add --keep 
   

   

to get the Piccolo version referenced by the commit UUID commit. Without the --keep command Piccl will delete the version at the next update operation or after the next operation if autoupdate is enabled.

For package developers or developers looking to integrate libPiccolo, you can install a version of Piccolo globally using:

piccl version install 
   

   

Environments

You can use Piccl to manage multiple environments for Piccolo. When performing any operation you can use the --target flag to specify which environment or version to perform the operation on. Each environment has its own package index and references one installed Piccolo version. By default Piccl will initialize one environment called default.

For example, to initialize a new environment use:

piccl environment create 
   

   

This will initialize a new environment with no Piccolo version and an empty package index, to initalize the environment use:

piccl environment update 
   

   

Which will install the latest Piccolo version if neccesary and add a reference to it in the environment. Note that this command will also update any packages in the environment.

To configure an environment use:

piccl environment config [flags] 
   

   

For a list of configuration flags use:

piccl environment config --help

Global Configuration

Piccl keeps track of some global configuration in the home directory: - A list of environments - A list of versions - Whether to autoupdate after every operation - Piccl package indexes: Packages - The compiler to use for compiling native code

These can be modified using:

piccl config [flags]

For a list of configuration flags use:

piccl config --help

Packages

While at the moment Piccolo does not natively support libraries and inclusion, nor does it have a shell for running packages, using Repiccl or another Piccolo shell can provide an interface for libraries and runnable Piccolo modules. To install a package use:

piccl package install 
   
     [environment]

   

If you omit environment the package will be installed to the default environment.

The default package index is restricted to Piccl packages, to manage package indexes use:

piccl config --register-package-index 
   

   

For local package indexes, use a file:// URI with the path to your index. Note that Piccl is not responsible for any malicious programs present on 3rd party package indexes.

Advanced

Piccl keeps track of environments and other persistent data through a folder which by default is located at ~/.config/Piccl. This can be redirected with the PICCL_HOME environment variable if you need to manage multiple Piccl configurations. This is not how to handle environments. Note that this will also set the home directory if it is set during the installation. The same effect can be achieved using the --homedir flag when using Piccl.

If you are a package developer or are developing with Piccolo in an integrated manner, you can set the PICCL_DEBUG environment variable which will cause all builds to be performed with debug symbols enabled.

VHDL to Discrete Logic on PCB Flow

PCBFlow Highly experimental set of scripts to transform a digital circuit described in a hardware description language (VHDL or Verilog) into a discre

Tim 77 Nov 04, 2022
Another Provably Rare Gem Miner 💎 (for Raritygems)

Provably Rare Gem Miner Go (for Rarity) Pull Request is strongly welcome as I don't know anything about Golang/Python/Web3. Usage Install Python 3.x i

朱里 6 Apr 22, 2022
A 3D Slicer Extension to view data from the flywheel heirarchy

flywheel-connect A 3D Slicer Extension to view, select, and download images from a Flywheel instance to 3D Slicer and storing Slicer outputs back to F

4 Nov 05, 2022
reproduces experiments from

Installation To enable importing of modules, from the parent directory execute: pip install -e . To install requirements: python -m pip install requir

Meta Research 15 Aug 11, 2022
Feature engineering library that helps you keep track of feature dependencies, documentation and schema

Feature engineering library that helps you keep track of feature dependencies, documentation and schema

28 May 31, 2022
Library for managing git hooks

Autohooks Library for managing and writing git hooks in Python. Looking for automatic formatting or linting, e.g., with black and pylint, while creati

Greenbone 165 Dec 16, 2022
A python script made for personal use to monitor for sports card restocks on target.com since they are sold out often

TargetProductMonitor A python script made for personal use to monitor for sports card resocks on target.com since they are sold out often. When a rest

Bryan Lorden 2 Jul 31, 2022
Python version of RocketLeague-Dropshot-Calculated-shot

Python version of RocketLeague-Dropshot-Calculated-shot. This is just to demo around and a tool I used to develop the actual plugin.

JareBear 1 Jan 14, 2022
📽 Streamlit application powered by a PyScaffold project setup

streamlit-demo Streamlit application powered by a PyScaffold project setup. Work in progress: The idea of this repo is to demonstrate how to package a

PyScaffold 2 Oct 10, 2022
Context-free grammar to Sublime-syntax file

Generate a sublime-syntax file from a non-left-recursive, follow-determined, context-free grammar

Haggai Nuchi 8 Nov 17, 2022
A web-based chat application that enables multiple users to interact with one another

A web-based chat application that enables multiple users to interact with one another, in the same chat room or different ones according to their choosing.

3 Apr 22, 2022
Python Programmma DarkMap.py

DarkMap Python Programmma DarkMap.py O'rganish va rasmlarni ko'riosh https://drive.google.com/drive/folders/1l1zybs_0Zy9z_trZYz5R72WrwsE6mFOh?usp=shar

Og'abek 0 May 06, 2022
Adam with minor modifications which give significant improvement

BAdam Modification of Adam [1] optimizer with increased stability and better performance. Tricks used: Decoupled weight decay as in AdamW [2]. Such de

19 May 11, 2022
Project Faros is a reference implimentation of Red Hat OpenShift 4 on small footprint, bare-metal clusters.

Project Faros Project Faros is a reference implimentation of Red Hat OpenShift 4 on small footprint, bare-metal clusters. The project includes referen

project: Faros 9 Jul 18, 2022
- Auto join teams teams ( from calendar invite )

Auto Join Teams Meetings Requirements: Python 3.7 or higher Latest Google Chrome This script automatically logins to your account and joins the meetin

Prajin Khadka 10 Aug 20, 2022
Brython (Browser Python) is an implementation of Python 3 running in the browser

brython Brython (Browser Python) is an implementation of Python 3 running in the browser, with an interface to the DOM elements and events. Here is a

5.9k Jan 02, 2023
This is a simple leaderboard for 30 days of Google Cloud program for students of ASIET

30daysleaderboard #Hacktoberfest - Please don't make changes in readme file. Only improvement in the project will be accepted. Update - Now if you run

5 Oct 29, 2021
Batch Python Program Verify

Batch Python Program Verify About As a TA(teaching assistant) of Programming Class, it is very annoying to test students' homework assignments one by

Han-Wei Li 7 Dec 20, 2022
Скрипт позволяет заводить задачи в Панель мониторинга YouTrack на основе парсинга сайта safe-surf.ru

Скрипт позволяет заводить задачи в Панель мониторинга YouTrack на основе парсинга сайта safe-surf.ru

Bad_karma 3 Feb 12, 2022
Wagtail + Lottie is a Wagtail package for playing Adobe After Effects animations exported as json with Bodymovin.

Wagtail Lottie Wagtail + Lottie is a Wagtail package for playing Adobe After Effects animations exported as json with Bodymovin. Usage Export your ani

Alexis Le Baron 7 Aug 18, 2022