Ability to pass shell=True in session.run so that the env argument is actually taken into account.

Currently it seems that environment variables are not expanded by the underlying popen when you call session.run:
session.run(['echo', '%PATH%'])

displays %PATH% instead of the contents of this environment variable
The reason seems to be that the underlying nox.popen.popen does not use shell=True (as also recommended in https://github.com/theacodes/nox/issues/379#issuecomment-775237889)
This is maybe a windows-only issue ?
Anyway, I see two main ways to tackle this, all easy:

have popen receive arbitrary **kwargs so that we can pass shell=True (and in this case, some documentation section should probably be added in the place where we talk about env)
have shell be a first-class parameter in session.run, with default value shell=True (disruptive) or False (conservative)

What do you think ?

Yeah, I'm -1 on adding shell=True as either default or explicit behavior. If someone really needs this, they can use subprocess directly.

Does a direct subprocess run with the correct session's bin paths ? If not, then providing a session.popen(....., shell, env) could be a viable alternative for such advanced usage.
I did not mention it in my original post, but I did this because I was suspecting that my env was not properly passed to session.run. In order to eliminate this possibility in my mind, I came up with this simple experiment where I would first run echo %PATH% then echo %A% (with env={'A': 'HELLO'}) and finally come back to my actual non-working command.
So my point is: even if it is not useful for nominal use, it might be the intuitive action a developper would try in a debugging experiment. Maybe this can be solved through a specific documentation section about environment variables vs. shell expansion, I dont know.

Does a direct subprocess run with the correct session's bin paths ?

No, we don't modify the environment of Nox itself. But you could set PATH for the subprocess using session.bin_paths.

If not, then providing a session.popen(....., shell, env) could be a viable alternative for such advanced usage.

If it's for advanced usage in debugging session, invoking the shell explicitly via session.run seems sufficient to me. I would also consider using python -c "..." instead of running a shell.

So my point is: even if it is not useful for nominal use, it might be the intuitive action a developper would try in a debugging experiment. Maybe this can be solved through a specific documentation section about environment variables vs. shell expansion, I dont know.

The documentation of session.run has examples for both bash and cmd.exe, and one of these examples involves an environment variable. If you see a way to make this documentation clearer and help people avoid this mistake, it would definitely be appreciated.

The documentation of session.run has examples for both bash and cmd.exe, and one of these examples involves an environment variable.

Indeed this documentation seems sufficient for me. You can close the ticket if no other idea/feedback pops up

Alright, I'm closing this for now. Thanks for filing the issue @smarie :)


fold and unfold all bug

Hey! Can't re-open the old issue. #32
Fold and unfold all have a strange behaviour with two splits. It executes commands only in one first split, no matter it focused or not.

It's likely related to the plugin sending the wrong editor object to the Obsidian command callback. I'll look into it as soon as I manage.


gvim: editor area is not resized after maximize with guioptions-=r

Hello.
Steps to reproduce:

gvim -N -u NONE -c 'set guioptions-=r'
Maximize window.

Expected behaviour:
Window is maximized and editor area is resized to fit the window with a thin border around: http://i.imgur.com/YAC1MrL.png
Actual behaviour:
Window is maximized, but editor area is not resized and stays tiny while border is gigantic: http://i.imgur.com/jje4qHA.png
Starting insert mode, typing in insert mode doesn't resize the window, i.e. it stays this way.
Additional info:
If I resize window by dragging one of the borders, editor area is resized properly.
If I resize it very fast I can see redraws of editor area lagging behind and once they lag too much, redrawing during resize completely stops.
Please fix.

$ gvim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Feb  2 2017 00:15:55)
Included patches: 1-292
Modified by Gentoo-9999
Compiled by coacher@Photon
Huge version with GTK2 GUI.  Features included (+) or not (-):
+acl             +file_in_path    +mouse_sgr       +tag_old_static
+arabic          +find_in_path    -mouse_sysmouse  -tag_any_white
+autocmd         +float           +mouse_urxvt     -tcl
+balloon_eval    +folding         +mouse_xterm     +termguicolors
+browse          -footer          +multi_byte      +terminfo
++builtin_terms  +fork()          +multi_lang      +termresponse
+byte_offset     +gettext         -mzscheme        +textobjects
+channel         -hangul_input    -netbeans_intg   +timers
+cindent         +iconv           +num64           +title
+clientserver    +insert_expand   +packages        +toolbar
+clipboard       +job             +path_extra      +user_commands
+cmdline_compl   +jumplist        -perl            +vertsplit
+cmdline_hist    +keymap          +persistent_undo +virtualedit
+cmdline_info    +lambda          +postscript      +visual
+comments        +langmap         +printer         +visualextra
+conceal         +libcall         +profile         +viminfo
+cryptv          +linebreak       +python/dyn      +vreplace
-cscope          +lispindent      +python3/dyn     +wildignore
+cursorbind      +listcmds        +quickfix        +wildmenu
+cursorshape     +localmap        +reltime         +windows
+dialog_con_gui  +lua             +rightleft       +writebackup
+diff            +menu            -ruby            +X11
+digraphs        +mksession       +scrollbind      -xfontset
+dnd             +modify_fname    +signs           +xim
-ebcdic          +mouse           +smartindent     +xpm
+emacs_tags      +mouseshape      +startuptime     +xsmp_interact
+eval            +mouse_dec       +statusline      +xterm_clipboard
+ex_extra        -mouse_gpm       -sun_workshop    -xterm_save
+extra_search    -mouse_jsbterm   +syntax
+farsi           +mouse_netterm   +tag_binary
   system vimrc file: "/etc/vim/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
  system gvimrc file: "/etc/vim/gvimrc"
    user gvimrc file: "$HOME/.gvimrc"
2nd user gvimrc file: "~/.vim/gvimrc"
       defaults file: "$VIMRUNTIME/defaults.vim"
    system menu file: "$VIMRUNTIME/menu.vim"
  fall-back for $VIM: "/usr/share/vim"
Compilation: x86_64-pc-linux-gnu-gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libdrm -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/freetype2    -O2 -march=native -mfpmath=sse -fomit-frame-pointer -pipe -frecord-gcc-switches -Wimplicit-function-declaration -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Linking: x86_64-pc-linux-gnu-gcc   -Wl,--hash-style=gnu -Wl,-O1 -L/usr/local/lib -Wl,--as-needed -o gvim   -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype  -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE  -lm -lncurses -lnsl    -lacl -lattr -ldl  -L/usr/lib -lluajit-5.1

$ git bisect log
git bisect start
# bad: [7a073549a3b1e72037a4e98ceb406d057ac9ba50] patch 8.0.0295: test_viml hangs
git bisect bad 7a073549a3b1e72037a4e98ceb406d057ac9ba50
# good: [dea2570740a79c9f2c6ce723689e563f19aff5cf] patch 8.0.0260: build fails with tiny features
git bisect good dea2570740a79c9f2c6ce723689e563f19aff5cf
# bad: [56e6bd7ba2edcb069f55c3515341537c654a9046] patch 8.0.0277: the GUI test may trigger fontconfig and take a long time
git bisect bad 56e6bd7ba2edcb069f55c3515341537c654a9046
# good: [d58f03b1c21b5b0242718f89da53ddd67b1eff6b] patch 8.0.0268: may get ml_get error when :luado deletes lines
git bisect good d58f03b1c21b5b0242718f89da53ddd67b1eff6b
# good: [432c839ebd5b99d548de82f66ddb5a47740fdb28] patch 8.0.0272: crash on exit is not detected when running tests
git bisect good 432c839ebd5b99d548de82f66ddb5a47740fdb28
# good: [070b33da93ad3a191664bb61f5ccc50781460c03] patch 8.0.0274: possible recursive screen updating causes trouble
git bisect good 070b33da93ad3a191664bb61f5ccc50781460c03
# bad: [3954e3c4b5d2bfda4c481c076fbc39ab06be7639] patch 8.0.0276: unnecessary #ifdefs
git bisect bad 3954e3c4b5d2bfda4c481c076fbc39ab06be7639
# bad: [e3caa1109072b9655f8d5103c92efd73177f8577] patch 8.0.0275: the screen may be updated at the wrong time
git bisect bad e3caa1109072b9655f8d5103c92efd73177f8577
# first bad commit: [e3caa1109072b9655f8d5103c92efd73177f8577] patch 8.0.0275: the screen may be updated at the wrong time

None of the problems described above happen with 8.0.0274.

I cannot reproduce the problem.  There must be something else that matters.

What should I check?

I can reproduce this. Patch 8.0.275 is triggering this behaviour (sometimes). And here is why.

Luchr wrote:

I can reproduce this. Patch 8.0.275 is triggering this behaviour
(sometimes). And here is why.

Thanks, this is very helpful.  So the order of calls is different from
what the code expects: gui_resize_shell() is called with the new
maximized size first, and then gui_may_resize_shell() calls it again
with the old size.
Resetting new_pixel_height in gui_resize_shell() should help.
However, the call to gui_resize_shell() which you marked with "Critical
part" is still not honoured.  I wonder where this comes from, perhaps
because of scrollbars?  Anyway, at the end of gui_resize_shell() is a
check for new_pixel_height, thus if it happened before that we would not
have the problem.  Then the question is where the call to
gui_resize_shell() came from.
Currently any ui_breakcheck() may cause new_pixel_height to be set.
Thus we need to call gui_may_resize_shell() after it.  Let's at least do
this in the main loop.
I'll make a patch for this.  If you still see the problem after that,
please try to see where gui_resize_shell() is called from when
updating_screen is set and it's not called again later with the right
size.
--
It is illegal for anyone to give lighted cigars to dogs, cats, and other
domesticated animal kept as pets.
[real standing law in Illinois, United States of America]
/// Bram Moolenaar --<EMAIL_ADDRESS>-- http://www.Moolenaar.net   \
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \
\\  an exciting new programming language -- http://www.Zimbu.org        ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

With 8.0.299 I don't see the problem any more. [I'm not the person who opened this bug, perhaps she/he should do an independent test.]
If I understand correctly, you wanted to see when gui_resize_shell is called with updating_screen set (the thing I marked above). Here is the backtrace where I deleted calls to external libs:
#0  0x000000000058f010 in gui_resize_shell (pixel_width=652, pixel_height=pixel_height@entry=756) at gui.c:1448
#1  0x000000000059653f in form_configure_event (widget=<optimized out>, event=0x7fffffffc510, data=<optimized out>)
    at gui_gtk_x11.c:4537
