Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gslab-econ/template#88 recursive fun to flatten dicts #139

Merged
merged 3 commits into from
Oct 2, 2017

Conversation

arosenbe
Copy link
Contributor

@stanfordquan, can you review this portion of work from gslab-econ/template#88? It's just a recursive function to flatten dictionaries based on SO.

except:
print new_key
items.append((new_key, v))
print dict(items)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we want this print statement?

@@ -358,3 +358,15 @@ def finder(rel_parent_dir, pattern, excluded_dirs = []):
out_paths = []

return out_paths

def flatten_dict(d, parent_key = '', sep = ':'):
items = []
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please add docstring

@arosenbe
Copy link
Contributor Author

arosenbe commented Oct 2, 2017

Thanks @stanfordquan. the commit above takes care of your comments. It also adds a new feature to avoid clobbering the values of repeated keys. Could you take a look at that too?

Copy link

@qlquanle qlquanle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It works well, good job @arosenbe

print dict(items)
for key, val in sorted(d.items()):
# Create name of new key
new_key = parent_key + sep + key if parent_key else key
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please split logic across two lines, this is too next-level for me

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good suggestion. Done.

@arosenbe
Copy link
Contributor Author

arosenbe commented Oct 2, 2017

PR passed, merging.

@arosenbe arosenbe closed this Oct 2, 2017
@arosenbe arosenbe reopened this Oct 2, 2017
@arosenbe arosenbe merged commit d09a277 into 4.1.0 Oct 2, 2017
@arosenbe arosenbe deleted the template88_all_input branch October 2, 2017 20:07
qlquanle pushed a commit that referenced this pull request Mar 3, 2018
* Pull request for #92: Change executable-finding behavior in Stata builder (#104)

* #92 rm config checking of stata exec, unless stata packages are checked

* #92 edit the messages

* #92 fix conditional block for default exec

* #92 fix conditional block in build_stata after merge

* Fix missing paren

* Pull request for #98: R command line syntax (#103)

* #98 first pass

* #98 edits

