Saravanan666/pypi-org huggingface dataset:
Package: lavos
Lavos: A Pythonic Cron Expression Serializer with Fluent SyntaxLavos is an innovative Python library that simplifies working with cron expressions. It replaces the cryptic syntax of traditional cron expressions with a fluent, human-readable API. Lavos allows you to define cron schedules for your tasks intuitively, making schedule management in Python applications easier than ever.FeaturesFluent Syntax: Enjoy a fluent and expressive syntax for defining cron schedules, making your code more readable and maintainable.AWS Cron Support: Compatible with traditional Unix and AWS cron expressions, providing versatility for different environments.Syntax Sugars: Includes convenient syntax sugars for common scheduling patterns, allowing for more concise code.InstallationInstall Lavos using pip:pipinstalllavosUsageLavos offers a range of functionalities for scheduling tasks. Below are examples demonstrating its versatility:Basic UsagefromlavosimportLavos,MON,JAN,FEB,MAR,WEEKDAYScron=Lavos()Every 5 Minutes:# Cron: */5 * * * *cron.every(5).minutesEvery Hour:# Cron: 0 * * * *cron.every(1).hoursDaily at Specific Time:# Cron: 0 14 * * *cron.at("14:00").dailySpecific Weekday at Time:# Cron: 0 12 * * 5cron.at("12:00").on(THU)First Day of Every Month:# Cron: 0 0 1 * *cron.on(1).monthlySpecific Days of Specific Months:# Cron: 0 0 15 1,2 *cron.on(15).of(JAN,FEB)Every Weekday at Multiple Times:# Cron: 0 9,17 * * 1-5cron.at("09:00","17:00").on(WEEKDAYS)First Day of Spring:# Cron: 0 0 20 3 *cron.on(20).of(MAR).annually()Using AWS FormatYou can also create schedules using the AWS cron format:cron=Lavos(format="aws")# Every 5 minutes in AWS format# */5 * * * ? *cron.every(5).minutes# Every weekday at 09:00 in AWS format# 0 9 * * ? *cron.at("09:00").on(WEEKDAYS)Advanced FeaturesContributingWe welcome contributions to Lavos! Whether it's adding new features, improving documentation, or fixing bugs, your input is valuable.LicenseLavos is released under MIT. See the LICENSE file for more details.
Package: lavue
Authors: Christoph Rosemann <christoph.rosemann at desy.de>, Jan Kotański <jan.kotanski at desy.de>, André Rothkirch <andre.rothkirch at desy.de>IntroductionThis is a simple implementation of a live viewer front end.
It is supposed to show a live image view from xray-detectors at PETRA3 @ desy.de,
e.g.Pilatus,Lambda,Eiger,PerkinElmer,PCO,LimaCCD, and others.InstallationLaVue requires the following python packages:qt5/qt4  pyqtgraph  numpy  zmq  scipyIt is also recommended to install:pytango  hidra  pil  fabio  requests  h5py  pni  nxstoolsFrom sourcesDownload the latest LaVue version fromhttps://github.com/lavue-org/lavueExtract sources and run$pythonsetup.pyinstallThesetup.pyscript may need:setuptools  sphinx  numpy  pytestpython packages as well asqtbase5-dev-toolsorlibqt4-dev-bin.Debian packagesDebianbookworm,bullseye,busteror Ubuntulunar,jammy,focalpackages can be found in the HDRI repository.To install the debian packages, add the PGP repository key$sudosu$curl-shttp://repos.pni-hdri.de/debian_repo.pub.gpg|gpg--no-default-keyring--keyringgnupg-ring:/etc/apt/trusted.gpg.d/debian-hdri-repo.gpg--import$chmod644/etc/apt/trusted.gpg.d/debian-hdri-repo.gpgand then download the corresponding source list, e.g.$cd/etc/apt/sources.list.dand$wgethttp://repos.pni-hdri.de/bookworm-pni-hdri.listor$wgethttp://repos.pni-hdri.de/bullseye-pni-hdri.listor$wgethttp://repos.pni-hdri.de/jammy-pni-hdri.listor$wgethttp://repos.pni-hdri.de/focal-pni-hdri.listrespectively.Finally,$apt-getupdate$apt-getinstallpython3-lavue$apt-getinstalllavue-controlleror$apt-getinstalllavue-controller3for python 3 version (for older debian/ubuntu releases).From pipTo install it from pip you need to install pyqt5 in advance, e.g.$python3-mvenvmyvenv$.myvenv/bin/activate$pipinstallPyQtWebKitor$pipinstallpyqt5or$pipinstallPyQt5==5.14and then$pipinstalllavueMoreover it is also good to install the following python packages:$pipinstallfabio$pipinstallpillow$pipinstallpyFAI$pipinstalllavuefilters$pipinstallpytangoStart the ViewerTo start LaVue$lavueor$lavue3for python 3 version (for older debian/ubuntu releases).Start the Viewer in the expert modeChanging LaVue settings is available in the expert mode, i.e.$lavue-mexpertunder an additional button: Configuration.Launching optionsTo get all possible command-line parameters$lavue-hFurther readingMore information can be found at:LaVueConfluncepage:https://confluence.desy.de/display/FSEC/LaVue+-+Live+Image+ViewerLavueControllerTango Server API:https://lavue-org.github.io/lavue/stable/doc_html
Package: lavviebotaio
LavviebotaioAsynchronous Python library for the PurrSong API utilized by LavvieBot S litter boxes, LavvieScanners, and LavvieTags.This package provides an API client for thePurrSongAPI allowing you to fetch the status of Lavviebot S litter boxes, LavvieScanners, LavvieTags, and cats associated with a PurrSong account.The API is not published by PurrSong, so it may break without notice.Installationpip3 install lavviebotaioThis package depdends onaiohttp, and requires Python 3.9 or greater.UsageimportasynciofromlavviebotimportLavviebotClientfromaiohttpimportClientSessionasyncdefmain():asyncwithClientSession()assession:# Create a client using PurrSong account email and passwordclient=LavviebotClient("email","password",session)# Discover all devices associated with PurrSong accountdevices=awaitclient.async_discover_devices()# Discover all cats associated with account. Requires `location id` as an `int`.cats=awaitclient.async_discover_cats(123)# Get info pertaining to a particular litter box (state, usage, error log) using device_id integerlitter_box_status=awaitself.async_get_litter_box_status(device_id)# Get litter box usage log pertaining to a particular litter box using device_id integerlitter_box_log=awaitclient.async_get_litter_box_cat_log(device_id)# Get weights, durations, and usage counts for "Unknown" cat using cat_id integer (cat_id for unknown cats is equal to the location_id)unknown_cat_status=awaitclient.async_get_unknown_status(cat_id)# Get weights, durations, and usage counts for a particular cat using cat_id integercat_status=awaitclient.async_get_cat_status(cat_id)# Get info about a particular LavvieScanner using device_id and device_type of "lavvie_scanner")lavvie_scanner=awaitclient.async_get_iot_device_status(device_id,"lavvie_scanner")# Get info about a particular LavvieTag using device_id and device_type of "lavvie_tag")lavvie_tag=awaitclient.async_get_iot_device_status(device_id,"lavvie_tag")# Get all associated litter boxes, scanners, tags, and cats and store in a LavviebotData objectget_all=awaitclient.async_get_data()loop=asyncio.get_event_loop()loop.run_until_complete(main())
Package: lawa
lawa“法阿”中文分词：做最好的 Python 法律中文分词组件“lawa” (Law-a) Chinese text segmentation: built to
be the best Python Chinese word segmentation module.完整文档见README.mdGitHub:https://github.com/ShenDezhou/lawa特点支持三种分词模式：精确模式，试图将句子最精确地切开，适合文本分析；全模式，把句子中所有的可以成词的词语都扫描出来,
速度非常快，但是不能解决歧义；搜索引擎模式，在精确模式的基础上，对长词再次切分，提高召回率，适合用于搜索引擎分词。支持繁体分词支持自定义词典MIT 授权协议在线演示： ShenDezhou安装说明代码对 Python 2/3 均兼容全自动安装：easy_install lawa或者pip install lawa/pip3 install lawa半自动安装：先下载https://pypi.python.org/pypi/lawa/，解压后运行
python setup.py install手动安装：将 lawa 目录放置于当前目录或者 site-packages 目录通过import lawa来引用词典介绍law_doc.dic和law_term.dic是使用了法规、期刊以及案例标题统计的文档频和词频字典。case_doc.dic和case_term.dic是案例全文统计的文档频和词频字典。lawa_doc.dic和lawa_term.dic是融合和法规、案例和期刊全部特征统计的文档频和词频字典，默认使用`lawa_doc.dic`作为词典加载。中文全角字符对于全角字符同样看作ASCII字符（英文字符）进行处理：例：“—６０００元” 分成  -, -, -, ６０００, 元新增网络词典从中文维基和百度百科收集了一些互联网词语对法律语料进行了扩充，默认新词典改为`wiki_baike_law_doc.dic`。词典共7627641个词，其中法律词231316个，其余为网络词。持久化用joblib替换marshal做持久化
Package: law-dictionary
Bravo!  You have received a Mercantilism Diploma in "law_dictionary" fromthe Orbital Convergence University International Air and Water
Embassy of the Tangerine Planet 🍊 (the planet that is one ellipse further from
the Sun than Earth's ellipse).You are now officially certified to include "law_dictionary" in your practice!Encore! Encore! Encore! Encore!law_dictionarydescriptionThis module checks that dictionaries provided are legit.install[xonsh] pip install law_dictionarytutorialThe "dictionary" passed to the "check" function might be modified.Thereforedictionary_2 = copy.deepcopy (dictionary_1)should be used
if you'd like the originaldictionary_1to be preserved.101In this example, an obstacle is found because "directory_2" is not in the "laws"and "allow_extra_fields" is False.With "return_obstacle_if_not_legit" a report is returned instead of an exceptionbeing raised.import law_dictionary

dictionary = {
	"directory_1": "/",
	"directory_2": "/drives"
}
report = law_dictionary.check (
	return_obstacle_if_not_legit = True,
	allow_extra_fields = False,
	laws = {
		"directory_1": {
			"required": True
		}
	},
	dictionary = dictionary
)
if (report ["advance"] != True):
	raise Exception (report ["obstacle"])contigenciesIf "required" is False, then the "contingency" value is returned
or the value returned by a "contingency" function.After "contingency" step, the "type" is checked,
if "type" is passed to the "laws".import law_dictionary

dictionary = {}

def retrieve_directory ():
	return "/"

report = law_dictionary.check (	
	return_obstacle_if_not_legit = True,
	laws = {
		"directory_1": {
			"required": False,
			"contingency": retrieve_directory,
			"type": str
		},
		"directory_2": {
			"required": False,
			"contingency": "/drives",
			"type": str
		}
	},
	dictionary = dictionary
)
if (report ["advance"] != True):
	raise Exception (report ["obstacle"])	

assert (dictionary ["directory_1"] == "/")
assert (dictionary ["directory_2"] == "/drives")

# The consequence of this check is that there are no "obstacles"
# and the dictionary is modified to have this structure:
'''
{
	"directory_1": "/",
	"directory_2": "/drives"
}
'''allowanceThe consequence of this check is that there are no "obstacles" or modifications
to either dictionary.import law_dictionary

dictionaries = [{ "directory_1": "/" }, { "directory_1": "/drives"  }]

for dictionary in dictionaries:
	law_dictionary.check (	
		laws = {
			"directory_1": {
				"required": True,
				"allow": [ "/", "/drives" ]
			}
		},
		dictionary = dictionary
	)multiple levelsThere's not a tree structure possible for multiple levels,however after a level 1 check, level 2, etc. checks canbe run.import law_dictionary

dictionary = { 
	"paths": {
		"directory_1": "/" 
	}
}	
	
law_dictionary.check (	
	laws = {
		"paths": {
			"required": True,
			"type": dict
		}
	},
	dictionary = dictionary
)

law_dictionary.check (	
	laws = {
		"directory_1": {
			"required": True,
			"type": str
		}
	},
	dictionary = dictionary ["paths"]
)
Package: lawfactory-utils
A few utilities forthe-law-factory-parserproject, shared bysenapyandanpy.A simple caching library:from lawfactory_utils.urls import enable_requests_cache, download
enable_requests_cache()

.....

resp = download(url)
print(resp.text)Warning: To be able to download from Légifrance, you must set up aLEGIFRANCE_PROXYenv variable, which is a running instance oflegifrance-proxy.The cached responses are stored in the directory where this lib is
installed. You can uselawfactory_where_is_my_cacheto print the
path.URL cleaning for senat/AN/legifrance/conseil-constit>>> from lawfactory_utils.urls import clean_url
>>> clean_url('https://www.legifrance.gouv.fr/eli/loi/2017/9/15/JUSC1715752L/jo/texte')
'https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000035567936'Parsing of National Assembly URLS>>> from lawfactory_utils.urls import parse_national_assembly
>>> parse_national_assembly_url("http://www.assemblee-nationale.fr/dyn/15/dossiers/retablissement_confiance_action_publique")
(15, 'retablissement_confiance_action_publique')
Package: lawLib
lawLibLibrary to extract legal information from official resources.Get startedGet data from United States and Spanish Supreme Courts:fromtypingimportListfromscrapperimportSupremeCourtUnitedStates,SupremeCourtSpainimportconfigparserconfig=configparser.ConfigParser()config.read("config.ini")case_ids:List=[str(i)foriin[*range(1,5)]]area:str='courts'source_SpanishSupremeCourt:str='SpanishSupremeCourt'source_USASupremeCourt:str='USASupremeCourt'#Something like data/output_path:str=config['EXTRA']['OutputPath']#Get some cases and save them on local filesSupremeCourtSpain(source_SpanishSupremeCourt,case_ids).get_data(output_path,'json',True)#Get some cases and return as listprint(SupremeCourtSpain(source_SpanishSupremeCourt,case_ids).get_data(output_path,'json',False))#Get some cases and save them on local filesSupremeCourtUnitedStates(source_USASupremeCourt,area).get_data(output_path,'json',True)#Get some cases and return as listprint(SupremeCourtUnitedStates(source_USASupremeCourt,area).get_data(output_path,'json',False))Installation for development purposes<h3>:construction: Working enviroment:</h3>

<li>Python version <b>3.9</b></li> 

<li>Virtual enviroment: <b>py -m venv env</b></li> 

<li>Activate on WINDOWS: <b>env\Scripts\activate</b></li>

<li>Activate on MAC: <b>source env/bin/activate</b></li>

<h3>:books: Dependencies</h3>

<li>Install with: <b>pip3 install -r requirements.txt</b></li>

<h3>:mag_right: Testing</h3>

<li>Launch tests with: <b>python -m unittest -v tests/data_scrapper_test.py</b></li>
Package: lawnmower
LawnMower - Simple Python task runnerRun tasks faster than you can mow lawn!Welcome to LawnMower, a simple python task runner!Why?Universal task runners and build systems likemakeare overly complicated. I mean how would your average JS dev know what a C++ compiler is?That's why I made LawnMower, a simple task runner that uses a simple file format (JSON) to define scripts that you can run without worrying about platforms, languages, and any other jazz.UsageDownload LawnMower withpippip3installlawnmower-- TBD --
Package: lawquery
Current support documents:Bộ luật dân sự 2015Bộ luật hình sự 2015Bộ luật lao động 2019Bộ luật hàng hải Việt Nam 2015Bộ luật tố tụng dân sự 2015Bộ luật tố tụng hình sự 2015Installationgitclonehttps://github.com/Th1nhNg0/law-querycdlaw-query

python-mvenv.envsource.env/bin/activate# make sure you are using the latest pippython-mpipinstall-Upipsetuptoolswheel

pipinstall--no-build-isolation--editable.UsagefromlawqueryimportEngine,list_documents# list of document pathsdocument_paths=list_documents()print(document_paths)# create engineengine=Engine(filepath=document_paths[0])# print info of documentprint(engine)# print outline treeengine.print_tree()# query# node_type: root,phần,chương,mục,điều,khoản,điểm# node_id: '1','2','I','II','nhất','hai','a','b'...results=engine.query(node_type='điều',node_id='1')results=engine.query(node_id='1')results=engine.query(node_type='phần')results=engine.query(name='hôn nhân')# query by path: from parent to child# param is list of dict, the parameter of engine.query functionresults=engine.query_by_path([{'node_type':'phần','node_id':'hai'},{'node_type':'chương','node_id':'I'},{'node_type':'mục','node_id':'1'},{'node_type':'điều','node_id':'50'}])
Package: lawrouge
lawrouge“法摘”中英文摘要评价：做最好的 Python 中英文摘要评价组件“lawrouge” (Law-rouge) Chinese and English text summary evaluation metric: built to
be the best Python Multilingual Text Summary Evaluation module.完整文档见README.mdGitHub:https://github.com/ShenDezhou/lawrouge特点支持中英文摘要测评模式中文模式英文模式THU 授权协议在线演示： ShenDezhou安装说明代码对 Python 2/3 均兼容全自动安装：easy_install lawrouge或者pip install lawrouge/pip3 install lawrouge半自动安装：先下载https://pypi.python.org/pypi/lawrouge/，解压后运行
python setup.py install手动安装：将 lawrouge 目录放置于当前目录或者 site-packages 目录通过import lawrouge来引用使用说明支持英文文本摘要测评, lawrouge.Rouge(isChinese=False) 方法接受语言参数: isChinese是否为中文代码示例：`python rouge = lawrouge.Rouge() scores =rouge.get_scores(["他是清华大学计算机科学与技术系"],["计算机科学与技术专业"],avg=2) print(scores) `内核类构造方法下面对核心Rouge类的构造参数exclusive说明：该值影响最长公共子串匹配的计算方式。exclusive=True表明将文本表示为字的集合，exclusive=False（默认值）表明将文本表示为列表，在计算最长公共子串时，合并不同句子的最长串时，会将每个预测句子中与标准摘要句重合部分计入最长公共子串中。因此，以下面示例为例，则最长公共子串为  LCS=他是清华大学计算机科学与技术系计算机科学与技术  ，而在字集合表示下，则重复字会消去。因为会出现LCS大于标准句的情况，进而可能会出现R值大于1的情形。代码示例：`python rouge = lawrouge.Rouge(exclusive=True) scores =rouge.get_scores(["他是清华大学计算机科学与技术系。计算机科学与技术专业。"],["他是清华大学计算机科学与技术系。"],avg=1) print(scores) `内核方法说明下面对核心方法get_score中avg参数进行说明：该值影响数据处理以及返回值。avg=0表明用户传入的两个子串计算Rouge值，返回句子对Rouge评分列表。avg=1对用户传入两个子串进行按照句子分割符拆分后，计算Rouge值，并取平均返回。avg=2除上述处理外，还将3种Rouge得分加权求和后返回。版本说明1.2.0: 修复英文摘要测评计算方法中的缺陷。1.3.1: 修复英文摘要测评使用方法中的缺陷。2.0.0: 增加对最长公共子串匹配的说明。
Package: lawsuitssubsystem
scraping lawsuitsSubsystem for parsing lawsuitsProject structureHow to devpoetry shell
poetry install├── debug.py
├── parsing_lawsuits
│   └── python_callables.py - core functions for Airflow
├── poetry.lock
├── pyproject.toml
└── README.mdHow to public to PypiFirst you need create api on pypipoetryconfigpypi-token.pypi$(cat.token)poetrypublish--build
Package: lawyerup
LawyerUp adds license headers to your code.Inspired bylice.Installationpip install lawyerupUsage$ lawyerup --help
usage: lawyerup [-h] [--vars | --context [KEY=VALUE [KEY=VALUE ...]]] LICENSE

Add license headers to files passed in on stdin

positional arguments:
  LICENSE               the license to add, one of GPR, GRR, generic

optional arguments:
  -h, --help            show this help message and exit
  --vars                list template variables for specified license
  --context [KEY=VALUE [KEY=VALUE ...]]
                        KEY=VALUE formatted variables to generate the license$ cat list-of-files | lawyerup <license> --context KEY1=VAL1 KEY2=VAL2 ...Available LicensesGovernment Purpose Rights (GPR)Government Restricted Rights (GRR)Generic “see COPYING file in the root of this distribution” (generic)History0.1.4 (2014-11-20)Bugfix: Python 2.6 requiresargparse.Stylus support.0.1.3 (2013-12-16)Bugfix: Strip trailing whitespace from formatted headers.0.1.2 (2013-11-13)Bugfix: Don’t die on empty files.Bugfix: Treat all input files as UTF-8.0.1.1 (2013-11-13)Bugfix release. Actually include the license headers in the distribution.0.1.0 (2013-11-13)First release. Add headers to lists of files read fromstdin.
Package: laxpy
Relax withlaxpy. Let it handle your spatial queries for you!laxpy is a way to read and write.laxfiles generated fromlasindexin Python. I have ambitions to merge this into
thelaspycodebase, but for now this standalone package can handle spatial queries in conjuction withlaspyand
presence of.laxfiles that match the name of the.lasfile you are interested in querying.Why Index?Indexing LiDAR data is only relevant if the entire file is not needed. This most frequently happens when LiDAR files need
to be clipped using some geometry smaller than the original file extent. Indexing allows loading smaller chunks
of the file into memory, rather than the whole thing, at the cost of some initial overhead.Whether or not indexing ultimately increases computational efficiency depends on the clipping geometry, and the structure
and size of the LiDAR file.Release StatusCurrent Release: 0.2.3Status:laxpyis in a stable condition.Installation# via pip
pip install laxpy

# via GitHub
git clone https://github.com/brycefrank/laxpy.git
cd laxpy
pip install .

# via conda
conda install laxpy -n <your environment> -c conda-forgeExampleClipping a Polygonlaxpyclips ashapelypolygon by adjusting the memory map (an internal mechanism inlaspy) of the original reference object.
Long story short, this is done in place in the following manner:from laxpy import IndexedLAS

my_las = IndexedLAS('my_las.las')
my_las.map_polygon(my_shapely_polygon)

# Print the points within the polygon
print(my_las.points)Note that anIndexedLASobject inherits directly fromlaspy.file.File, and all dimensions are available for querying,
including.x,.y, etc. etc.
Package: layabout
Layabout⚠️ Layabout isdeprecated. There will be no further support. ⚠️Layaboutis a small event handling library on top of the Slack RTM API.frompprintimportpprintfromlayaboutimportLayaboutapp=Layabout()@app.handle('*')defdebug(slack,event):""" Pretty print every event seen by the app. """pprint(event)@app.handle('message')defecho(slack,event):""" Echo all messages seen by the app except our own. """ifevent.get('subtype')!='bot_message':slack.rtm_send_message(event['channel'],event['text'])defsomeone_leaves(events):""" Return False if a member leaves, otherwise True. """returnnotany(e.get('type')=='member_left_channel'foreinevents)if__name__=='__main__':# Automatically load app token from $LAYABOUT_TOKEN and run!app.run(until=someone_leaves)print("Looks like someone left a channel!")InstallationTo installLayaboutusepipandPyPI:pipinstalllayaboutWhat’s It Good For?You can think ofLayaboutas a micro framework for building Slack bots.
Since it wraps Slack’s RTM API it does best with tasks like interacting with
users, responding to channel messages, and monitoring events. If you want more
ideas on what you can do with it check out theexamples.FeaturesNot sold yet? Here’s a list of features to sweeten the deal.Automatically load Slack API tokens from environment variables, provide
them directly, or even bring your own SlackClient.Register multiple event handlers for one event.Register a single handler for multiple events by stacking decorators.Configurable application shutdown.Configurable retry logic in the event of lost connections.Lightweight. Depends only on the official Pythonslackclientlibrary.Code of ConductEveryone interacting with the Layabout project’s codebase is expected to follow
theCode of Conduct.
Package: layer
Layer - Metadata Store for Production MLLayerhelps you build, train and track all your machine learning project metadata including ML models and datasets with semantic versioning, extensive artifact logging and dynamic reporting with local↔cloud trainingStart for Free now!Getting StartedInstall Layer:pipinstalllayer--upgradeLogin to your free account and initialize your project:importlayerlayer.login()layer.init("my-first-project")Decorate your training function to register your model to Layer:fromlayer.decoratorsimportmodel@model("my-model")deftrain():fromsklearnimportdatasetsfromsklearn.svmimportSVCiris=datasets.load_iris()clf=SVC()clf.fit(iris.data,iris.target)returnclftrain()Now you can fetch your model from Layer:importlayerclf=layer.get_model("my-model:1.1").get_train()clf# > SVC()🚀 Try in Google Colab now!Reporting bugsYou have a bug, a request or a feature? Let us know onSlackoropen an issueContributing codeDo you want to help us build the best metadata store? Check out theContributing GuideLearn moreJoin ourSlack Communityto connect with other Layer usersVisit theexamples repofor more inspirationBrowseCommunity Projectsto see more use casesCheck out theDocumentationContact usfor your questions
Package: layerborn.cdk-git-tagger
CDK Aspect Git TaggerThis is a CDK Aspect that will tag your CDK Stacks with the current git repo location for easier identification of
deployed stacks.How to installnpminstall@layerborn/cdk-git-taggerornpminstall@layerborn/cdk-git-taggerHow to useimport{GitUrlTagger}from'@layerborn/cdk-git-tagger';import{App,Aspects,Stack,StackProps}from'aws-cdk-lib';import{Topic}from'aws-cdk-lib/aws-sns';import{Construct}from'constructs';exportclassMyStackextendsStack{constructor(scope:Construct,id:string,props:StackProps={}){super(scope,id,props);//defineresourceshere...newTopic(this,'MyTopic');}}constapp=newApp();newMyStack(app,'cdk-aspect-git-tagger-tester');Aspects.of(app).add(newGitUrlTagger());app.synth();Example Output{"Resources":{"MyTopic86869434":{"Type":"AWS::SNS::Topic","Properties":{"Tags":[{"Key":"GitUrl","Value":"https://github.com/layerborn/cdk-cool-construct.git"}]}}}}