#9  0x000000000059d1fc in gtk_form_send_configure (form=0x8e38e0) at gui_gtk_f.c:1203
#10 0x000000000059d1fc in gtk_form_size_allocate (widget=0x8e38e0, allocation=0x7fffffffc9e0) at gui_gtk_f.c:674
#39 0x000000000059aa55 in gui_mch_update () at gui_gtk_x11.c:6579
#40 0x0000000000573065 in ui_breakcheck_force (force=force@entry=0) at ui.c:375
#41 0x0000000000573077 in ui_breakcheck () at ui.c:357
#42 0x0000000000495055 in vgetorpeek (advance=advance@entry=1) at getchar.c:2041
#43 0x00000000004963d8 in vgetc () at getchar.c:1605
#44 0x0000000000496849 in safe_vgetc () at getchar.c:1801
#45 0x00000000004da538 in normal_cmd (oap=oap@entry=0x7fffffffddd0, toplevel=toplevel@entry=1) at normal.c:628
#46 0x00000000005ac165 in main_loop (cmdwin=cmdwin@entry=0, noexmode=noexmode@entry=0) at main.c:1315
#47 0x00000000005ad120 in vim_main2 () at main.c:877
#48 0x000000000040ffdc in main (argc=<optimized out>, argv=<optimized out>) at main.c:415

The line numbers in ui.c and gui.c are ±10 compared to 8.0.0299 because of some debugging code I inserted.

Maximizing works fine, resizing also happens without lagging with 8.0.0299.
Thank you very much!

Luchr wrote:

With 8.0.299 I don't see the problem any more. [I'm not the person who opened this bug, perhaps she/he should do an independent test.]
If I understand correctly, you wanted to see when gui_resize_shell is called with updating_screen set (the thing I marked above). Here is the backtrace where I deleted calls to external libs:
#0  0x000000000058f010 in gui_resize_shell (pixel_width=652, pixel_height=pixel_height@entry=756) at gui.c:1448
#1  0x000000000059653f in form_configure_event (widget=<optimized out>, event=0x7fffffffc510, data=<optimized out>)
    at gui_gtk_x11.c:4537
#9  0x000000000059d1fc in gtk_form_send_configure (form=0x8e38e0) at gui_gtk_f.c:1203
#10 0x000000000059d1fc in gtk_form_size_allocate (widget=0x8e38e0, allocation=0x7fffffffc9e0) at gui_gtk_f.c:674
#39 0x000000000059aa55 in gui_mch_update () at gui_gtk_x11.c:6579
#40 0x0000000000573065 in ui_breakcheck_force (force=force@entry=0) at ui.c:375
#41 0x0000000000573077 in ui_breakcheck () at ui.c:357
#42 0x0000000000495055 in vgetorpeek (advance=advance@entry=1) at getchar.c:2041
#43 0x00000000004963d8 in vgetc () at getchar.c:1605
#44 0x0000000000496849 in safe_vgetc () at getchar.c:1801
#45 0x00000000004da538 in normal_cmd (oap=oap@entry=0x7fffffffddd0, toplevel=toplevel@entry=1) at normal.c:628
#46 0x00000000005ac165 in main_loop (cmdwin=cmdwin@entry=0, noexmode=noexmode@entry=0) at main.c:1315
#47 0x00000000005ad120 in vim_main2 () at main.c:877
#48 0x000000000040ffdc in main (argc=<optimized out>, argv=<optimized out>) at main.c:415

The line numbers in ui.c and gui.c are ±10 compared to 8.0.0299 because of some debugging code I inserted.

Thanks.  Yeah, this ui_breakcheck() inside vgetorpeek() is a place where
we really don't know if it's OK to go into redrawing the screen or not.
How it is now it's on the safe side, thus if you don't experience Vim
not redrawing after a resize there is no reason to change this.
--
How do you know when you have run out of invisible ink?
/// Bram Moolenaar --<EMAIL_ADDRESS>-- http://www.Moolenaar.net   \
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \
\\  an exciting new programming language -- http://www.Zimbu.org        ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


Update README.md

Add example for getting covering cells around a point for a given radius

S2 is awesome, grateful to be able to contribute a tiny bit back :-)


Version are not similar

The document mention:
owl:versionIRI <http://www.ebu.ch/metadata/ontologies/ebucoreplus/1.0.7> ;

and
owl:versionInfo "Version 1.0.0"@en ;

Add a check on the CI can be great to ensure version information is similar to the version IRI.

This calls for a EBUCore QA-suite that contains certain rules and exposes them e.g. in a traffic light report system (info=green, warning=yellow and error=red). We'll propose a first automated approach on that and will keep you infrormed and look forward to aligning with you.


Function to merge cases

Request Type
Feature Request
Problem Description
In the current version of Thehive4py there's a function to merge cases?
if not, it would be possible to create one in which you enter the IDs of the cases you wish to merge?

We will implement this as part of #85


DBZ-3365 Allow building Oracle connector on CI

https://issues.redhat.com/browse/DBZ-3365

@Naros Oracle module is still guraded by oracle profile in the parent POM. Is it still necessary?

Oracle module is still guraded by oracle profile in the parent POM. Is it still necessary?

I think so, although you and @gunnarmorling may think differently.  I left the profile there for now because if a contributor does a mvn install, it would then attempt to build & run the Oracle test suite and that would result in a build failure since for the moment the Oracle database has to be built separately in Vagrant.  I think in conjunction with removing the profile, we should also look at investing in spinning up an Oracle 19 docker container like we do for the other connectors from Oracle registry perhaps?


Split indexing into smaller batches

Needed to mitigate very large disk usage (ICOS) or large number of inodes (DiSSCo, >2M).
Goal: add --max-records and --offset options to dataset download task.

This is not useful in practice if the results are not ordered (eg DiSSCo), as it doesn’t allow to restart the job.


update contributing documentation, pr template

[x] Closes  #798
[x] I am familiar with the contributing guidelines.
[x] Fully tested. Added and/or modified tests to ensure correct behavior for all reasonable inputs. Tests (usually) must pass on the TravisCI and Appveyor testing services.
[x] ~Adds description and name entries in the appropriate docs/sphinx/source/whatsnew file for all changes.~ I don't think this is necessary for this PR.
[x] Pull request is nearly complete and ready for detailed review.

also updates PR template building on discussion in https://github.com/SolarArbiter/solarforecastarbiter-core/pull/150

Ready for review. Let's save a bigger rewrite of these docs for later.
Can we also delete the wiki page when merging this PR? https://github.com/pvlib/pvlib-python/wiki/Contributing-to-pvlib-python


Added Visualization for BFS Algorithm

fixes #18
Description: Added BreadthFirstSearch Traversal Visualization
Checklist

[x] I've followed the Contributing guidelines provided in the repository.
[x] I've made the changes which were demanded in the linked issue.
[x] I've tested my code on a Chromium based browser.
[x] I've tested my code on Mozilla Firefox.
[x] My code gave a clean console on debugging. (no warnings/errors)

Testimonial

Thanks for mentioning it @EmperorYP7,  I just found that the application was entering into an infinite loop in case of no possible paths, leading to freezing of the browser.
I have fixed this bug in my later commits

There are certain things that can be made better

Like creating obstacles.
And adding more frames to the animation
Ping me if you've any problems!

Heads up @RishavMz!

Yes, an option to auto generate obstacles ( as a maze or randomly ) would be great. I'm on it...
But can increasing frames be done by slowing down the animation delay , or by adding more set images in queue to be displayed on screen??? @ankiiitraj

You got it right talking about adding more set of states/images to the queue!


Error deleting vm during Creating missing vms step in errand

$ bosh run-errand smoke-tests
Using environment 'https://<IP_ADDRESS>:25555' as client 'user-HFRI9W2'

Using deployment 'dedicated-mysql-broker'

Task 7103

16:38:14 | Preparing deployment: Preparing deployment
16:38:14 | Preparing package compilation: Finding packages to compile (00:00:00)
16:38:14 | Preparing deployment: Preparing deployment (00:00:00)
16:38:14 | Creating missing vms: smoke-tests/38f51ba4-2db0-41a1-a933-b5d180974190 (0) (00:00:43)
            L Error: CPI error 'Bosh::Clouds::CloudError' with message 'Deleting vm 'vm-fef5b047-e051-4835-4725-f67be2208ce9': Failed to find Google Instance 'vm-fef5b047-e051-4835-4725-f67be2208ce9': Get https://www.googleapis.com/compute/v1/projects/cf-dedicated-mysql/aggregated/instances?alt=json&filter=name+eq+.%2Avm-fef5b047-e051-4835-4725-f67be2208ce9: oauth2: cannot fetch token: 400 Bad Request
Response: {
  "error" : "invalid_grant",
  "error_description" : "Invalid JWT Signature."
}' in 'delete_vm' CPI method

16:41:58 | Error: CPI error 'Bosh::Clouds::CloudError' with message 'Deleting vm 'vm-fef5b047-e051-4835-4725-f67be2208ce9': Failed to find Google Instance 'vm-fef5b047-e051-4835-4725-f67be2208ce9': Get https://www.googleapis.com/compute/v1/projects/cf-dedicated-mysql/aggregated/instances?alt=json&filter=name+eq+.%2Avm-fef5b047-e051-4835-4725-f67be2208ce9: oauth2: cannot fetch token: 400 Bad Request
Response: {
  "error" : "invalid_grant",
  "error_description" : "Invalid JWT Signature."
}' in 'delete_vm' CPI method

Started  Mon May 22 16:38:14 UTC 2017
Finished Mon May 22 16:41:58 UTC 2017
Duration 00:03:44

Task 7103 error

Running errand 'smoke-tests':
  Expected task '7103' to succeed but was state is 'error'

Exit code 1

When creating a VM during an errand run, I get an error from the CPI about failing to delete a VM. This is with the golang bosh cli.
A following attempt to run the errand fails with:
16:42:09 | Preparing deployment: Preparing deployment
16:42:10 | Preparing package compilation: Finding packages to compile (00:00:00)
16:42:10 | Preparing deployment: Preparing deployment (00:00:01)
16:42:10 | Creating missing vms: smoke-tests/38f51ba4-2db0-41a1-a933-b5d180974190 (0) (00:01:01)
16:43:11 | Updating instance smoke-tests: smoke-tests/38f51ba4-2db0-41a1-a933-b5d180974190 (0) (canary) (00:03:20)
            L Error: CPI error 'Bosh::Clouds::CloudError' with message 'Creating vm: Failed to find Google Image 'stemcell-9f443a2a-bfbb-48b2-49fd-8933875cec1b': Get https://www.googleapis.com/compute/v1/projects/cf-dedicated-mysql/global/images/stemcell-9f443a2a-bfbb-48b2-49fd-8933875cec1b?alt=json: oauth2: cannot fetch token: 400 Bad Request