* Pull request: Switch user_config.yaml to config_user.yaml (#106)

* switch name to config_user.yaml

* #61 more switchs

* Pull Request for #96: Write LaTeX builder (#105)

* #96 add latex builder

* #96 write test for latex builder

* #96 change to 4.0.2

* #96 small edit

* #96 delete log files

* #96 add nonstop option in latex builde

* Pull request for #93: add moving top level log to end_log  (#107)

* #93 first pass

* #93 second pass

* #93 add carriage return

* Pull request for #95: Check target files after each building step (#110)

* #95 first pass

* #95 second pass after testing

* fix PR

* small edits

* Pull Request for #108: Fix unit tests in the current builders (#109)

* #108 update test_build_stata

* #108 fix test_configuration_tests

* #108 fix test_log

* #108 fix test_build_r

* #108 change build_r and tests

* #108 modify test_build_r

* #108 fix some checks after adding check_targets

* #108 comment out target check in build_tables

* Pull request for #111: Fix release.py (#113)

* #111 fix

* #111 edit readme

* #111 fix PR

* Pull request for #97: Anything builder (#114)

* #97 write anything builder

* #97 change log_file to log_ext mechanism

* #97 new version, builder generator

* #97 add pretty comments

* #97 fix comment indent

* #97 respond to PR

* #97 warning edits

* Pull request for #94: allow folders to be excluded from search (#115)

* #94 allow folders to be exluded from search

* #94 add argument to upper level function

* #94 fix syntax

* Pull request: Bug in tablefill for latex (#102)

* LB Edits for latex tablefill

* #102 small edits and re-run tests

* #102 update python and re-run

* #102 update tests for tablefill latex

* #102 edit gitignore

* move import SCons.builder to builder instead of generator

* move import Scons.Builder outside action and into builder generator

* Pull request for migrating gencat (#116)

* first pass

* edit readme

* adding test

* uploading test

* fix test log

* Pull request for gslab-econ/template#60: Provenance (#120)

* #60 provenance.py mockup

* template#60 formatting

* #60 add pretty comments

* #60 add release mechanism

* template#60 respond to pr

* template#60 release PR

* gslab-econ/template#60 fix bug

* #60 respond to PR

* Pull request for #60: Provenance (round 2) (#121)

* #60 provenance.py mockup

* template#60 formatting

* #60 add pretty comments

* #60 add release mechanism

* template#60 respond to pr

* template#60 release PR

* gslab-econ/template#60 fix bug

* #60 respond to PR

* gslab-econ/template#60 add non-default sig

* gslab-econ/template#60 add external provenance option for release

* gslab-econ/template#60 pr

* gslab-econ/template#60 fix syntax

* Pull request for #91: size warning when git-lfs not present (#118)

* #91 first pass

* #91 improve warning message

* #91 second pass

* fix bug

* fix more bugs

* fix bugs and third pass

* fix bugs

* add in comments and options for path of git attributes

* first pass on debrief

* fix PR

* miss one file_name

* fix pr

* small edits

* implement debrief PR

* small edits

* Pull request for #122: Delete old local gslab_python versions upon both installation methods (#123)

* #122 test what pip does

* #122 cut some old code

* #122 abs path in setup.py

* #122 fix abs apth

* #122 Force uninstallation of all gslab tools at install time

* #123 #122 import site

* Pull request for template#60: update Provenance docs, update function args (#124)

* Allow version and readme args in function call instead of sysagrv, update docs

* respond to PR

* Pull request for #126: Fix lingering issues with release.py (#127)

* #126 hit all checks, no documentation

* #126 fix overwrite of scons_local_path

* #126 docs

* #127 #126 small readme changes for PR

* #126 small fixes

* #127 #126 abstract text search, better config checks

* #127 #126 search dir not output for SConstruct

* Pull request for #131: Change provenance to state_of_inputs (#132)

* #128 binding file limit on directory walk

* #131 purge provenance

* #131 first pass dir recording system

* #131 an SCons -> a SCons

* #131 change default log location

* #131 better naming, load into __init__, better prereq check

* #131 change default name for log

* #132 #131 change default log name

* #132 #131 gslab-econ/template#87 new log headding

* #132 #131 better path checks, fix walk-break rule, new path names

* #132 #131 fix heading creation of heading with hash

* Pull request for #130: Uncouple directory structure from gslab_python (#133)

* #130 fix log.py uncoupling

* #130 missing slash

* #133 add log.py optional argument

* #126 fix issue (#137)

* Pull request for 4.1.0: Change log exclusion syntax to prune (#138)

* change log exclusion syntax to proune

* #138 respond to pr

* gslab-econ/template#88 recursive fun to flatten dicts (#139)

* gslab-econ/template#88 recursive fun to flatten dicts

* #88 PR, don't clobber repeated keys

* #88 cleaner string manipulation in flatten_dict

* Pull request for #142: Allow parallelization in MATLAB builder (#143)

* #142 avoid collisions with sha1 hash of path

* #143 #142 fix source file removal

* Pull request for #140: Fix order of operations in release (#141)

* #140 remove superfluous assett upload

* #140 swap order of git and scons check; note behavior in readme

* #140 format readme

* #141 #140 split up up_to_date, raise error if not up-to-date

* #141 #140 put elif after if

* #141 #140 output -> log

* #141 #140 add function to determine if scons is a dry run

* #140 try some logging stuff

* #141 #140 loggers get own files, toggle on scons dry-run

* Pull request for #144: Do gslab_python side of MG review for 4.1.0 (#145)

* #144 gslab-econ/template#96 working versions of clean builders

* #144 fix recursive cases when checking vers and multiple cuaght exception

* #144 small adjustments to anything builder

* #145 #144 switch order of args in builders

* #145 #144 cleaner access to default stata executable

* #145 #144 docstrings in prereq checks

* #145 #144 unscramble more target/source args in the builders
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants