From 337ca84168d6eb4c2b6226006a025700d370987a Mon Sep 17 00:00:00 2001 From: MKruchok <74894852+MKruchok@users.noreply.github.com> Date: Wed, 22 Sep 2021 03:36:23 +0300 Subject: [PATCH 1/8] Added lab 2 files, updated README.md. --- README.md | 18 +++++++++++-- priority_queue.py | 65 +++++++++++++++++++++++++++++++++++++++++++++++ tests.py | 30 ++++++++++++++++++++++ 3 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 priority_queue.py create mode 100644 tests.py diff --git a/README.md b/README.md index 84b53db..794a405 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,16 @@ -# Algorithms - +# Lab_2 +### Task +Implement a priority queue. + + ### Code must be covered with tests + + inserting element + + returning an element without deleting + + deleting (for example, returning and deleting the first element from the stack) + + finding a specific element (if such an operation is supported by the data structure) + + ### How to run + + Clone repository: `git clone https://github.com/MKruchok/Algorithms.git` + + Choose lab_1 branch: `git checkout lab_2` + + Get into folder: `cd Algorithms` + + Run `py priority_queue.py` + \ No newline at end of file diff --git a/priority_queue.py b/priority_queue.py new file mode 100644 index 0000000..fe2bf99 --- /dev/null +++ b/priority_queue.py @@ -0,0 +1,65 @@ +class Node: + + def __init__(self, value, priority): + self.value = value + self.priority = priority + + def __str__(self): + return 'Value: {value}, priority: {priority}'.format(value=self.value, priority=self.priority) + + +class PQueue: + + def __init__(self): + self.heap = [] + + def __len__(self): + return len(self.heap) + + def add(self, value, priority): + self.heap.append(Node(value, priority)) + self.upwards(len(self.heap) - 1) + + def pop(self): + self.heap[len(self.heap) - 1], self.heap[0] = self.heap[0], self.heap[len(self.heap) - 1] + popped = self.heap.pop() + self.downwards(0) + return popped.value + + def upwards(self, index): + prev_index = index - 1 + if prev_index < 0: + return + if self.heap[index].priority > self.heap[prev_index].priority: + self.heap[index], self.heap[prev_index] = self.heap[prev_index], self.heap[index] + self.upwards(prev_index) + + def downwards(self, index): + next_index = index + 1 + if next_index is len(self.heap): + return + if self.heap[next_index].priority > self.heap[index].priority: + self.heap[next_index], self.heap[index] = self.heap[index], self.heap[next_index] + self.downwards(next_index) + + def peek(self): + return self.heap[0].value + + def find(self, value): + for i in range(len(self.heap) - 1): + if self.heap[i].value is value: + return 'Value to find: {value}, priority: {priority}, index: {index}'.format \ + (value=self.heap[i].value, priority=self.heap[i].priority, index=i) + return 'Nothing found.' + + +if __name__ == '__main__': + queue = PQueue() + queue.add(23, 4) + queue.add(11, 3) + queue.add(56, 5) + queue.add(33, 2) + queue.add(44, 5) + print(queue.pop()) + print(queue.pop()) + print(queue.find(11)) diff --git a/tests.py b/tests.py new file mode 100644 index 0000000..b1a8646 --- /dev/null +++ b/tests.py @@ -0,0 +1,30 @@ +import unittest +from priority_queue import PQueue + + +class TestPriorityQueue(unittest.TestCase): + def setUp(self): + self.priorityQ = PQueue() + self.priorityQ.add(23, 4) + self.priorityQ.add(11, 3) + self.priorityQ.add(56, 5) + self.priorityQ.add(33, 2) + self.priorityQ.add(44, 5) + + def test_get(self): + self.assertEqual(self.priorityQ.peek(), 56) + + def test_find(self): + self.assertEqual(self.priorityQ.find(11), "Value to find: 11, priority: 3, index: 3") + + def test_pop(self): + self.assertEqual(self.priorityQ.pop(), 56) + self.assertEqual(len(self.priorityQ), 4) + + def test_add(self): + self.priorityQ.add(122, 34) + self.assertEqual(self.priorityQ.peek(), 122) + + +if __name__ == '__main__': + unittest.main() From 12993e907c4d721a677c8790aed2fa78ce66043a Mon Sep 17 00:00:00 2001 From: MKruchok <74894852+MKruchok@users.noreply.github.com> Date: Wed, 22 Sep 2021 22:03:59 +0300 Subject: [PATCH 2/8] Updated code structure --- node.py | 8 ++++++ priority_queue.py | 62 +++++++++++++++++++---------------------------- tests.py | 2 +- 3 files changed, 34 insertions(+), 38 deletions(-) create mode 100644 node.py diff --git a/node.py b/node.py new file mode 100644 index 0000000..4b46a41 --- /dev/null +++ b/node.py @@ -0,0 +1,8 @@ +class Node: + + def __init__(self, value, priority): + self.value = value + self.priority = priority + + def __str__(self): + return 'Value: {value}, priority: {priority}'.format(value=self.value, priority=self.priority) diff --git a/priority_queue.py b/priority_queue.py index fe2bf99..d8bb58d 100644 --- a/priority_queue.py +++ b/priority_queue.py @@ -1,11 +1,4 @@ -class Node: - - def __init__(self, value, priority): - self.value = value - self.priority = priority - - def __str__(self): - return 'Value: {value}, priority: {priority}'.format(value=self.value, priority=self.priority) +from node import Node class PQueue: @@ -18,48 +11,43 @@ def __len__(self): def add(self, value, priority): self.heap.append(Node(value, priority)) - self.upwards(len(self.heap) - 1) + self.up(len(self.heap) - 1, self.heap[len(self.heap) - 1]) def pop(self): self.heap[len(self.heap) - 1], self.heap[0] = self.heap[0], self.heap[len(self.heap) - 1] popped = self.heap.pop() - self.downwards(0) + self.down(0) return popped.value - def upwards(self, index): - prev_index = index - 1 - if prev_index < 0: - return - if self.heap[index].priority > self.heap[prev_index].priority: - self.heap[index], self.heap[prev_index] = self.heap[prev_index], self.heap[index] - self.upwards(prev_index) - - def downwards(self, index): - next_index = index + 1 - if next_index is len(self.heap): + def up(self, index, elem): + while index > 0 and elem.priority > self.heap[int((index - 1) / 2)].priority: + self.heap[int(index)] = self.heap[int((index - 1) / 2)] + index -= 1 + index /= 2 + if index <= 0: + self.heap[0] = elem + else: + self.heap[int(index)] = elem + + def down(self, index): + left = 2 * index + 1 + right = 2 * index + 2 + big = index + if right >= len(self.heap): return - if self.heap[next_index].priority > self.heap[index].priority: - self.heap[next_index], self.heap[index] = self.heap[index], self.heap[next_index] - self.downwards(next_index) + if self.heap[big].priority < self.heap[left].priority: + big = left + if self.heap[big].priority < self.heap[right].priority: + big = right + if big is not index: + self.heap[index], self.heap[big] = self.heap[big], self.heap[index] def peek(self): return self.heap[0].value def find(self, value): - for i in range(len(self.heap) - 1): + for i in range(len(self.heap)): if self.heap[i].value is value: return 'Value to find: {value}, priority: {priority}, index: {index}'.format \ (value=self.heap[i].value, priority=self.heap[i].priority, index=i) return 'Nothing found.' - - -if __name__ == '__main__': - queue = PQueue() - queue.add(23, 4) - queue.add(11, 3) - queue.add(56, 5) - queue.add(33, 2) - queue.add(44, 5) - print(queue.pop()) - print(queue.pop()) - print(queue.find(11)) diff --git a/tests.py b/tests.py index b1a8646..e45773c 100644 --- a/tests.py +++ b/tests.py @@ -15,7 +15,7 @@ def test_get(self): self.assertEqual(self.priorityQ.peek(), 56) def test_find(self): - self.assertEqual(self.priorityQ.find(11), "Value to find: 11, priority: 3, index: 3") + self.assertEqual(self.priorityQ.find(11), "Value to find: 11, priority: 3, index: 4") def test_pop(self): self.assertEqual(self.priorityQ.pop(), 56) From c20978e046843949a52770b4309c725a7cf74913 Mon Sep 17 00:00:00 2001 From: MKruchok <74894852+MKruchok@users.noreply.github.com> Date: Thu, 23 Sep 2021 13:57:58 +0300 Subject: [PATCH 3/8] Update priority_queue.py --- priority_queue.py | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/priority_queue.py b/priority_queue.py index d8bb58d..001d033 100644 --- a/priority_queue.py +++ b/priority_queue.py @@ -20,27 +20,33 @@ def pop(self): return popped.value def up(self, index, elem): - while index > 0 and elem.priority > self.heap[int((index - 1) / 2)].priority: + while int(index) > 0 and elem.priority > self.heap[int((index - 1) / 2)].priority: self.heap[int(index)] = self.heap[int((index - 1) / 2)] index -= 1 index /= 2 - if index <= 0: - self.heap[0] = elem - else: - self.heap[int(index)] = elem + # if index <= 0: + # self.heap[0] = elem + # else: + self.heap[int(index)] = elem def down(self, index): left = 2 * index + 1 right = 2 * index + 2 big = index - if right >= len(self.heap): + try: + while self.heap[big].priority < self.heap[left].priority or self.heap[big].priority < self.heap[right].priority: + if right >= len(self.heap): + return + if self.heap[big].priority < self.heap[left].priority: + big = left + if self.heap[big].priority < self.heap[right].priority: + big = right + self.heap[index], self.heap[big] = self.heap[big], self.heap[index] + index = big + left = 2 * big + 1 + right = 2 * big + 2 + except IndexError: return - if self.heap[big].priority < self.heap[left].priority: - big = left - if self.heap[big].priority < self.heap[right].priority: - big = right - if big is not index: - self.heap[index], self.heap[big] = self.heap[big], self.heap[index] def peek(self): return self.heap[0].value From 26d0c21dfc1758ac4bd79b6cf9417730b7c9f26e Mon Sep 17 00:00:00 2001 From: MKruchok <74894852+MKruchok@users.noreply.github.com> Date: Thu, 23 Sep 2021 13:58:53 +0300 Subject: [PATCH 4/8] Update priority_queue.py --- priority_queue.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/priority_queue.py b/priority_queue.py index 001d033..a41d94e 100644 --- a/priority_queue.py +++ b/priority_queue.py @@ -24,9 +24,6 @@ def up(self, index, elem): self.heap[int(index)] = self.heap[int((index - 1) / 2)] index -= 1 index /= 2 - # if index <= 0: - # self.heap[0] = elem - # else: self.heap[int(index)] = elem def down(self, index): From 2ecdcb4236aba253fff642207e7a31c2704b1d0d Mon Sep 17 00:00:00 2001 From: MKruchok <74894852+MKruchok@users.noreply.github.com> Date: Thu, 23 Sep 2021 14:30:46 +0300 Subject: [PATCH 5/8] Changes according to rewiew --- priority_queue.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/priority_queue.py b/priority_queue.py index a41d94e..0a247b0 100644 --- a/priority_queue.py +++ b/priority_queue.py @@ -11,22 +11,24 @@ def __len__(self): def add(self, value, priority): self.heap.append(Node(value, priority)) - self.up(len(self.heap) - 1, self.heap[len(self.heap) - 1]) + self.swim(len(self.heap) - 1, self.heap[len(self.heap) - 1]) def pop(self): self.heap[len(self.heap) - 1], self.heap[0] = self.heap[0], self.heap[len(self.heap) - 1] popped = self.heap.pop() - self.down(0) + self.sink(0) return popped.value - def up(self, index, elem): - while int(index) > 0 and elem.priority > self.heap[int((index - 1) / 2)].priority: - self.heap[int(index)] = self.heap[int((index - 1) / 2)] - index -= 1 - index /= 2 - self.heap[int(index)] = elem + def swim(self, index, elem): + ind = index + prev = int((index - 1) / 2) + while ind > 0 and elem.priority > self.heap[prev].priority: + self.heap[ind] = self.heap[prev] + ind = int((ind - 1) / 2) + prev = int((ind - 1) / 2) + self.heap[int(ind)] = elem - def down(self, index): + def sink(self, index): left = 2 * index + 1 right = 2 * index + 2 big = index From 5ffe5589a92ac49a5629265a8c2b933ff789d8ed Mon Sep 17 00:00:00 2001 From: MKruchok <74894852+MKruchok@users.noreply.github.com> Date: Thu, 23 Sep 2021 14:37:04 +0300 Subject: [PATCH 6/8] Update priority_queue.py --- priority_queue.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priority_queue.py b/priority_queue.py index 0a247b0..f402f9c 100644 --- a/priority_queue.py +++ b/priority_queue.py @@ -26,7 +26,7 @@ def swim(self, index, elem): self.heap[ind] = self.heap[prev] ind = int((ind - 1) / 2) prev = int((ind - 1) / 2) - self.heap[int(ind)] = elem + self.heap[ind] = elem def sink(self, index): left = 2 * index + 1 From 40e29101575c6e051109b1c61deade9a6f9a3216 Mon Sep 17 00:00:00 2001 From: Phlake Date: Fri, 3 Jun 2022 18:28:08 +0300 Subject: [PATCH 7/8] minor changes --- priority_queue.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/priority_queue.py b/priority_queue.py index f402f9c..b9121b9 100644 --- a/priority_queue.py +++ b/priority_queue.py @@ -21,29 +21,30 @@ def pop(self): def swim(self, index, elem): ind = index - prev = int((index - 1) / 2) + prev = (index - 1) // 2 while ind > 0 and elem.priority > self.heap[prev].priority: self.heap[ind] = self.heap[prev] - ind = int((ind - 1) / 2) - prev = int((ind - 1) / 2) + ind = (ind - 1) // 2 + prev = (ind - 1) // 2 self.heap[ind] = elem def sink(self, index): left = 2 * index + 1 right = 2 * index + 2 - big = index + current = index try: - while self.heap[big].priority < self.heap[left].priority or self.heap[big].priority < self.heap[right].priority: - if right >= len(self.heap): + while self.heap[current].priority < self.heap[left].priority or \ + self.heap[current].priority < self.heap[right].priority: + if right is None: return - if self.heap[big].priority < self.heap[left].priority: - big = left - if self.heap[big].priority < self.heap[right].priority: - big = right - self.heap[index], self.heap[big] = self.heap[big], self.heap[index] - index = big - left = 2 * big + 1 - right = 2 * big + 2 + if self.heap[current].priority < self.heap[left].priority: + current = left + if self.heap[current].priority < self.heap[right].priority: + current = right + self.heap[index], self.heap[current] = self.heap[current], self.heap[index] + index = current + left = 2 * current + 1 + right = 2 * current + 2 except IndexError: return From 02f3ae619ed10c9c9202780d50974bc0a1083f07 Mon Sep 17 00:00:00 2001 From: Phlake Date: Fri, 3 Jun 2022 18:29:31 +0300 Subject: [PATCH 8/8] minor changes --- .gitignore | 522 +++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 427 insertions(+), 95 deletions(-) diff --git a/.gitignore b/.gitignore index 510c73d..b02d695 100644 --- a/.gitignore +++ b/.gitignore @@ -1,114 +1,446 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates -# C extensions -*.so +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs -# Distribution / packaging -.Python +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -.hypothesis/ -.pytest_cache/ - -# Translations -*.mo -*.pot - -# Django stuff: +bld/ +[Bb]in/ +[Oo]bj/ +out/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj *.log -local_settings.py -db.sqlite3 +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html -# Flask stuff: -instance/ -.webassets-cache +# Click-Once directory +# publish/ -# Scrapy stuff: -.scrapy +# Publish Web Output +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj -# Sphinx documentation -docs/_build/ +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config -# PyBuilder -target/ +# Windows Azure Build Output +csx/ +*.build.csdef -# Jupyter Notebook -.ipynb_checkpoints +# Windows Store app package directory +AppPackages/ -# IPython -profile_default/ -ipython_config.py +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ -# pyenv -.python-version +# Others +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs -# celery beat schedule file -celerybeat-schedule +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ -# SageMath parsed files -*.sage.py +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ +# RIA/Silverlight projects +Generated_Code/ -# Spyder project settings -.spyderproject -.spyproject +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm -# Rope project settings -.ropeproject +# SQL Server files +*.mdf +*.ldf +*.ndf -# mkdocs documentation -/site +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Typescript v1 declaration files +typings/ +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +/build +/Build +/deploy +/package +bin/ +obj/ +sql/ +*/obj/debug +**/Debug +#ignore thumbnails created by windows +Thumbs.db +#Ignore files build by Visual Studio +*.obj +*.pdb +*.user +*.aps +*.pch +*.docstates +*.vspscc +*_i.c +*_p.c +*.ncb +*.suo +*.tlb +*.dbmdl +*.schemaview +*.tlh +*.cache +*.ilk +*.log +[Bb]in +[Dd]ebug*/ +*.lib +*.sbr +obj/ +[Rr]elease*/ +_ReSharper*/ +[Tt]est[Rr]esult* +*.docstates +*.swp +*.*~ +*.gpState +*.ReSharper* +*.preflight +*.nocommit +#Ignore Recovery Files made by Excel +~$*.xlsx +*.rdl.data + +*.jfm + +#====================================================================================== +# The below section could possibly be removed as these should be ignored by the above. +#====================================================================================== + +samples/in-memory/ticket-reservations/DemoWorkload/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +*.nupkg +samples/in-memory/ticket-reservations/packages/CircularGauge.1.0.0/CreatePackageFile.bat +*.suo +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Debug/PopulateAlwaysEncryptedData.exe +*.pdb +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Debug/PopulateAlwaysEncryptedData.vshost.exe +*.Cache +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Debug/PopulateAlwaysEncryptedData.exe.config +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs +samples/databases/wide-world-importers/workload-drivers/vehicle-location-insert/MultithreadedInMemoryTableInsert/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +*.exe +samples/features/in-memory/iot-smart-grid/ConsoleClient/bin/Release/DataGenerator.dll +samples/features/in-memory/iot-smart-grid/ConsoleClient/bin/Release/Reports/PowerDashboard.pbix +samples/databases/wide-world-importers/wwi-integration-etl/Daily ETL/bin/Development/Daily ETL.ispac +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Release/PopulateAlwaysEncryptedData.csproj.FileListAbsolute.txt +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Release/PopulateAlwaysEncryptedData.vshost.exe.config +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +*.dll +samples/features/in-memory/ticket-reservations/DemoWorkload/obj/Release/DemoWorkload.FrmConfig.resources +samples/features/in-memory/ticket-reservations/DemoWorkload/bin/Release/DemoWorkload.vshost.exe.config +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Debug/PopulateAlwaysEncryptedData.csproj.FileListAbsolute.txt +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Debug/PopulateAlwaysEncryptedData.vshost.exe.config +*.zip +samples/features/in-memory/ticket-reservations/packages/CircularGauge.1.0.0/CreatePackageFile.bat +samples/features/in-memory/ticket-reservations/TicketReservations/TicketReservations.dbmdl +samples/databases/wide-world-importers/workload-drivers/vehicle-location-insert/MultithreadedInMemoryTableInsert/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs +samples/databases/wide-world-importers/workload-drivers/vehicle-location-insert/MultithreadedInMemoryTableInsert/obj/Debug/MultithreadedInMemoryTableInsert.csproj.FileListAbsolute.txt +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Debug/PopulateAlwaysEncryptedData.Properties.Resources.resources +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Release/PopulateAlwaysEncryptedData.PopulateAlwaysEncryptedDataMain.resources +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/bin/Debug/PopulateAlwaysEncryptedData.vshost.exe.manifest +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Debug/PopulateAlwaysEncryptedData.PopulateAlwaysEncryptedDataMain.resources +samples/databases/wide-world-importers/workload-drivers/vehicle-location-insert/MultithreadedInMemoryTableInsert/obj/Release/MultithreadedInMemoryTableInsert.Properties.Resources.resources +samples/databases/wide-world-importers/sample-scripts/always-encrypted/PopulateAlwaysEncryptedData/obj/Release/PopulateAlwaysEncryptedData.Properties.Resources.resources +samples/features/in-memory/ticket-reservations/packages/CircularGauge.1.0.0/ReadMe.txt +*.dacpac +samples/features/in-memory/ticket-reservations/TicketReservations/obj/Release/Model.xml +samples/features/in-memory/ticket-reservations/DemoWorkload/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +*.dat + +*.user +samples/features/in-memory/ticket-reservations/DemoWorkload/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +samples/databases/wide-world-importers/workload-drivers/vehicle-location-insert/MultithreadedInMemoryTableInsert/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs +samples/features/in-memory/ticket-reservations/DemoWorkload/bin/Debug/DemoWorkload.vshost.exe.config +samples/features/in-memory/ticket-reservations/DemoWorkload/obj/Release/DemoWorkload.Properties.Resources.resources +samples/databases/wide-world-importers/wwi-integration-etl/Daily ETL/obj/Development/Project.params +samples/features/in-memory/ticket-reservations/DemoWorkload/obj/Debug/DemoWorkload.csproj.FileListAbsolute.txt +samples/features/in-memory/iot-smart-grid/Db/obj/Release/Model.xml +samples/applications/iot-smart-grid/DataGenerator/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/bin/Debug/MultithreadedOrderInsert.exe.config +samples/features/in-memory/iot-smart-grid/ConsoleClient/bin/Release/ConsoleClient.exe.config +*.jfm +samples/features/in-memory/ticket-reservations/TicketReservations/bin/Release/TicketReservations.publish.sql +samples/applications/iot-smart-grid/ConsoleClient/bin/Release/ConsoleClient.exe.config +samples/applications/iot-smart-grid/Db/Db.dbmdl +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs +samples/databases/wide-world-importers/wwi-dw-ssdt/wwi-dw-ssdt/obj/Debug/Model.xml +samples/databases/wide-world-importers/wwi-dw-ssdt/wwi-dw-ssdt/WideWorldImportersDW.dbmdl +samples/features/in-memory/iot-smart-grid/WinFormsClient/bin/Release/Reports/PowerDashboard.pbix +samples/databases/wide-world-importers/wwi-ssdt/wwi-ssdt/WideWorldImporters.dbmdl +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs +samples/databases/wide-world-importers/wwi-ssasmd/wwi-ssasmd/bin/WWI-SSASMD.asdatabase +samples/applications/iot-smart-grid/Db/obj/Release/Db.sqlproj.FileListAbsolute.txt +*.manifest +samples/applications/iot-smart-grid/WinFormsClient/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs +samples/databases/wide-world-importers/wwi-ssasmd/wwi-ssasmd/obj/Development/IncrementalShapshot.xml +samples/applications/iot-smart-grid/ConsoleClient/bin/Release/Reports/PowerDashboard.pbix +samples/applications/iot-smart-grid/Db/obj/Release/Model.xml +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/obj/Release/MultithreadedOrderInsert.csproj.FileListAbsolute.txt +samples/applications/iot-smart-grid/ConsoleClient/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs +samples/applications/iot-smart-grid/WinFormsClient/bin/Release/Client.exe.config +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/bin/Release/MultithreadedOrderInsert.exe.config +samples/databases/wide-world-importers/workload-drivers/order-insert/MultithreadedOrderInsert/obj/Debug/MultithreadedInMemoryTableInsert.MultithreadedOrderInsertMain.resources +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyEvaluationErrors.rdl.data +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyEvaluationErrorDetails.rdl.data +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyEvaluationDetails.rdl.data +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyDetails.rdl.data +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyDashboard.rdl.data +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/bin/Debug +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyDashboard - Backup.rdl +/samples/features/epm-framework/5.0/2Reporting/PolicyReports/PolicyDashboardFiltered.rdl.data +samples/features/sql-management-objects/src/out/CodeCoverage/CodeCoverage.config -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json +# Certificates +*.pem +*.p12 -# Pyre type checker -.pyre/ +# Composer +/vendor/ \ No newline at end of file