Response: {
  "error" : "invalid_grant",
  "error_description" : "Invalid JWT Signature."
}' in 'create_vm' CPI method
...

And then:
16:47:33 | Preparing deployment: Preparing deployment
16:47:33 | Preparing package compilation: Finding packages to compile (00:00:00)
16:47:33 | Preparing deployment: Preparing deployment (00:00:00)
16:47:33 | Creating missing vms: smoke-tests/38f51ba4-2db0-41a1-a933-b5d180974190 (0) (00:00:11)
            L Error: CPI error 'Bosh::Clouds::CloudError' with message 'Creating vm: Failed to find Google Image 'stemcell-9f443a2a-bfbb-48b2-49fd-8933875cec1b': Get https://www.googleapis.com/compute/v1/projects/cf-dedicated-mysql/global/images/stemcell-9f443a2a-bfbb-48b2-49fd-8933875cec1b?alt=json: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "Google Internet Authority G2")' in 'create_vm' CPI method

Hi!
Few questions: Does this repro for a bosh deploy or just errands? Is the private key used for the service account still valid?

bosh deploy seems to work no problem. On the next attempt after the above three it worked successfully without any problem. The key still works and is valid. Someone else on my team said he saw the same thing a while ago. It failed in different ways and after enough attempts it just worked.

@johnsonj @mfine30 this could happen anywhere (bosh deploy, recreate, etc.) since it's all executing same cpi calls. i've definitely seen it happen in other places.

Is the director configured with a JSON key or a service account in this case?
This error doesn't look related to time skew but to the key used to sign the OAuth request. Either the key we're using isn't valid (not all there? set? we don't verify the contents of the json_key) or we don't successfully transmit it (eg #167 type bug)


xss bot updates

Three changes in this PR:

change the pow to the one of kctf
add a note how to use allowConnectTo for testing
update the README

beautiful


link_to_remove_association removes all nearby links and form fields.

When I am on the edit view on my form and I click to remove one nested field, all nearby fields and links are removed from the form.

Here is my code:
_form.html.erb
<fieldset class="fieldset-border">
  <legend class="fieldset-border">
    <% if new %>
      Add Plan
    <% else%>
      Edit Plan
    <% end %>
  </legend>

  <%= simple_form_for @plan, html: {class: 'form'} do |f| %>

Fields with * are required

NOTE: Plan Name, Amount, Interval Count and Interval(Day/Week/Month/Year) can not be edited once created.

    <%= f.text_field :name, class: 'full-input-text', placeholder: '* Plan Name', disabled: !new %>
    <%= f.text_field :amount, class: 'full-input-text', placeholder: '* Amount in cents', disabled: !new %>
    <%= f.text_field :interval_count, class: 'full-input-text', placeholder: '* Interval Count Eg: 1', disabled: !new %>
    <%= f.select :interval, ['Day', 'Week', 'Month', 'Year'],  {}, class: 'full-input-text', disabled: !new %>
    <%= f.text_field :trendships, class: 'full-input-text', placeholder: 'Number of Trendships' %>
    <%= f.text_field :additional_credit, class: 'full-input-text', placeholder: 'Addtional trendships cost in cents' %>
    <%= f.select :status, ['Active', 'Inactive'], {}, class: 'full-input-text' %>

      <%= f.text_area :info, class: 'textarea', placeholder: 'Plan Info', rows: 5 %>

      <%= f.check_box(:recommended, class: 'check-box')  %>
      <%= f.label(:recommended) %>

    <%= f.simple_fields_for :plan_benefits do |plan_benefit| %>
      <%= render 'plan_benefits', f: plan_benefit %>
    <% end %>

      <%= link_to_add_association 'Add Benefits', f, :plan_benefits, class: 'btn btn-outline-secondary pull-right' %>

    <%= f.submit "Save", class: 'btn btn-primary' %>

<%= flash[:plan_error] %>

  <% end %>
</fieldset>

plan_benefit_fields.html.erb

    <%= f.text_field :details, class: 'full-input-text', placeholder: 'Eg. Featured on Trendship social media'%>

    <%= link_to_remove_association "Remove Benefit", f, class: 'btn btn-danger' %>

Please what could I be doing wrong?

I can't be entirely sure, but the

should be at least

an id is ment to be unique on a page, and while the page will render it could behave unexpectedly. E.g. this would most likely affect the saving of the form.
But nevertheless afaik this would not cause the effect we are seeing here. When clicking the link_to_remove_association the code will remove the nearest div with class .nested-fields so not sure why the save/add links would also disappear, unless you have some other error in the html?

@nathanvda I got it fixed, thanks to your observation about the HTML. The issue was with the
 and
 in the nested partial. Once I removed those, it worked fine.
This issue can be closed, sorry for the false alarm.

Hi with your hint I saw it: in your code you wrote

    <%= f.text_field :details, class: 'full-input-text', placeholder: 'Eg. Featured on Trendship social media'%>

Notice the second
 which should have been
.
Can I suggest to take a look at haml or slim which really help in writing html that is always correct? I know it is not for everybody but for me it has proven a great help, because imho it makes my view code more readable and cleaner and will prevent me from mistakes like that.
But you found and fixed it yourself! :+1: :+1: :+1:


chore(docs): AS-13 docs rewrite

Rationale
We are doing a large docs refactor and reorganization. This PR, currently, is a draft to share the new format/structure/content and to get feedback on it.

NOTE
Currently, this is only helm docs. Once we approve of the format and content, it will be applied to the docker-compose documentation.

All of the links, currently, are just relative links back to the docs directory. I will have to update these to full https://github.com... links before merging!
Changes

Checklist

[ ] This PR maintains parity between Docker Compose and Helm

Testing

There's nothing about this that I wouldn't ship - there are some notes at the top of the current pages that help customers know what has recently changed (license files / delegated operators) that may require additional action on their part. We may want to include those notes (but maybe somewhere that makes sense, like the Upgrade section...)

I think that makes sense. They are in the upgrading doc but, I can definitely add a warning or info section at the top with the delegated operator and license file notes to draw more attention to it. I can also have it link right to the relevant sections of the upgrade doc, but at least more attention is drawn to it?

I think that makes sense. They are in the upgrading doc but, I can definitely add a warning or info section at the top with the delegated operator and license file notes to draw more attention to it. I can also have it link right to the relevant sections of the upgrade doc, but at least more attention is drawn to it?

I like this - a much briefer section about "things that have changed that you may care about" with links to information...

@findtopher - how's something like this?

🎉 🎉 🎉


Issue with the set_access_control method

The code snippet below probably sets the permission for user only (not group or other)
        new_dir_permissions = "rwxr-xrw-"
        directory_client.set_access_control(permissions=new_dir_permissions)

I'd like to check the grammar for setting multiple AD groups but the Azure documentation on DataLakeDirectoryClient API doesn't include such a method.
The Azure documentation site shows an example but I think the link may be broken or it cannot be easily retrieved:
:::code language="python" source="~/azure-storage-snippets/blobs/howto/python/python-v12/ACL_datalake.py" id="Snippet_FileACL":::

The other example on the same page has:
        acl = 'user::rwx,group::rwx,other::rwx,user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r--'
        directory_client.set_access_control_recursive(acl=acl)

So I assume the same format applies to set_access_control. Say if I have two AD groups and one is to be given r-- while another one is to be given rwx, shall I use the following?
user:{object_id_of_ad_group1}:r--,user:{object_id_of_ad_group2}:rwx
Hope the documentation can be more clear and consistent. Thanks in advance for looking into this.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 12220c1c-ebce-cf63-0ef7-41c6b6747329
Version Independent ID: 92bd839f-13a7-296d-c11d-f88fabca61e3
Content: Use Python to manage data in Azure Data Lake Storage Gen2
Content Source: articles/storage/blobs/data-lake-storage-directory-file-acl-python.md
Service: storage
Sub-service: data-lake-storage-gen2
GitHub Login: @normesta
Microsoft Alias: normesta

@whsh-ca Thanks for the question! We are investigating and will update you shortly.

@whsh-ca
Thanks for the feedback! I have assigned the issue to the content author to investigate further and update the document as appropriate.

Thank @SumanthMarigowda and @JamesTran-MSFT for the follow-up and prompt update. Please keep us posted.

Hi @whsh-ca yes - that is exactly how you tag each group. Use the same pattern in the code sample and append each group or user as you show in your example. RE: the code snippet that was not shown, that is because you were looking at the github page. The web rendered version of that article is here https://docs.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-acl-python. All code snippets will appear rendered in that published article. Thanks!
#please-close

Thank @normesta for the clarification.


10.13.6 changes name of right_option

Symptom: mapping for right_option to Fn no longer works after upgrade to 10.13.6.
I have a simple modification mapping for right_option to fn.
Running event viewer, I see that the right option key is now reporting as "right_alt"
However, when adding a mapping, right_alt isn't an option, only right_option.

beta version 12.1.53 resolves this issue.


[jsx-no-bind] Only warn for props and account for variable declaration

This will fix #1444, #1395 and #1417, so that the rule will only warn if there are violations in JSX attributes and will keep track of const variable declarations of violations.
For examples,
renderButton(someParams){
  const clickHandler = this.handleClick.bind(this, someParams);
  return(
    <ButtonComponent
      onClick={clickHandler}
    >
      Submit
    </ButtonComponent>
  )
}

will warn.
But
 render() {
    return (
      <div>
        {this.props.list.map(this.wrap.bind(this, 'span'))}
      </div>
    );
  }

will not.
The new implementation is simply keeping track of each const variable declaration that references a violation in each block statement and reports them if they got passed into JSX props.
With the update, this rule does not account for any assignment expression and variable declarations that are not const. I feel that it is acceptable to leave them for future updates.
Please let me know if there is any idea for improvements. 😄
Fixes #1444. Fixes #1395. Fixes #1417.

@ljharb Forgot about them. Will fix. 😅

@ljharb Thanks for the feedback! Now I will always think of async arrow functions in future contributions. Let me know if there is anything else I can improve on this PR. 😄

@jackyho112 I was mainly asking about ensuring that <Foo prop={async () => {}} /> warns too :-)

@ljharb 😄 , didn't know. I'm on it!

Let's also ensure that function () {}, function * () {}, and async function () {} all warn as well :-)

@ljharb Good call. Gonna have to do it tomorrow though.

Thanks for the approval!

However, with react-navigation options, it can not pass the rule

@windhost can you file a separate issue for that? since NavigationOptions returns an object, it shouldn't be treated like a component.

@ljharb 👌

#1736


Model building function arguments not clearly documented

The arguments for build_fn are not clearly documented. For example, it's not clear where the required arguments below come from:
https://github.com/adriangb/scikeras/blob/cf7ea78d062fbd5a2b9201b402422cce4afa95d7/tests/mlp_models.py#L8-L11
I don't see any place the user specified the number of features or number of outputs. This is especially confusing because the user typically knows the required arguments ahead of time because they have a dataset and problem in mind.
The docstring for BaseWrapper._fit_build_keras_model says the following:
https://github.com/adriangb/scikeras/blob/cf7ea78d062fbd5a2b9201b402422cce4afa95d7/scikeras/wrappers.py#L155-L156
How the "appropriate arguments" determined?

I think the following would resolve this issue:

Allow the user to control which arguments get passed to build_fn via passing model__n_features, model__n_classes to KerasClassifier.__init__, then piping them to build_fn.
Clearly documenting which parameters can be passed and where they come from.

The documentation for (1) would be a lot clearer and a lot shorter.

it's not clear where the required arguments below come from:

Those are instance attributes of BaseWrapper set by BaseWrapper.fit. You are right that it is not clearly documented what parameters are available.
The way this works is that any instance attribute that matches a parameter name in build_fn will be passed to it.

Allow the user to control which arguments get passed to build_fn via passing model__n_features, model__n_classes to KerasClassifier.__init__, then piping them to build_fn.

I envision something like this being part of the param_routing/parameter precedence effort. build_fn should be able to request n_features_in_ (which is generated by fit) but the user should have the ability to specify model__n_features_in_ in which case build_fn(n_features_in_, ...) would get the value of model__n_features_in_ instead of n_features_in_

Do you think it might help to document what instance attributes are available for build_fn to request (i.e. n_features_in_, cls_type_, etc.)?

I think the simplest solution is parameter routing. The documentation would be simple: "Parameters passed to BaseWrapper.__init__ prefixed with model__ will be passed to the function model." This solution would also reduce the amount of code, at least 14 lines (1, 2).
I think the documentation around which instance attributed are available (solution (2)) would be longer, so it'd be harder to maintain. I think this solution would make SciKeras harder to use: the user would have to look at the documentation more frequently to determine what parameters are allowed.

I'm confused as to how users would route parameters in init that are created internally by fit.

I'm confused as to how users would route parameters in init that are created internally by fit.

Why would that be required?

There are many things that that enables, but two quick ones are:

Set input dimensions based on n_features_in_
Choose loss function for classifiers based on cls_type_.

Those sound useful for testing. But I'm having a hard time imagining the user for the typically SciKeras user, someone that has the data and model on hand.
When would they find useful to use a parameter created internally by fit? And why can't they set the relevant parameters themselves? (e.g, model__n_features=X.shape[1] or model__n_classes=len(np.unique(y))).

I think it is an important feature of this package to be able to create a self-contained estimator that is able to handle multiple input shapes and output types, like most Scikit-Learn estimators. That's actually the genesis of this entire package, it all started here.
I don't think this should be hard to document, since we should be listing all of these attributes anyway.
I also think that parameter routing and parameter precedence can and should co-exist with the ability to pull in these instance attributes created by fit.

an important feature of this package to be able to create a self-contained estimator that is able to handle multiple input shapes and output types, like most Scikit-Learn estimators.

That's a better use case. I can see the motivation now.
I think it'd be cleaner to pass a keyword argument meta if it's accepted by the model building function, rather than determining some priority scheme. meta could be a dictionary with all the relevant parameters. I'm imagining this interface:
def model_fn(meta=None):
    assert set(meta.keys()) == {"n_features", "n_classes", "n_outputs", ...}
    ...
    return model

This would also enhance ease-of-use for the user: they can very quickly see which parameters are available by inspecting meta.keys().

That does look promising, I was already thinking of having a meta_parameters dict that is used to "overwrite" __init__ params such that we don't have to use _random_state to overwrite random_state and instead can do:
def fit(X, y....):
    meta_params = self.get_params()  # initialize meta_params
    meta_params["random_state"] = ...whatever conversion is needed
    self._fit_keras_model(X, y,..., meta_params=meta_params)

Then we could easily filter these parameters and remove the routing prefixes before passing them onto their destination.


make type checking generate declaration files by default and do type checking step first when linting

this project needs to generate the declaration files to lint successfully, so might as well make type checking generate declaration files by default and just do the type checking step first when linting

this project doesn't need to generate the type declarations to lint successfully (or at least not anymore)
not sure what this is about anymore


code for new paper

I am really intesressted in your new work EXPERT BINARY CONVOLUTION presented in the new paper HIGH-CAPACITY EXPERT BINARY NETWORKS ICLR 2021.
Maybe add it for the choices as one of the weight_pre_process ?

Hi @xiaozhongtian, thank you for interest, we have this in the pipeline. I am currently waiting for the internal green light before releasing.

OK. Thanks for the sharing.

Hi! Is there any update on this? I am also very interested in your work. Do you have any indication when it will be published? Thanks

Apologies for the delay, I am afraid it's still stuck on the internal IP check. I will post a link here once it's out.

Hi @xiaozhongtian, I am not sure if you saw, but the code is there: https://github.com/1adrianb/expert-binary-networks

Ah ha @sfalkena , Thank you for this update. I haven't noticed that. Great!


NIFI-7906 Fixed a bug in how record paths were handled.

Thank you for submitting a contribution to Apache NiFi.
Please provide a short description of the PR here:
Description of PR
Enables X functionality; fixes bug NIFI-YYYY.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[ ] Is there a JIRA ticket associated with this PR? Is it referenced
in the commit message?

[ ] Does your PR title start with NIFI-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.

[ ] Has your PR been rebased against the latest commit within the target branch (typically main)?

[ ] Is your initial contribution a single, squashed commit? Additional commits in response to PR reviewer feedback should be made on this branch and pushed to allow change tracking. Do not squash or use --force when pushing to allow for clean monitoring of changes.

For code changes:

[ ] Have you ensured that the full suite of tests is executed via mvn -Pcontrib-check clean install at the root nifi folder?
[ ] Have you written or updated unit tests to verify your changes?
[ ] Have you verified that the full build is successful on JDK 8?
[ ] Have you verified that the full build is successful on JDK 11?
[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?
[ ] If applicable, have you updated the LICENSE file, including the main LICENSE file under nifi-assembly?
[ ] If applicable, have you updated the NOTICE file, including the main NOTICE file found under nifi-assembly?
[ ] If adding new Properties, have you added .displayName in addition to .name (programmatic access) for each of the new properties?

For documentation related changes:

[ ] Have you ensured that format looks appropriate for the output in which it is rendered?

Note:
Please ensure that once the PR is submitted, you check GitHub Actions CI for build issues and submit an update to your PR as soon as possible.

Here's the flow: Updated_Graph_Test.xml.txt

Gremlin setup:
         \,,,/
         (o o)
-----oOOo-(3)-oOOo-----
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/janusgraph/lib/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/janusgraph/lib/logback-classic-1.1.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
plugin activated: tinkerpop.server
plugin activated: tinkerpop.tinkergraph
19:44:41 WARN  org.apache.hadoop.util.NativeCodeLoader  - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
plugin activated: tinkerpop.hadoop
plugin activated: tinkerpop.spark
plugin activated: tinkerpop.utilities
plugin activated: janusgraph.imports
gremlin> :remote connect tinkerpop.server conf/remote.yaml
==>Configured localhost/<IP_ADDRESS>:8182
gremlin>
gremlin>
gremlin> :> g.V("person").property("name", "John").property("age", 35).next()
java.util.NoSuchElementException
Type ':help' or ':h' for help.
Display stack trace? [yN]
gremlin>
gremlin> :> g.addV("person").property("name", "John").property("age", 35).next()
==>v[4304]
gremlin>
gremlin>
gremlin> :> g.V().hasLabel("person").has("name", eq("John")).valueMap().next()
==>name=[John]
==>age=[35]
gremlin>

Cypher setup:
CREATE (n:Person { name: 'Andy', title: 'Developer' })
CREATE (n:Person { name: 'John' })

JanusGraph setup:
docker run --name janusgraph -p 8182:8182 -d janusgraph/janusgraph:latest

Neo4J setup:
docker run --name neo4j -p 7474:7474 -p 7687:7687 -d neo4j:3.5

Looks like there are test failures

Yup. Don't know how I missed that other than "it's been one of a last two weeks."

@levilentz please jump in and review the changes I made.

@MikeThomsen, just took a look at the code, and that is a very nice way to fix the issues associated with the original code.  Apologies to you and @mattyb149 for introducing this bug.


Support generic zip files or image folders

Would be great to be able to use with zip files

I'm currently working on a patch to add SL1 support, which is (basically) a zip of pngs (+ a config.ini file for settings), which I guess could be made generic enough to handle this. What were you thinking of for putting in the default settings in such a case?

chitubox generic zip is the ideal candidate.
It basically is image files + Gcode + Config

OK. I've taken a look at that, it's almost identical to the SL1 format, so adding both shouldn't be that hard.
I do need to think a bit about the right place to add the abstractions to handle the different metadata blobs the three (four if photons has variance from photon) formats require - IFileHeader is currently very photon specific.
Also need to consider what the use case is here, exactly - I can see three options:

Loading zip files, validating them, saving them back out as zips - i.e. the roundtrip option by implementing savers and loaders with (probably) individual abstractions of PhotonFile
Loading zip (or other type) files, validating them, saving them back out as photon - i.e. only implement loaders, and mapping everything to photon terms internally.
Loading zip (or other type) files, validating them, saving back out as zip (or other type) files - i.e. implementing both savers and loaders with a common backend object.

2 would probably be the easiest (and from my pov, sufficient), but probably the least satisfactory. 1 would probably be the lightest touch in terms of refactoring, but I think 3 is the most valuable.
Just to be clear, I'm only really talking about refactoring / modifying the code for saving and loading here, I'm staying well clear of the internals.

I'd vote for abstracting the internals from the file format/loading/saving completely - its more work now but I'm sure there are many more formats to come.

OK, I've made a start on it, Nowhere near ready for PR, but the code is being pushed to cwoac/PhotonFileValidator@c8790f8de6d40c86693f30c34059cae198f5ba40
Roughly:

I've basically renamed PhotonFile to SlicedFile (open to better names), made it abstract and added abstract save/load functions.
I've created implementation classes for Photon, PhotonS and SL1 files currently. The Photon one is just a refactor, so works as in the current code. The PhotonS uses the stub code that I see someone had started on (header loading only so far), the SL1 code is my stuff and is about at the same point as the PhotonS stuff right now.
I've added an enumeration for handling filetype detection and pointing the load code at the right implementation class

Yet to do:

implement layer loading from PNG files. I should be able to lift code from the pack routines to do this though.
implement AA layer loading from PNG files. I should be able to lift code from the AA generation routines to do this.
saving native format
figuring out how to convert between formats, especially given the difference in what metadata is stored (e.g. the zipfiles have a bunch of gcode commands added).
What to do about formats which don't have previews (use first layers?)

For saving/conversion I see two options:

add a new abstract function fromSlicedFile to SlicedFile - this would mean you only have to write one conversion function per format, but you could only use stuff common to all formats. This should be fine for the actual layer data, but slightly limiting on metadata (e.g. I expect the metadata for Photon and PhotonS files to be very similar). You could work around this using some slightly nasty type introspection if needed though.
Add new functions per type to each implementation. This could then maximise reused metadata, at the expense of needing a new routing workflow for saving and quite a lot of extra code.

I'm strongly leaning towards the first option.

Further point to consider - this approach is not lossless, even with png in zips (both chitubox and sl1 files) - why? because the file uses greyscale value to represent AA values, but photon uses discrete layers. This means each value will be (in effect) rounded to the nearest AA value of the level we choose to import at.
Which brings to the next question - what AA level do we choose to import at? Obviously the higher the level, the more time / memory we need to import, but we probably want to maintain some level of it. Offering the use a choice / setting would be a good solution, but that has a bunch of UX considerations - perhaps following the pattern used for margins?
For now, I'm going to go with 4 as that is the default on the photon these days.

@cwoac regarding the metadata I think the abstraction could provide all there is and the implementations need to enable/disable whats actually there.
kind of enum MetaData { exposure, .... }, and a function per format isSupported(MetaData.?)
does that make sense?
Regarding AA: I'm not sure this needs to be imported at all - I think the AA layers are always regenerated anyway when saved? Makes sense as they most likely need to in case anything has changed.

Yeah, It is kinda already there as a pattern with hasAA, and I'd just added hasPreviews.
I think the AA still needs adding - given how long the AA layers take to add when you import a file that doesn't already have it, I'm pretty sure that it isn't entirely recalculated on save.

OK, I've got it working to the point of being able to load and fix SL1 files (no saving yet), which is probably good enough for actually looking at the code if people care to - it's now in #65

OK. Saving (as photon) now works! Remaining tasks:

zip file configs
saving as zip / sl1
AA

Zip file loading now works, so you can investigate that if you like (although only .photon and .sl1 saving currently - the run.gcode file is going to be a pain.).

that is already great news.
Oliver Matthews<EMAIL_ADDRESS>escreveu no dia quinta,
19/03/2020 à(s) 14:30:

Zip file loading now works, so you can investigate that if you like
(although only .photon and .sl1 saving currently - the run.gcode file is
going to be a pain.).
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Photonsters/PhotonFileValidator/issues/47#issuecomment-601211172,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACUR56ROTW2P7BN2CIX6AJTRIIT77ANCNFSM4KTCL2WQ
.

--
Com os melhores cumprimentos,
Vinicius Silva

Zip file loading now works, so you can investigate that if you like (although only .photon and .sl1 saving currently - the run.gcode file is going to be a pain.).

This is awesome!  Thank you, @cwoac!
I may have a dumb question - but let's say I have a ZIP file containing hundreds of PNG files ( in the Z direction: out0001.png, out0002.png, ...) that have been prepared for input into  NanoDLP (which means that the resolutions are: X:65, Y:60, Z:30 microns respectively).
Could I use this program to convert this ZIP into a file format that the Elegoo Mars could import directly without needing to use NanoDLP?
If not, what should the formation of the ZIP file be for optimal printing on the Elegoo Mars?
Thanks again!

Zip file loading now works, so you can investigate that if you like (although only .photon and .sl1 saving currently - the run.gcode file is going to be a pain.).

This is awesome! Thank you, @cwoac!
I may have a dumb question - but let's say I have a ZIP file containing hundreds of PNG files ( in the Z direction: out0001.png, out0002.png, ...) that have been prepared for input into NanoDLP (which means that the resolutions are: X:65, Y:60, Z:30 microns respectively).
Could I use this program to convert this ZIP into a file format that the Elegoo Mars could import directly without needing to use NanoDLP?
If not, what should the formation of the ZIP file be for optimal printing on the Elegoo Mars?
Thanks again!
Yes...
The easiest way would be to make a config.ini SL1 style, add that to the zip then rename the zip file to end in sl1 (you could keep it as a zip, but then you'd need both the preview files and to create the more complex run.gcode file).

Just FYI - I found out a way to write the .cbddlp and .photon files directly due to your help on this thread. Thank you, @cwoac!
(I'm using https://github.com/gmlewis/irmf-slicer to convert irmf.io models to voxels for the Elegoo Mars.)

Right, zip format saving now works - main pain was that it stores that entire actual gcode to write the file, so I had to regenerate all of that (I've eyeballed that what it saves out looks close enough to what it loads in, but will need testing by someone - I don't actually know which printer uses this format!).
Last bits are other->zip and AA ( I think) then this might actually be done!

i'll see if i can test it on my Elfin this weekend.
Problem is elfin uses a custom gcode format for wich i had to write a
plugin to use with chitubox :P
Basic parsin stuff. if the gcode is ok i can probabably hack the Jar i use
to conform the output to the correct one
Oliver Matthews<EMAIL_ADDRESS>escreveu no dia sexta,
20/03/2020 à(s) 13:34:

Right, zip format saving now works - main pain was that it stores that
entire actual gcode to write the file, so I had to regenerate all of that
(I've eyeballed that what it saves out looks close enough to what it loads
in, but will need testing by someone - I don't actually know which printer
uses this format!).
Last bits are other->zip and AA ( I think) then this might actually be
done!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Photonsters/PhotonFileValidator/issues/47#issuecomment-601703498,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACUR56UJ2QKLPEP4ZHXNFKLRINWGDANCNFSM4KTCL2WQ
.

--
Com os melhores cumprimentos,
Vinicius Silva

I realised that the currently mix of fields in classes and additional parameter map was unmaintainable and a bit of a mess for format cross-conversion. Have just spent a chunk of time reworking it to something a bit like what @riggiding  suggested in that all files can potentially have all parameters as they are pulling from a uniform list of known fields, all stored in a hashmap.
This has two major points where 'fun' occurs - where different text based files use different names (e.g. 'cost' vs 'price') and where they store different types for the same field (photon stores estimated time as an int, all the others as a float).
For now, there are few enough of the first that I've simply picked one field name (the photon one if it exists) and made a note inside EParameters of what the correct field to use is actually called for other file types. There are a few here that I'm not 100% on (mostly on whether that dropSpeed in the zip format is the same as retractSpeed in a photon file).
For the purposes of format differing, I think the only instance is the aforementioned print time, for which I've simply made some functions to hard force between float and int - any file format should probably call them inside the header constructor that takes a SlicedFileHeader object.
Anyway, Photon saving, loading and conversion now works with the new system. SL1 saving and loading works, Zip loading works.  Sl1 conversion probably works, but I have to test it. Zip saving and conversion needs me to finish writing the code to write out all the expected parameters, which is not a task for now.

Update! AA loading from / saving to image files now works! Well, at least it produces things that look right. Very slowly*. I'm running a test print now.

I'm pretty sure I can speed it up by using graphics2D to just layer the images for me, at least on the png/sl1 export side; but I might save that for a follow up PR as this one is large enough as it is.

Test print workked! Now to tidy up the PR and make sure all the conversion sequences produce valid files (photon <> sl1 <> zip)


Want to add Bahareh Honarmandian

For some reason  PR wouldn't work and would just allow me to compare changes across branches.
Bahareh Honarmandian | Beeloud
https://twitter.com/baharehonar
https://beeloud.xyz/apply

Submitted!


Accessibility issue: default text colors are low-contrast

The default text colors used by frappe-charts for axis labels have insufficient contrast. Here’s an example from the docs:

The axis text uses a small font size and is #555b51 on a white background. Since we probably want to keep the font size as-is, Increasing contrast by using, say, #33383d, goes a long way towards making the text more readable IMHO.

Next version of charts has CSS variables overrides that can solve these problems. You can install it using yarn add frappe-charts@next
Alternatively you can do css overrides, works with current version as well
.chart-container .axis,
.chart-container .chart-label {
  fill: #252525;
}

Refer: Charts 2.0.0.rc8


Version information in the frontend

It is good to add some version information to the frontend. Including backend / frontend version.
Now it is hard to track updates, versions, etc.

Duplicate of issue #575


How to integrate into Android VPNService?

Hi,
I don't know where to ask this question, so I paste it here. When integrated into android, VPNService will provide a fd which represents an interface I assume. How should I do to integrate into smoltcp with it?

There are two things in smoltcp that need to change for this to be possible.
First, the raw socket code here should be changed to have a from_raw_fd method. This is the easy part.
Second, Android gives you an IP raw socket, and smoltcp currently only works with Ethernet raw sockets. Adding IP interface support has been discussed before (e.g. for SLIP) but it isn't yet done, and unfortunately it's somewhat invasive because the Ethernet and IP layers aren't cleanly separated; likely large parts of EthernetInterface will have to be duplicated. This is fairly nontrivial.
(@astro @jordens Looks like the "smoltcp maintainers" team doesn't have access to the repository? I can't seem to be able to label this issue.)

@whitequark Is it possible to encapsulate IP packet to Ethernet frame and send to smoltcp?

Yes, you could certainly do that. You would also need to fake ARP responses in that case.

Thank you. Will have a try.

Thank you. Will have a try.

Thank you. Will have a try.

Hello! As part of issue cleanup I'm closing inactive or already-answered "question" issues, since they're not actionable.
Note this doesn't mean questions aren't welcome. They still are! It's just that they shouldn't stay open forever.

I have succesfully used smoltcp on windows, android, ios and linux - common code running on all these platforms. And everywhere I use Medium::Ip #[cfg(feature = "medium-ip")]
And as for the from_raw_fd, yes thats a seperate layer I have - for my use case I keep it seperate from smoltcp, because I create the sockets myself - I look at the packets myself and filter out what is of interest to me (or not) and then just create a smoltcp packet for that myself, and feed that socket packets using a Device implementation with Medium::Ip in it.


Parquet stream-conversion fails to embed images/audio files from gated repos

e.g. for https://huggingface.co/datasets/SinKove/synthetic_mammography_csaw
it seems to be an issue with datasets not passing the token to embed_table_storage when generating a dataset
{
    "error": "An error occurred while generating the dataset",
    "cause_exception": "DatasetGenerationError",
    "cause_message": "An error occurred while generating the dataset",
    "cause_traceback": [
        "Traceback (most recent call last):\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/huggingface_hub/utils/_errors.py\", line 261, in hf_raise_for_status\n response.raise_for_status()\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/requests/models.py\", line 1021, in raise_for_status\n raise HTTPError(http_error_msg, response=self)\n",
        "requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://huggingface.co/api/datasets/SinKove/synthetic_mammography_csaw/revision/490f9d72f59e2599b5d1eca5973b37a913270445\n",
        "\nThe above exception was the direct cause of the following exception:\n\n",
        "Traceback (most recent call last):\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/huggingface_hub/hf_file_system.py\", line 100, in _repo_and_revision_exist\n self._api.repo_info(repo_id, revision=revision, repo_type=repo_type)\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/huggingface_hub/utils/_validators.py\", line 118, in _inner_fn\n return fn(*args, **kwargs)\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/huggingface_hub/hf_api.py\", line 1868, in repo_info\n return method(\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/huggingface_hub/utils/_validators.py\", line 118, in _inner_fn\n return fn(*args, **kwargs)\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/huggingface_hub/hf_api.py\", line 1741, in dataset_info\n hf_raise_for_status(r)\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/huggingface_hub/utils/_errors.py\", line 277, in hf_raise_for_status\n raise GatedRepoError(message, response) from e\n",
        "huggingface_hub.utils._errors.GatedRepoError: 401 Client Error. (Request ID: Root=1-6538ec77-55cac38800ae3763321e921e;1f6f0b56-19bb-4ea0-bfd6-0a1081822277)\n\nCannot access gated repo for url https://huggingface.co/api/datasets/SinKove/synthetic_mammography_csaw/revision/490f9d72f59e2599b5d1eca5973b37a913270445.\nRepo dataset SinKove/synthetic_mammography_csaw is gated. You must be authenticated to access it.\n",
        "\nThe above exception was the direct cause of the following exception:\n\n",
        "Traceback (most recent call last):\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/datasets/builder.py\", line 1703, in _prepare_split_single\n num_examples, num_bytes = writer.finalize()\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/datasets/arrow_writer.py\", line 586, in finalize\n self.write_examples_on_file()\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/datasets/arrow_writer.py\", line 448, in write_examples_on_file\n self.write_batch(batch_examples=batch_examples)\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/datasets/arrow_writer.py\", line 559, in write_batch\n self.write_table(pa_table, writer_batch_size)\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/datasets/arrow_writer.py\", line 574, in write_table\n pa_table = embed_table_storage(pa_table)\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/datasets/table.py\", line 2306, in embed_table_storage\n arrays = [\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/datasets/table.py\", line 2307, in <listcomp>\n embed_array_storage(table[name], feature) if require_storage_embed(feature) else table[name]\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/datasets/table.py\", line 1831, in wrapper\n return pa.chunked_array([func(chunk, *args, **kwargs) for chunk in array.chunks])\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/datasets/table.py\", line 1831, in <listcomp>\n return pa.chunked_array([func(chunk, *args, **kwargs) for chunk in array.chunks])\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/datasets/table.py\", line 2176, in embed_array_storage\n return feature.embed_storage(array)\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/datasets/features/image.py\", line 266, in embed_storage\n [\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/datasets/features/image.py\", line 267, in <listcomp>\n (path_to_bytes(x[\"path\"]) if x[\"bytes\"] is None else x[\"bytes\"]) if x is not None else None\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/datasets/utils/py_utils.py\", line 306, in wrapper\n return func(value) if value is not None else None\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/datasets/features/image.py\", line 261, in path_to_bytes\n with xopen(path, \"rb\") as f:\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/datasets/download/streaming_download_manager.py\", line 496, in xopen\n file_obj = fsspec.open(file, mode=mode, *args, **kwargs).open()\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/fsspec/core.py\", line 439, in open\n return open_files(\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/fsspec/core.py\", line 282, in open_files\n fs, fs_token, paths = get_fs_token_paths(\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/fsspec/core.py\", line 606, in get_fs_token_paths\n fs = filesystem(protocol, **inkwargs)\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/fsspec/registry.py\", line 261, in filesystem\n return cls(**storage_options)\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/fsspec/spec.py\", line 76, in __call__\n obj = super().__call__(*args, **kwargs)\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/fsspec/implementations/zip.py\", line 58, in __init__\n self.fo = fo.__enter__() # the whole instance is a context\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/fsspec/core.py\", line 102, in __enter__\n f = self.fs.open(self.path, mode=mode)\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/fsspec/spec.py\", line 1199, in open\n f = self._open(\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/huggingface_hub/hf_file_system.py\", line 200, in _open\n return HfFileSystemFile(self, path, mode=mode, revision=revision, **kwargs)\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/huggingface_hub/hf_file_system.py\", line 392, in __init__\n super().__init__(fs, path, **kwargs)\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/fsspec/spec.py\", line 1555, in __init__\n self.size = self.details[\"size\"]\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/fsspec/spec.py\", line 1568, in details\n self._details = self.fs.info(self.path)\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/huggingface_hub/hf_file_system.py\", line 351, in info\n resolved_path = self.resolve_path(path)\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/huggingface_hub/hf_file_system.py\", line 149, in resolve_path\n raise FileNotFoundError(path) from err\n",
        "FileNotFoundError<EMAIL_ADDRESS>        "\nThe above exception was the direct cause of the following exception:\n\n",
        "Traceback (most recent call last):\n",
        " File \"/src/services/worker/src/worker/job_manager.py\", line 168, in process\n job_result = self.job_runner.compute()\n",
        " File \"/src/services/worker/src/worker/job_runners/config/parquet_and_info.py\", line 1348, in compute\n compute_config_parquet_and_info_response(\n",
        " File \"/src/services/worker/src/worker/job_runners/config/parquet_and_info.py\", line 1255, in compute_config_parquet_and_info_response\n parquet_operations, partial = stream_convert_to_parquet(\n",
        " File \"/src/services/worker/src/worker/job_runners/config/parquet_and_info.py\", line 852, in stream_convert_to_parquet\n builder._prepare_split(\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/datasets/builder.py\", line 1555, in _prepare_split\n for job_id, done, content in self._prepare_split_single(\n",
        " File \"/src/services/worker/.venv/lib/python3.9/site-packages/datasets/builder.py\", line 1712, in _prepare_split_single\n raise DatasetGenerationError(\"An error occurred while generating the dataset\") from e\n",
        "datasets.builder.DatasetGenerationError: An error occurred while generating the dataset\n"
    ]
}

I opened an issue: https://github.com/huggingface/datasets/issues/6348

reference on Slack: https://huggingface.slack.com/archives/C0311GZ7R6K/p1698229496387289?thread_ts=1698224875.005729&cid=C0311GZ7R6K


Make TryCmd constructable by end-users

(Filing this issue in response to discussion on #214.)
As I made the case for in #214, there is value in leveraging trycmd's internal data structures (namely TryCmd and everything its fields reference) to build your own process based snapshot testing library or to bend trycmd to your will. If you could construct TryCmd instances manually (bypassing the file loaders that are forced onto us today), this would create opportunities for customers to experiment with different file formats and different ways of constructing test cases. It would enable customers to leverage the test running functionality in the trycmd crate without having to reinvent that wheel. i.e. I think it would increase the overall value of the trycmd crate.
The code changes for this are minimal (https://github.com/assert-rs/trycmd/pull/214/commits/77e05d79d3afcafc9dc603542ceb050156a87760).  Obviously sprinkling pub everywhere has semver and API support implications.

Before getting into how to solve this, can we focus on the use cases?  We offer snapbox as a lower level snapshotting library.  What is it you are trying to accomplish that the current structure of trycmd and snapbox are getting in your way?

I don't want to have to build my own runner (with steps), diffing functionality, etc.
I agree that snapbox is a useful foundational crate to have. But there's just enough functionality missing that I wanted to reach for trycmd's abstractions instead of reinventing the wheel.

@indygreg maybe tryfn can suit your needs ?


Relationships are not generated using CUD file format as sink ingestion strategy

Expected Behavior (Mandatory)
Using Neo4j Streams (with both 4.0.6 and 4.0.7 versions) CUD file format sink strategy, relationships should be created without any properties by submitting an event like:
{  "op": "merge",
  "from": {
    "labels": [
      "SourceNode"
    ],
    "ids": {
      "key": 1
    }
  },
  "to": {
    "labels": [
      "TargetNode"
    ],
    "ids": {
      "key": "1"
    }
  },
  "type": "relationship",
  "rel_type": "REL_TYPE"
}

since the "properties" field is not mandatory, as stated in the documentation
Actual Behavior (Mandatory)
Relationship between SourceNode and TargetNode are not generated, even if in the Neo4j log files we can observe that the plugin is reading from topic:
...
DEBUG [s.StreamsSinkConfigurationListener] [neo4j] Reading data from topic my-topic
...

How to Reproduce the Problem

Create 2 example nodes SourceNode and TargetNode

CREATE(n:SourceNode{key: 1});
CREATE(n:TargetNode{key: 1});

Start a kafka-console-producer and send an event like the one above
Verify that the event is in the topic by running a kafka-console-consumer
The relationship REL_TYPE has not been created

Versions

OS: macOS BigSur 11.2.3
Neo4j: 4.1.5
Neo4j-Streams: 4.0.6, 4.0.7

closed via 3b19274


Bump castore to 1.0.3

Appreciate the package!
Bumping castore to 1.0.3, since the latest phoenix version is blocked:
Resolving Hex dependencies...
Resolution completed in 0.078s
Because "the lock" specifies castore 1.0.3 and every version of litestream depends on castore ~> 0.1.15, the lock is incompatible with litestream.
And because your app depends on the lock, no version of litestream is allowed.
So, because your app depends on litestream ~> 0.3.0, version solving failed.
** (Mix) Hex dependency resolution failed

Thanks for the contribution!


change palette of surface with indexed pixel format

Hi,
I know the way to change the colors of a surface. For example, convert the surface to grayscale:
gray = (red * 9 + green * 18 + blue  * 5) / 32;
red = green = blue = gray;

Just take the pointer from surface.data(), and change pixels one by one. But it costs a lot of time for large size. I thought a new idea that to use indexed pixel format like:

convert the pixel format of surface into index8
get the palette of new format
change the palette

Since the library don't have the function for palette of surface. I take the palette of the surface by surface.get()->format->palette and the colors by surface.get()->format->palette->colors.
However, it doesn't work. I print the colors in the palette, all of them are shown as (255, 255, 255, 255). If I leave the palette unchanged, nothing changed to the surface. But if I set all the colors to (255, 255, 255, 255), every untransparent pixels of the surface change to white (255, 255, 255, 255). It seem that error happens when read palette colors while the writing is correct. Or, maybe the step1-2-3 is not a valid choice for processing colors?
If the step1-2-3 is the valid choice, I still have 3 more questions:

will the conversion between RGBA to indexed pixels cost too much time? (Since it needs to find the most 256 popular colors)
Can I directly modify the palette of the cen::texture or the SDL_Texture, if their pixel format are set to index8.
Can a texture with indexed pixel format be a render target? In the software PhotoShop, a figure with indexed pixel format cannot be edit until you convert it into RGBA format.

Hi!
This is a very technical issue not strictly related to the Centurion library. I would recommend that you file the questions regarding pixel formats in the SDL discussion forums. However, I tried to answer some of your inquiries.

Since the library don't have the function for palette of surface. I take the palette of the surface by surface.get()->format->palette and the colors by surface.get()->format->palette->colors.

It does, see cen::surface::format_info(). Additionally, cen::surface::with_format() might be of interest for you.

However, it doesn't work. I print the colors in the palette, all of them are shown as (255, 255, 255, 255).

See the following comment from the SDL header where SDL_PixelFormat lives for an explanation to why you see no change when editing the palette.
https://github.com/libsdl-org/SDL/blob/ddfd21a6784f533bdd04b7e0dd61a0f400eee96e/include/SDL_pixels.h#L322

will the conversion between RGBA to indexed pixels cost too much time? (Since it needs to find the most 256 popular colors)

Very hard for me to decide, you'll have to measure and determine that yourself, unfortunately.

Can I directly modify the palette of the cen::texture or the SDL_Texture, if their pixel format are set to index8.

It's hard to directly modify textures, unlike surfaces, regardless of the pixel format.

Can a texture with indexed pixel format be a render target? In the software PhotoShop, a figure with indexed pixel format cannot be edit until you convert it into RGBA format.

I'm not aware of any reason that such textures wouldn't be.

I found this code can generate the grayscale of some texture.
// renderer.set_target(some_texture);
auto capture = renderer.capture(window.get_pixel_format());
auto gray = cen::surface({capture.width(), capture.height()}, cen::pixel_format::index8);
auto palette = gray.get()->format->palette;
for (int i = 0; i < 256; i++)
 {
       palette->colors[i].r = i;
       palette->colors[i].g = i;
       palette->colors[i].b = i;
}
SDL_BlitSurface(capture.get(), nullptr, gray.get(), nullptr);

Instead, run auto gray = capture.convert(cen::pixel_format::index8); only generate a figure with everywhere white (255, 255, 255, 255).
Maybe the palette need setup manually or read from a file. SDL didn't generate the palette.

You cannot edit the palette manually, as I mentioned previously. That is why the code doesn't work.

I tests that code and it works. The pointer to the palette cannot be changed, which might not means colors in palette cannot be changed. That code counld be a trick to genrerate grayscale of one surface. But I decide not to use it since indexed pixel format is outmoded. Perhaps, shader is the morden way to modify pixels.
Much thanks for your help, I think I still need to learn more :smile

There's nothing in the language that prevents you from editing members in the SDL_PixelFormat struct. However, this is what the SDL documentation says.
/**
 *  \note Everything in the pixel format structure is read-only.
 */
typedef struct SDL_PixelFormat
{
    Uint32 format;
    SDL_Palette *palette;
    Uint8 BitsPerPixel;
    Uint8 BytesPerPixel;
    Uint8 padding[2];
    Uint32 Rmask;
    Uint32 Gmask;
    Uint32 Bmask;
    Uint32 Amask;
    Uint8 Rloss;
    Uint8 Gloss;
    Uint8 Bloss;
    Uint8 Aloss;
    Uint8 Rshift;
    Uint8 Gshift;
    Uint8 Bshift;
    Uint8 Ashift;
    int refcount;
    struct SDL_PixelFormat *next;
} SDL_PixelFormat;

Anyways, I hope my responses were of some use. 😄


Support for renaming multiple columns in the same table

In our situation, we needed to rename multiple columns in the same table, and it seems online_migrations does not support this currently:
OnlineMigrations.config.column_renames["users"] = {
  "fname" => "first_name",
  "lname" => "last_name"
}

The example above would work only for fname rename.
Is it possible to get official support for this?
To solve the situation quickly for our case, we monkey-patched two modules of the gem:
schema_cache.rb:
module OnlineMigrations
  module SchemaCache
    def columns(table_name)
      if renamed_tables.key?(table_name)
        super(renamed_tables[table_name])
      elsif renamed_columns.key?(table_name)
        columns = super(column_rename_table(table_name))
        renamed_columns[table_name].each_key do |old_column_name|
          new_column_name = renamed_columns[table_name][old_column_name]
          duplicate_column(old_column_name, new_column_name, columns)
        end
        columns
      else
        super.reject { |column| column.name.end_with?("_for_type_change") }
      end
    end

    def duplicate_column(old_column_name, new_column_name, columns)
      old_column = columns.find { |column| column.name == old_column_name }
      new_column = old_column.dup
      # ActiveRecord defines only reader for :name
      new_column.instance_variable_set(:@name, new_column_name)
      # Correspond to the ActiveRecord freezing of each column
      columns << new_column.freeze
    end
  end
end

schema_statements.rb:
module OnlineMigrations
  module SchemaStatements
    # Renames a column without requiring downtime
    #
    # The technique is built on top of database views, using the following steps:
    #   1. Rename the table to some temporary name
    #   2. Create a VIEW using the old table name with addition of the new columns as an aliases of the old ones
    #   3. Add a workaround for ActiveRecord's schema cache
    #
    # @param table_name [String, Symbol] table name
    # @param old_new_column_hash [Hash] the hash of old and new columns
    #
    # @return [void]
    #
    # @example
    #   initialize_column_renames(:users, {fname: :first_name, lname: :last_name})
    #
    # @note
    #   Prior to using this method, you need to register the database table so that
    #   it instructs ActiveRecord to fetch the database table information (for SchemaCache)
    #   using the original table name (if it's present). Otherwise, fall back to the old table name:
    #
    #   ```OnlineMigrations.config.column_renames[table_name] = { old_column_name => new_column_name }```
    #
    #   Deploy this change before proceeding with this helper.
    #   This is necessary to avoid errors during a zero-downtime deployment.
    #
    # @note None of the DDL operations involving original table name can be performed
    #   until `finalize_column_rename` is run
    #
    def initialize_column_renames(table_name, old_new_column_hash)
      transaction do
        rename_table_create_view(table_name, old_new_column_hash)
      end
    end

    # Reverts operations performed by initialize_column_renames
    #
    # @param table_name [String, Symbol] table name
    # @param _old_new_column_hash [Hash] the hash of old and new columns
    #     Passing this argument will make this change reversible in migration
    #
    # @return [void]
    #
    # @example
    #   revert_initialize_column_renames(:users, {fname: :first_name, lname: :last_name})
    #
    def revert_initialize_column_renames(table_name, _old_new_column_hash = nil)
      transaction do
        execute("DROP VIEW #{table_name}")
        rename_table("#{table_name}_column_rename", table_name)
      end
    end

    # Finishes the process of column renames
    #
    # @param (see #initialize_column_renames)
    # @return [void]
    #
    # @example
    #   finalize_column_renames(:users, {fname: :first_name, lname: :last_name})
    #
    def finalize_column_renames(table_name, old_new_column_hash)
      transaction do
        execute("DROP VIEW #{table_name}")
        rename_table("#{table_name}_column_rename", table_name)
        old_new_column_hash.each_key do |old|
          rename_column(table_name, old, old_new_column_hash[old])
        end
      end
    end

    # Reverts operations performed by finalize_column_renames
    #
    # @param (see #initialize_column_renames)
    # @return [void]
    #
    # @example
    #   revert_finalize_column_renames(:users, {fname: :first_name, lname: :last_name})
    #
    def revert_finalize_column_renames(table_name, old_new_column_hash)
      transaction do
        old_new_column_hash.each_key do |old|
          rename_column(table_name, old_new_column_hash[old], old)
        end
        rename_table_create_view(table_name, old_new_column_hash)
      end
    end

    private

    def rename_table_create_view(table_name, old_new_column_hash)
      tmp_table = "#{table_name}_column_rename"
      rename_table(table_name, tmp_table)
      column_mapping = old_new_column_hash.keys.map { |old| "#{old} AS #{old_new_column_hash[old]}" }.join(", ")
      execute("CREATE VIEW #{table_name} AS SELECT *, #{column_mapping} FROM #{tmp_table}")
    end
  end
end

I wonder if a change like that can go into the codebase of online_migrations ?

Yes, feel free to contribute. Given that changing multiple columns at once is already supported.
You can look at ChangeColumnTypeHelpers module for an example on how to implement these helpers - helpers for one column should call helpers for multiple columns as its implementation.
Also, I think naming like initialize_columns_rename (instead of initialize_column_renames) etc is more consistent with the existing code.

@fatkodima thank you for the hints! I'll submit a PR soon.


Add Deployments API Methods

It'd be sweet if the gem had https://docs.gitlab.com/ce/api/deployments.html in it.
I'm a go ahead and put up a pull request with that.

I've made the changes in #336.


Support mapping Supplier and Consumer to Azure function

Please add support for mapping a Supplier/Consumer Bean to an Azure function using Spring Cloud Function 2.0.
There is no clear way of mapping a Bean like:
@Bean
public Supplier<List<String>> foo() {
    return () -> Arrays.asList("foo1", "foo2");
}

class AzureSpringBootRequestHandler has two type parameters: input and output, and AzureSpringBootRequestHandler.handleRequest() signature also expects the input parameter.
see also https://stackoverflow.com/questions/54788858/spring-cloud-function-how-to-map-a-supplier-to-azure-function
P.S Ideally I would also like to be able to use a Runnable Bean (no input or output), but this seems completely unsupported.

Initial support was added so basically you can do the following:
@Test
public void supplierNonFluxBean() {
	AzureSpringBootRequestHandler<Void, List<String>> handler = handler(NonFluxSupplierConfig.class);
	List<String> result = handler.handleRequest(new TestExecutionContext("supplier"));

	assertThat(result).isNotEmpty();
	assertThat(result.toString()).isEqualTo("[foo1, foo2]");
}

Similar approach goes for the Consumer
We can probably consider improving signature to avoid explicitly mentioning Void, but I wanted to get something out there to try before getting too deep


Ability to configure SQLite cache_size

See https://www.sqlite.org/pragma.html#pragma_cache_size
Let's call the config setting cache_size_kb to emphasize that we're using the negative option.
Note this warning: perhaps we should raise an error if you try to use this setting against a SQLite version prior to 3.7.10

If the argument N is positive then the suggested cache size is set to N. If the argument N is negative, then the number of cache pages is adjusted to use approximately abs(N*1024) bytes of memory. Backwards compatibility note: The behavior of cache_size with a negative N was different in prior to version 3.7.10 (2012-01-16). In version 3.7.9 and earlier, the number of pages in the cache was set to the absolute value of N.

I prototyped this a while ago here: https://github.com/simonw/datasette/commit/04476ead53758044a5f272ae8696b63d6703115e

In the interest of getting this shipped, I'm going to ignore the 3.7.10 issue.


Networkeye discussion about the need for a database, what you think needs to be stored intercepted requests to databases?

Networkeye discussion about the need for a database, what you think needs to be stored intercepted requests to databases?
1.networkeye actually a little thing, whether you need a database such a heavy thing,
2. The network request because sometimes insert fast, such as when you use UIWebView , sometimes it will insert a lot of requests, it will also cause some inserted errors
3. Insert the database, I am currently only insert JSON and XML, in some cases, such as webpage, or some text into the database and so will not convenient
4. If you do not have a database, when it not in memory and you will not see; for example, many crashes because of erroneous network requests, after a crash ,you can not  see the information of requested the network

最后 已经解决
pod 'NetworkEye', '~> 1.0.6'
pod 'NetworkEye/FMDB'   # NetworkEye with FMDB ,save your requests to database


Intellisense for ="" needs Ctrl + Space to wake up

inside a tag, if I have a = before "" or {}, eg: <div if:true="">, or <div if:true={}>, I need Ctrl + Space to wake up intellisense so I can have a autocomplete list for "" or {}. But for tag, I can have a dynamical autocomplete list whenever I type a character, the intellisense is automatically waked up by user typing a character.
Can you point out to me which lines/block of code in this repo that define this behavior? Our team is developing an extended html language server based on this repo, and we want a autocomplete list for {} but without asking user to use Ctrl + Space to trigger the intellisense.
Steps to Reproduce:
1, go to a html file
2, <div if:true=""
3, move your cursor away, then move it back inside ""
4, typing a character does not trigger a autocomplete list
5, using Ctrl + Space, you can see a autocomplete list.

Provided I correctly understand what you are asking, this is the wrong repo. The correct one is the mainline vscode repository.
The built-in extension for html-language-features has a file called htmlServer.ts that controls what characters trigger the retrieval of completion items.
See line 196 where it defines the server capabilities as completionProvider: clientSnippetSupport ? { resolveProvider: true, triggerCharacters: ['.', ':', '<', '"', '=', '/'] } : undefined,.
Change the character list to include a-z and you should see the behavior you want.


rake routes aborts with 'can't convert Regexp to String'

...nothing too serious though, just wanted to mention it.
It's in alchemy's routes, after commenting them out rake routes works again. Didn't figure out the reason yet.

I dont have this issue.
which system configuration do you use when having this problem?

@robinboening marc uses rails3.2 and the next_stable branch
@masche842 still happening? Even after removing the default from routes? Could you please pull my recent commits from next_stable and check again?

Yes, still happening.
With this rake.routes it works (at least with 3.2, maybe you should test your 3.1 environments before applying it):
desc 'Print out all defined routes in match order, with names. Target specific controller with CONTROLLER=x.'
task :routes => :environment do
	Rails.application.reload_routes!
	all_routes = Alchemy::Engine.routes.routes

  require 'rails/application/route_inspector'
  inspector = Rails::Application::RouteInspector.new
  puts inspector.format(all_routes, ENV['CONTROLLER']).join "\n"
end

have a look at pull-request #195

Fixed with 541cd110a0e00f4eb46395499842426543c7b204


Checkout

[ ] Set up Stripe

[ ] Support credit cards
[ ] Support Apple Pay

[x] Set up PayPal
[x] Hook everything up to the UI
[x] Send orders to Slack
[x] Set up cash

user enters email and name and address etc manually
gets sent to Slack as `Cash (incomplete)

Still want to add credit cards and (maybe) apple pay but closing since checkout flow is complete


Extend homebrew command

The CLI has a pretty high release flow (each commit triggers a release), so, we need to recommend people to update homebrew repository info.
Closes: #549

LGTM but not sure it should close #549 (if you want added to docs also)

@carimura let me explain it, initially, we thought (me and @devcamcar) that homebrew Fn releases were outdated since 0.5.45, but it appeared that homebrew FN releases are fine just one minor version behind.
So, we can't blame homebrew for being late, because it's almost the same for every piece of software that is stored in public repositories if your package management tool has an old (stored locally) package references - please update it <--- that's what happened to @devcamcar.
In terms of the release schedule, one minor version delay is not critical, that's why I think this PR closes #549 (Fn CLI releases already automated but slightly outdated). As far as I understand, we have zero control over the pace of the homebrew package index update.

let's open separate tickets within the corresponding repos (docs, tutorials).

@carimura leaving big green "merge" button for you. :click-click-click:

Also, for the record, they did just update the Fn homebrew formula 2 days ago, but it should be automated.  It's only being updated at random intervals, usually 1-3 months.
https://github.com/Homebrew/homebrew-core/commits/master/Formula/fn.rb

@denismakogon can you please make sure a new ticket (or PR) is created for updating docs before closing #549? That's my point. I don't want to drop the hand off when follow ups are needed. thanks.
And ya there's a pretty big gap in versions on brew causing big delays.


[BUG] Customised table has been organised in a way that affects information relayed to screen  reader users.

Outcome of DAC Accessibility Audit:
https://ukho.sharepoint.com/sites/EXT_Data_Upload/Shared%20Documents/Forms/AllItems.aspx?OR=Teams%2DHL&CT=1711376954679&clickparams=eyJBcHBOYW1lIjoiVGVhbXMtRGVza3RvcCIsIkFwcFZlcnNpb24iOiIyNy8yNDAyMjkyMDYwMiIsIkhhc0ZlZGVyYXRlZFVzZXIiOmZhbHNlfQ%3D%3D&id=%2Fsites%2FEXT%5FData%5FUpload%2FShared%20Documents%2FGeneral%2FAccessibility%20Audit%2FPrivate%20Beta%2FDAC%20Accessibility%20Report%20WCAG%202%2E2%20UKHO%20UDU%20130324%20Final%20Version%2Epdf&viewid=8b1f0a9e%2D2897%2D4a4d%2D8283%2Dcc660e97e3e4&parent=%2Fsites%2FEXT%5FData%5FUpload%2FShared%20Documents%2FGeneral%2FAccessibility%20Audit%2FPrivate%20Beta
(Pages 31 - 34)
Customised table has been organised in a way that affects information relayed to screen reader users.
WCAG Reference:
1.3.1 Info and Relationships (Level A)
Understanding Info and Relationships | How to Meet Info and Relationships
4.1.2 Name, Role, Value (Level A)
Understanding Name, Role, Value | How to Meet Name, Role, Value
Issue ID: DAC_Customised_Table_01
URL: https://ukhodataupload.admiralty.co.uk/external/add-files?isTemplateRoute=false
Page title: Add Files
Journey: 1.9
A customised table has been implemented in a way that causes confusion for screen reader
users. This instance can be found with the table showing information regarding the
uploaded file. Additionally, Table headers have not been adequately stated as such
programmatically and so screen reader users do not receive the information. The
customised table has various roles with their own values, however the way it is
implemented appears to be causing issues with navigation when using screen reader
software.
Screen reader users navigating the page by pressing control and arrow keys will find the
structure very difficult to follow, in some places content can only be read by pressing up and
down, and then some instances by left and right, which is not consistent with native html
table markup.
A missing heading affects the understanding of the button within the table, visually the
remove button is associated to ‘fake document.pdf’, however this information is not relayed
to screen reader users, which means that users navigating visually are provided with more
information.

Considered A so high priority

This is due to the current website not including the admiralty-table-row between the admiralty-header and admiralty-header-cell
Correct implementation:
<admiralty-table caption="Favourite Foods">
  <admiralty-table-header>
    <admiralty-table-row>
      <admiralty-table-header-cell>Name</admiralty-table-header-cell>
      <admiralty-table-header-cell>Age</admiralty-table-header-cell>
    </admiralty-table-row>
  </admiralty-table-header>
  <admiralty-table-body>
    <admiralty-table-row>
      <admiralty-table-cell>Tom</admiralty-table-cell>
      <admiralty-table-cell>12</admiralty-table-cell>
    </admiralty-table-row>
  </admiralty-table-body>
</admiralty-table>


Added UndeltaStore.

This will be used to connect Reflector to kubelet update channel.
Added testing.

passes all but go 1.2

@erictune I see now that the consumption semantics are different for this and the EventQueue in OpenShift that we discussed.
One thing I notice is that it seems like this would be an ideal case to apply event compression.  Currently PushFunc has to implement thread safety, and this design implictly uses that thread safety to implement a queue of events.  Correct me if I'm wrong, but it seems like this will process unnecessary events, since you only ever want to process the latest received state.

To be clear, I'm not suggesting the event compression implemented by EventQueue is useful here; they're not.
What I mean specifically is that the callback should be processed to process the latest state available at the next call.

yes, it may call the callback twice with the same data.
I made a comment about that in the code.
It works well enough for the thing I am trying to do.

@erictune Ah, I had read that comment incorrectly before; I thought it was clarifying the since the whole state was included, it was possible for the state for some object not to have changed since it was last processed.

@erictune Your latest code LGTM, fwiw

LGTM


fix: display received errors in DisplayStream

Signed-off-by: Thomas Soëte<EMAIL_ADDRESS>

Imho, this should be handled by the calling functions. BUT user value >> perfection of code. Thanks!

#5 ?


ISPN-7235 XSite replication commands should unwrap security from caches

https://issues.jboss.org/browse/ISPN-7235

@tristantarrant take this patch to fix the failures in xsite tests:
https://gist.githubusercontent.com/pruivo/82eb346a184e648b284f0432d6ec22b6/raw/ed9925aaf5b2a9f9e3b80e188cb21edd586d27e5/patch
the cleanup wasn't happening correctly in your tests (a bunch of exception with the acl cached stopped and missing permissions).

Thanks Pedro, I've updated it

Fixed it, @pruivo

thanks @tristantarrant


Update go-github to v0.38.0

Similar in scope to #49, update the backing version of go-github to pick up some fixes.

Thanks for the contribution! 🎉