Remove hamcrest from public dependency list

MorePreconditions was relying on hamcrest-all. But no one was calling the method in question.

Not ready yet


CNCF TAG-Runtime Discussion/Presentation (?)

Hello Kured team,
I'm one of the co-chairs of the CNCF TAG-Runtime. I believe you had an agenda item to present the project in our meeting. I'm following up, I think it would be great for you to present/discuss the project in the future.
Feel free to add it to our agenda or reach out to me (raravena80 at gmail.com) at your convenience.
Thanks!

@raravena80 will do, thanks!
cc @ckotzbauer @dholbach

@jackfrancis Can you present in our next meeting Thursday?
Thanks!

@raravena80 thanks for circling back and following up! I just added a brief agenda line item, will be happy to demo tomorrow.

@jackfrancis sweet! looking forward!

This has happened already. Were there any next steps discussed?

Yeah, I am looking forward to know if we can close this, or if there are next steps :)


Page about 6.172 that helps teachers decide what they want and need

Let's make a page about 6.172 to help John with outreach to teachers who might be interested in these materials. What do they need to use and adapt them?
This content would be related to but distinct from a teacher's section that we might establish similar to the modules of CSinParallel.

Hi John -- I just assigned you to this task. This can be a place to discuss the designs of the "Teach performance" page.

In our call today, we talked about putting the materials listed below onto the teaching performance page. Most of these materials are available in two related online homes of 6.172: OpenCourseware and Canvas. Canvas is more current. The OpenCourseware is a backup source, if we think it's more appropriate for public broadcasting via OpenCilk.org.

PDFs of the 6.172 lecture slides
Video links? Is that possible?
PDFs of homeworks and labs
List of outcomes from taking the class.
Syllabus and what materials will make teacher’s life easier

I will start a page so that JDO can continue filling in and improving.

I added a page at /community/teach-performance and linked the home page "Discover" button to go to that page.
The page is very simple and rough, just a place to get this started, where I anticipate JDO will fill in, per the meeting notes above. John, please let me know if you have any questions about contributing to the website.

@cleiserson @jowens and I discussed this page yesterday. We agreed it's in good shape, but might need a bit of editing. I will keep this issue open as a place to discuss whatever comes up next with this outreach. See also the interview protocol.


Add EndToEnd metrics to kminion

This is a conglomeration of commits that will add end to end metrics export capability to kminion. There are comments given on some added function to make things easier to be understood. There is also a chain of validations of management topic that are done before producing and consuming to management end to end topic. Please do inform if further changes needed.
This pull Request will add the following metrics:

End-to-end latency
Produce and Consume availability
Consumer offset commit availability
Consumer offset commit latency
Kafka message loss rate

The proposed config changes would be the following
minion:
  endToEnd:
    enabled: true # Default is false
    topicManagement:
      enabled: true
      name: kminion-end-to-end # This is the default
      replicationFactor: 1
      partitionsPerBroker: 2
      reconcilationInterval: 10m
    probeInterval: 2s # How often messages will be sent
    producer:
      latencySla: 5s # Default is 5s. will be used for bucket sizing and considered as upper bound and produce timeout (longer than that = failed)
      requiredAcks: -1 # Default is -1 (all), possible value would be 0 (No Ack), 1 (Leader Ack), or -1 (All ISR Ack)
    consumer:
      groupId: kminion-end-to-end # This is the default
      latencySla: 20s # Default is 20s, will be used for bucket sizing and considered as upper bound. Messages that take longer than that consider messages as lost?
      rebalancingProtocol: cooperativeSticky

Cheers and stay healthy

Appreciate the review @twmb! I have made the changes based on your comments.


Add a check Callback to the Pattern Paritioner

cc @comaniac @mbaret @masahi

LGTM. I saw that you've fixed the debug print so I'll close #5642.

Ah TQ just merged that one so please rebase to the master lol

@mbaret Let me take a look at that PR

@mbaret Okay, took a look at the type system.
I'm actually passing you the original expression to check, not the partitioned version, so i don't think it will be a problem.
That being said, I am not propagating type information through partitioning, in part because I'm not sure at what stage of the compiler passes it will be used, and it would fail if someone tries to run this before type inference.
I am, however, I'm running InferTypes as part of the matcher for TypePatterns, so maybe I should just add the requirement that the inputs need to have well formed types and the pass will run InferTypes by default.
Thoughts?

There is only one issue that we need to think of about the type propagation. The reason merge composite (and some other BYOC passes) needs to manually propagate type is that later processed nodes may need to check the type of its arguments (such as the check example in this PR). Since the argument node may be the CallNode that we created for the partitioned function, we need to set up the type to make the check function work.
On the other hand, I am thinking that if we make sure all argument accesses are based on the pre node instead of post node, then manual type propagation may not be an issue.

We should have a test case to investigate this. Calling type infer after the partitioning pass probably deals with most of the issues that could arise.

I'll write something based on the test case in your PR.

@mbaret I'm noticing you don't use structural_equal in your tests after partitioning. I'm having issues with that pass when I introduce types. Does it not work for types?

I'll be honest and say the reason I didn't use structural equal for the second check was because I didn't want to write out the partitioned Relay expression :) I figured for that particular test I just want to know whether or not the check worked, there are plenty of tests to check the validity of partitioning above.
I'm not entirely sure how structural_equal interacts with types, it's not a pass I've looked into in much detail.

@mbrookhart @mbaret is @mbaret's PR #5640 ready to merge?

Yes! Using it as inspiration for future improvements, but there's nothing here that would block it.

Thanks @mbrookhart @mbaret


Raidboss player name override features

Allow overriding player name and playing TTS through browser when using raidboss overlay with websocket. Example query string:
&player=Some%20Person
If that person is in your party, raidboss will display the same timeline as normal, but give callouts for that person and their job instead of the person hosting the ACT/Overlay/WS/Cactbot instance.
Text to Speech is done via google services as that was the simplest to implement. Audio should only be fetched once per TTS string per page load.
Initial tests for this functionality are good but haven't had a chance to do extensive testing yet.

Regarding the autoplay issue: The same issue also applies to alert sounds (any sound really).
If you add the button, it'd probably be best to show it whenever the overlay is loaded over WebSocket and add an option to disable it because clicking anything in OBS' browser source is annoying.

Chiming in on the discord bot use case--I don't think this would solve the entire problem, but it definitely adds flexibility--someone could play dps, but set the callout person as a healer to get callouts for raidwides and and tankbusters and such?
I haven't messed around with OverlayPlugin's websocket server features--can you use it for the same purpose as ACT_DiscordTriggers?
(this change looks neat by the way, ty!)

Chiming in on the discord bot use case--I don't think this would solve the entire problem, but it definitely adds flexibility--someone could play dps, but set the callout person as a healer to get callouts for raidwides and and tankbusters and such?

The idea would be that you wouldn't have a discord bot.  You'd have one person running ACT, and then everybody can connect to their ACT and open up a webpage locally on their other monitor or on their phone or whatever and it would do individual callouts for those people.

I haven't messed around with OverlayPlugin's websocket server features--can you use it for the same purpose as ACT_DiscordTriggers?

The WebSocket interface allows you to display your overlay on anything that has a web browser. You can use a second PC, laptop, smartphone, tablet, a smart TV, your fridge, your car, whatever. As long as it has a modern web browser, it can display your overlay (MopiMopi, Kagerou, Cactbot, etc.).
You can open the overlay on several devices which means that you can have one person in a group run ACT and everyone else can then open the overlay in their web browser.
However, since the overlays assume that the user is running ACT, all members of the group will get the same callouts or have the same person labeled as YOU on the DPS overlay. This PR fixes that issue (specifically the callouts for Cactbot).

Regarding the autoplay issue: The same issue also applies to alert sounds (any sound really).
If you add the button, it'd probably be best to show it whenever the overlay is loaded over WebSocket and add an option to disable it because clicking anything in OBS' browser source is annoying.

This is a good point, the non-TTS audio alerts also won't work in a browser without user interaction with the page, e.g. this code from popup-text.js:
      } else if (soundUrl && playSounds) {
        let audio = new Audio(soundUrl);
        audio.volume = soundVol;
        audio.play();
      }

@quisquous does it make sense to write this check and button as something completely independent and trigger it on page load if audio alerts are enabled or browser tts is enabled, rather than having it tied to the browser TTS functionality directly?

The WebSocket interface allows you to display your overlay on anything that has a web browser. You can use a second PC, laptop, smartphone, tablet, a smart TV, your fridge, your car, whatever. As long as it has a modern web browser, it can display your overlay (MopiMopi, Kagerou, Cactbot, etc.).

Just a quick note that Cactbot itself only works in Chromium-based browsers. Other overlays might work in other browsers.
Maybe once I get this PR finished and settled I'll look into getting it to work in other browsers as well, but when I was testing a week ago even after I fixed the JS errors stopping Cactbot from working in Firefox there were something like 50 regex errors in the trigger js files that I just didn't have time to look at.

Sorry, I did not mean to close this!

Regarding the autoplay issue: The same issue also applies to alert sounds (any sound really).
If you add the button, it'd probably be best to show it whenever the overlay is loaded over WebSocket and add an option to disable it because clicking anything in OBS' browser source is annoying.

@quisquous does it make sense to write this check and button as something completely independent and trigger it on page load if audio alerts are enabled or browser tts is enabled, rather than having it tied to the browser TTS functionality directly?

Yeah, I think it would make sense to have this be independent.  I'm also not quite sure that I understand precisely which cases an interaction is needed for, as this hasn't been an issue in practice.

Just a quick note that Cactbot itself only works in Chromium-based browsers. Other overlays might work in other browsers.
Maybe once I get this PR finished and settled I'll look into getting it to work in other browsers as well, but when I was testing a week ago even after I fixed the JS errors stopping Cactbot from working in Firefox there were something like 50 regex errors in the trigger js files that I just didn't have time to look at.

Yeah, Firefox isn't the primary use case, but if it's easy enough to fix, then I'm happy to take fixes, especially if there's any automated testing that can be done.

I haven't messed around with OverlayPlugin's websocket server features--can you use it for the same purpose as ACT_DiscordTriggers?

The WebSocket interface allows you to display your overlay on anything that has a web browser. You can use a second PC, laptop, smartphone, tablet, a smart TV, your fridge, your car, whatever. As long as it has a modern web browser, it can display your overlay (MopiMopi, Kagerou, Cactbot, etc.).
You can open the overlay on several devices which means that you can have one person in a group run ACT and everyone else can then open the overlay in their web browser.
However, since the overlays assume that the user is running ACT, all members of the group will get the same callouts or have the same person labeled as YOU on the DPS overlay. This PR fixes that issue (specifically the callouts for Cactbot).

oh this is rad!!! yeah this totally solves the discord bot use case lol this would be wayyy more convenient

I'm also not quite sure that I understand precisely which cases an interaction is needed for, as this hasn't been an issue in practice.

I noticed these issues when I worked on the new CEF version for OverlayPlugin. I had to explicitly disable the autoplay-requires-interaction rules. These rules are obviously still enabled in a real browser and as such Cactbot will behave differently depending on whether it's running in an overlay or a browser.
Anything that plays sound requires a user interaction. You have to assume that the whole page is muted until the user clicks or types inside the page. It doesn't matter if there's a button or not, even a click on an alert or a white background counts as an interaction.

Hopefully I did that rebase right, never had to rebase to an upstream project before.

Uh, no. You merged in the recent changes instead of rebasing. See all of those commits above? Especially the merge commit? Those are a sign that the rebase didn't go as expected.
If you want to try again, use these commands:
# First, throw away the merge commit
git reset --hard 2f17609
# Then rebase
git rebase origin/master
# And finally, push
git push --force

You might want to double-check the commit hash above. It should be the last commut you made before the merge. If it's wrong, you'll lose everything between the specified commit and the merge so make sure I got it right.
The --force at the end is necessary because a rebase rewrites commits and thus overwrites existing history. A normal push doesn't allow that since it's a destructive process.

you can make a backup of your current branch state with git checkout -b my-branch-backup btw it'll make it easier to recover if you reset the wrong thing

Just as a heads up, the current version will cause load issues with raidemulator.html due to expecting the new js files to be loaded. I've fixed this locally but haven't pushed it up to github yet.

Thanks for this!!

Hey there! It's been awhile since this feature was added, and I'm curious if we'll ever get a plebeians guide to setting this up? As someone who knows nothing about how any of this works I can't for the life of me figure out how to use this feature with cactbot so I feel pretty blind/dumb. I'm one of those people who currently runs a discord bot and would love to switch to this (as the bot causes me some issues these days), because getting my raid group to install their own cactbot is like herding cats; they're significantly more technologically inept than me, and I'm inept enough as it is. =X

There's https://github.com/quisquous/cactbot/blob/503dc66bf8391aed2c86cf9bab3a9097fd1c4098/docs/RemoteCactbot.md
I haven't merged it yet because ngld is working on a built-in version of this to OverlayPlugin, where you'd just need to hit one button to do most of the steps there.

Thanks so much for the quick response! And nice to know an even easier way of doing it is being worked on. :)


Date filter crashes the site

I use this for the table column
{
	dataField: 'dateBgn',
	text: 'Date Begin',
	filter: dateFilter(),
	sort: true,
	events:
	{
		onClick: (e, column, columnIndex, row, rowIndex) => {
			this.changeDepth(1)
			this.setState({currCnt: rowIndex})
		}
	}
},

and for the table itself
<CardBody>
	<BootstrapTable
	bootstrap4
	// remote={ { sort: true } }
	keyField='id'
	data={ cntListArray }
	columns={ listCntColumns }
	noDataIndication={ indication }
	striped
	hover
	condensed
	pagination={ paginationFactory() }
	filter={ filterFactory() }
	/>
</CardBody>

But it crashes my website with error:
Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.

My dates are in the following form : 1995-12-04

@keybraker you don't follow the instruction to open an issue. so please reopen again. thanks

https://github.com/react-bootstrap-table/react-bootstrap-table2/issues/new?assignees=AllenFang&labels=&template=bug_report.md&title=
Please remember to give the codesandbox so that I can help you more efficiency


X11 --touch-devices switch

My atom-shell app needs to run on a specific linux device which has a touch-panel.
Out of the box some things like dragging a range input don't work with atom-shell (as well as with chromium). After some testing I figured out that if I start chromium with
chromium-browser --touch-devices=TOUCHSCREEN_ID --touch-events

the touchscreen gets recognised and the range sliders work.
I've managed to add the --touch-events switch to the atom-shell code as it's part of the WebRuntimeFeatures with
blink:WebRuntimeFeatures::enableTouch(bool);

Now I can enable it through app.commandLine.appendSwitch('touch', 'true');.
But I have no idea how to implement the --touch-devices switch as I have no experience with the atom-shell code nor with the chromium code.
If someone has a hint or idea how to add this I would appreciate it a lot.

Is there any reason to just not enable it all the time?

Okay - didn't know this is already implemented.
I've tested this on 0.20.4 now  - yes, --touch-events does work. I get Invalid --touch-events option: invalid. But when I execute it with --touch-devices=invalid I don't get that error message.
The function for --touch-devices can be found here https://github.com/scheib/chromium/blob/master/ui/events/x/touch_factory_x11.cc#L56.

I've now tested this on the linux device with the touch-panel, both flags work :+1:.
Sorry for not checking this first - thanks!

I'm sorry to bring up an old issue but I'm having trouble with this.
Ubuntu 14.04 Atom v0.21.2
app.commandLine.appendSwitch('touch-devices', 'invalid') ;
// No warning printed
app.commandLine.appendSwitch('touch-events', 'invalid')
// Invalid --touch-events option: invalid

@mcdermed you need to append --touch-events and --touch-devices=X to the atom executable.
./atom --touch-events --touch-devices=ID PATH_TO_APP works for me on ubuntu 12.04.
I haven't tried if it works with the app.commandLine.appendSwitch though.

Thanks for the response @GeorgS. I'm just now getting around to testing this again and it seems like those flags aren't having any effect on touch events for me. I've set --touch-devices=X to multiple different values and I see no difference in touch events being triggered in the browser.
google-chrome --touch-events --touch-devices=8 www.google.com
// Touch events work
./atom --touch-events --touch-devices=8 app_path
// touch events work
./atom --touch-events --touch-devices=15 app_path
//touch events work

Perhaps I misunderstand how this flag works but I interpret it as only the device id specified will be used for touch input. If chrome can't use the touch device does it fallback to finding it itself?
I'm using this flag to try to resolve this chrome bug https://code.google.com/p/chromium/issues/detail?id=439914

As it is described in details at atom/atom#6306, atom editor since version 0.189.0 suffers from a Chrome41 bug with touch screen in Linux@VirtualBox environment. I have tried:

passing option(s) --touch-devices=123 and/or --touch-events=invalid to atom command line directly;
modifying /usr/bin/atom to pass the options above;
patching source code with app.commandLine.appendSwitch '--touch-events=123' and rebuilding the editor from the scratch.

Nothing helped.

I'm having the same issue! Very annoying ><

https://code.google.com/p/chromium/issues/detail?id=439914#c22
Someone made a patch for this problem.

http://code.google.com/p/chromium/issues/detail?id=486492
this issue maybe fixed in Chromium 45

Can confirm this is fixed with latest electron (based on v45).


Release of version <IP_ADDRESS> of ComputerManagementDsc

Releasing version <IP_ADDRESS>

This change is

Codecov Report

Merging #220 into master will decrease coverage by 6%.
The diff coverage is 96%.

@@          Coverage Diff           @@
##           master   #220    +/-   ##
======================================
- Coverage      90%    83%    -7%
======================================
  Files           8     10     +2
  Lines         836   1068   +232
======================================
+ Hits          754    891   +137
- Misses         82    177    +95


⚠ Mobitopup has degraded performance

In 91b7fe5, Mobitopup (https://napcard.voz.tech) experienced degraded performance:

HTTP code: 200
Response time: 4998 ms

Resolved: Mobitopup performance has improved in 52596c1.


Adds 4 new projects to the tool suite

New projects:
redis
htop
lz4
curl

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- varats/projects/c_projects/curl.py  3
- varats/projects/c_projects/lz4.py  3
- varats/projects/c_projects/redis.py  3
- varats/projects/c_projects/htop.py  3

Clones added
============
- varats/projects/c_projects/libvpx.py  2
- varats/projects/c_projects/curl.py  12
- varats/projects/c_projects/tmux.py  3
- varats/projects/c_projects/coreutils.py  2
- varats/projects/c_projects/qemu.py  1
- varats/projects/c_projects/busybox.py  3
- varats/projects/c_projects/lz4.py  13
- varats/projects/c_projects/redis.py  9
- varats/projects/c_projects/gravity.py  1
- varats/projects/c_projects/htop.py  14
- varats/projects/c_projects/lrzip.py  2
- varats/projects/c_projects/glibc.py  2
- varats/projects/c_projects/openssl.py  2

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- varats/projects/c_projects/curl.py  3
- varats/projects/c_projects/lz4.py  3
- varats/projects/c_projects/htop.py  3
- varats/projects/c_projects/redis.py  3

Clones added
============
- varats/projects/c_projects/busybox.py  3
- varats/projects/c_projects/tmux.py  3
- varats/projects/c_projects/gravity.py  1
- varats/projects/c_projects/openssl.py  2
- varats/projects/c_projects/coreutils.py  2
- varats/projects/c_projects/qemu.py  1
- varats/projects/c_projects/glibc.py  2
- varats/projects/c_projects/curl.py  12
- varats/projects/c_projects/lz4.py  13
- varats/projects/c_projects/htop.py  14
- varats/projects/c_projects/redis.py  9
- varats/projects/c_projects/libvpx.py  2
- varats/projects/c_projects/lrzip.py  2

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- varats/projects/c_projects/redis.py  3
- varats/projects/c_projects/curl.py  3
- varats/projects/c_projects/htop.py  3
- varats/projects/c_projects/lz4.py  3

Clones added
============
- varats/projects/c_projects/redis.py  9
- varats/projects/c_projects/gravity.py  1
- varats/projects/c_projects/libvpx.py  1
- varats/projects/c_projects/glibc.py  1
- varats/projects/c_projects/curl.py  11
- varats/projects/c_projects/busybox.py  2
- varats/projects/c_projects/tmux.py  2
- varats/projects/c_projects/lrzip.py  1
- varats/projects/c_projects/openssl.py  1
- varats/projects/c_projects/htop.py  13
- varats/projects/c_projects/lz4.py  12
- varats/projects/c_projects/coreutils.py  1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Complexity increasing per file
==============================
- varats/projects/c_projects/curl.py  3
- varats/projects/c_projects/htop.py  3
- varats/projects/c_projects/lz4.py  3
- varats/projects/c_projects/redis.py  3

Clones added
============
- varats/projects/c_projects/lrzip.py  1
- varats/projects/c_projects/coreutils.py  1
- varats/projects/c_projects/openssl.py  1
- varats/projects/c_projects/gravity.py  1
- varats/projects/c_projects/busybox.py  2
- varats/projects/c_projects/glibc.py  1
- varats/projects/c_projects/libvpx.py  1
- varats/projects/c_projects/curl.py  11
- varats/projects/c_projects/htop.py  13
- varats/projects/c_projects/tmux.py  2
- varats/projects/c_projects/lz4.py  12
- varats/projects/c_projects/redis.py  9

See the complete overview on Codacy


"An error has occurred. Please save your..." on home settings icon

As you can tell from the title, I'm getting an error after launching the home settings using this. I have gone through this video to a tee if it helps: https://www.youtube.com/watch?v=aLefbewpODA
I can post whatever if that helps. Thank you!

https://3ds.hacks.guide/installing-boot9strap-(mset9)


vnote: 2.5 -> 2.6

Motivation for this change
https://github.com/tamlok/vnote/blob/v2.6/changes.md#v26
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[x] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

ping @kuznero for testing

Tested, works great!


Page Types needs interface implementation

Refinery 2.0 lets you specify different configurations of page parts for page creation via the config.types directive in config/initializers/refinery/pages.rb. There is no way to specify that a page should use a different configuration.

Any idea of how you want to do it? @parndt didn't seem to be sure yet. What are the possibilities you are looking at guys?

It'll default to 'show' (we need to have support for a default) and then if you change it it just reloads the form with that. Or something.

Just to have some kind of doc on how to use that, add this in config/initilaizers/refinery/pages.rb:
config.types.register :my_content_type do |content_type|
  content_type.parts = %w[intro body right footer related]
end

then that:
config.view_template_whitelist = ["home", "show", "my_content_type_template"]

You should have a view named "app/views/refinery/pages/my_content_type_template.html.erb".
Now, as there is no UI, you could change the "Add new page" link to that:
Add new page

No click that new link, create your page with your custom page parts, save, and go see it!


Customization

Hey there!
Let's say I wanna customize the topbar of my app. I have this HTML code :
<template name="topbar">

      My Clients
      All Clients
      Supervisor
      Analytics

</template>

And, I wanna customize the topbar like this :
// client/stylesheets/topbar.import.less
@topbarItemVerticalPadding: @relative16px;
@topbarHeight : (@topbarItemVerticalPadding * 2) + 2em;

.topbar.ui.menu{
  min-height: @topbarHeight;

  .item{
    padding-top: @topbarItemVerticalPadding;
    padding-bottom: @topbarItemVerticalPadding;
  }
}

The thing is I don't have access to the @relative16px variable in topbar.import.less obviously because all the import for semantice is in client/stylesheets/semantic/.
My question is how do I access semanctic-ui variable in my other stylesheets ? I think it would be weird to define the topbar in theme folder client/stylesheets/semantic/site since I don't wanna change the style of the menu collection.
Thanks for your help !

Per element customization each has reserved files. This helps keep your code organized/portable between projects.
In semantic UI variables are compiled per-element.The files src/site/collections/menu.overrides is a LESS file that has access to all variables as defined for menu. So this is the best place to put site specific extensions to menu as you are expressing.
Instead of specifying these additional topbar variables inline in that file it may make more sense to include them inside  src/site/collections/menu.variables. However inline will function as well.

That would be great! Thanks for your help!

Can I create import files under the site folder something like `/client/semantic/site/views/topbar.import.less?

You can do anything from that override file which LESS will let you.


Update 7_create_sns_topic.md

fixed section number
Issue #, if available:
Description of changes:
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Thank you for the fix.


"Save notebook with widgets" doesn't seem to work

I have set up a simple notebook with a widget (which works fine locally), clicked the "save with widgets" menu option, uploaded, and viewed on nbviewer.  No widget appears in the notebook (although I can see the widget data in the .ipynb file, at the bottom).  Here it is:
http://nbviewer.jupyter.org/gist/ketch/36daf198782102a30f318d38fa5ae13a
I am running ipywidgets 6.0.0.beta7 and widgetsnbextension 2.0.0.beta14.  I've tried with both Chrome and Safari browsers.

Can you test again? Playing with Randy, I made this gist, which seems to render fine on nbviewer.
If it works for you, we can close.

After updating everything today, it seems gives me this:

If that is the intended behavior, then you can close this.
In practical terms for widgets controlling plots, it seems that Staticwidget was removed and has not been replaced by anything; correct?

By the way, the kind of output in that screenshots also appears in various places in the docs.  Is that intended?

The output widget used by @interact has no counterpart in the static web contexts. So this is the expected behavior as of now.

By the way, @fperez when I look at the gist on nbviewer, the print statement in the second widget does not work.  Instead there is the same "could not create model" message.  Do you see something different?

Same comment as above. Output widgets generated by @interact are not yet supported in static web pages.

Okay, thank you for the helpful explanations.  I'll go ahead and close.

It seems that the use of interact + static embedding is something people want. I will go ahead and make an output widget for the static embedder for 6.0.1.

@SylvainCorlay That would be highly appreciated!

No problem. We can most likely reuse a lot of what we did for jupyterlab there.


Unit tests

Add unit tests for all functions in libdcf77. Perhaps if a test is difficult to write/run, the corresponding function needs to be refactored.
Testing the GPIO pin reading needs some live tests to read a 0 pulse and a 1 pulse for example. This part is probably platform specific (which platforms to keep?)

[ ] test for DST/leap announcements
[ ] decode_time.h (split up?)
[ ] input.h (except for get_bit_live() )
[ ] setclock.h
[x] decode_alarm.h - not done, no proper specifications
[x] mainloop.h - we have dcf77pi[-analyze].c and readpin.c for this


Add postinstall script, update dependencies, update README instructions.

Description of changes proposed in this pull request:

Added prepack script, runs build and docgen before packing repo for publishing
Added postinstall script, runs hardhat clean, hardhat compile, and tsc after yarn install
Added clean  script, runs hardhat clean.
Added comments to the env template file.
Updated dependencies and devDependencies.
Added instructions regarding the ENV template to the README.

Checks:

[X] Have you followed the guidelines in our Contributing document?
[X] Have you checked to ensure there aren't other open Pull Requests for the same update/change?

New Feature Submission:

[X] Have you successfully ran tests with your changes locally?

One lint warning not introduced by this commit,  #103 created in response.

Changes to Existing Features:

[X] Have you added an explanation of what your changes do and why you'd like us to include them?

@byterose should we also remove the dist directory within the clean script? If so...
We could just add "rm-rf dist/ && hardhat clean" , but another way to do it could be programmatically by overriding the hardhat clean task. I propose that because it'd be easier to extend and get around cross env issues.

@byterose should we also remove the dist directory within the clean script? If so...
We could just add "rm-rf dist/ && hardhat clean" , but another way to do it could be programmatically by overriding the hardhat clean task. I propose that because it'd be easier to extend and get around cross env issues.

I think it is better to add rm -fr dist/ && hardhat clean into the script, just to make it more transparent to the developer what the script is doing.


Work with @vue/test-utils instead of @testing-library/vue

Is your feature request related to a problem? Please describe.
I didn't think it would really matter which tool I use, and was willing to use a new API/library, and if it means I get to preview Jest tests in a browser, then it would be worth it.
I tried @testing-library/vue but it couldn't do half of the things I need, the documentation is terrible, and it seems to enforce a bunch of very strongly opinionated obvious anti-patterns. So, yeah, I'm now switching back to @vue/test-utils.
If it means I have to give up browser rendering of Jest tests, then honestly I'm surprised to say this, but it's worth it to avoid using testing-library.
Describe the solution you'd like
Is there anyway you can make jest-preview compatible with @vue/test-utils?
Describe how should jest-preview implements this feature
Not sure about implementation details, but once implemented it would be good to update the docs with step-by-step guide for switching over to jest-preview, noting you support both @vue/test-utils and @testing-library/vue, with instructions for each.
Describe alternatives you've considered
I don't know if there are any other "Jest test in a browser" tools, but if so, let me know. It's a great debug feature to have, but not worth it if I can't write a simple test to begin with.
Additional context
I was very excited to learn about jest-preview, I even wrote up step-by-step instructions for Vue, as the jest-preview site didn't have them all in one place.

https://dev.to/thejaredwilcurt/debugging-vue-jest-tests-in-a-browser-1m25

So if it's possible to use it with Vue-Test-Utils, I'd happily come back to it.

Hi @TheJaredWilcurt. Thanks for reporting this issue.
jest-preview can work on any framework based on jsdom, so it doesn't matter if it's @vue/test-utils or @testing-library/vue. The example here uses @testing-library/vue just for demonstration purpose.
Did you try to integrate jest-preview with @vue/test-utils? If yes, can you share the outcome/ behaviors, it would help a lot. If not, can you help to try it? (Just run jest-preview CLI and execute debug() in your tests)

Yes, after doing the dev.to setup I linked, I swapped @testing-library/vue out for @vue/test-utils. And changed from render to shallowMount (or mount, tried both).
Then added expect(2).toEqual(3) to for a test to fail (this worked before to show the component in the browser, in the same test). But it doesn't work, the browser refreshes, but the <body> is empty (except for the same <script> tag that was there before).

Here I made a reproduction:

https://github.com/nvh95/jest-preview/pull/257/files#r961953543

It works with Testing Library, but not Vue Test Utils
If you can figure out how to make it work with Vue Test Utils, then that PR could be changed to npm uninstall @testing-library/vue and remove it from the import in that testing file. Then it would be read to be merged, retaining the testing-library example you already had, but also replacing it with Vue-Test-Utils as the default Vue implementation reference.


Multiple spritesheets foreach folder automatically

Can you add support for creating several sprites according to folder structure automatically?
e.g.
file structure:
images/
----- icons/
---------- a.png
---------- b.png
----- help/
---------- help1.png
---------- help2.png
srcDir = ../images
output files:
icons_sprite.png
help_sprite.png
icons_sprite.css
help_sprite.css

This is a duplicate of #93. To elaborate on the closing comment of that issue, we try to keep spritesmith focused on doing one thing well; creating a spritesheet out of images. Other layers (e.g. grunt) handle generating multiple tasks with different inputs/outputs very well and we defer to their one thing well instead.


Add credentials to buildah from

Signed-off-by: TomSweeneyRedHat<EMAIL_ADDRESS>This adds the --creds parameter to the 'buildah from' command and stubs in a few other places.  Those places that need further work are marked with '// TOM: todo'.   The plan is to fix those up in a followup PR.  This new functionality does not have any tests for it yet, I'd like to do that as a follow up too, but can be persuaded otherwise.
Please don't merge this until I take another look in the morning and give it my LGTM.  The eyeballs are a bit glossy at the moment.

Does docker have commands like this?  Or is docker just relying on docker login?  Should we add a buildah login?

I'll let @nalind correct me if I'm wrong, but I don't believe docker has a --creds or similar param.  From what I've seen they rely on docker login.
Also FWIW, if you're pulling from a private docker registry with buildah, you can drop the --creds param if you first login with docker login.

@TomSweeneyRedHat Tests are failing.

@runcom PTAL

I'm going to have to bother @nalind on Monday for this one.  It looks like a couple of files in vendor are empty and I'm suspecting they shouldn't be.  There's also a warning in the code, but that's a chunk of code I stole from skopeo and I don't think it's the cause for the failure.  It all compiles fine in my sandbox.  Here's the error from Travis:
make[1]: Leaving directory `/home/travis/gopath/src/github.com/projectatomic/buildah/docs'
can't load package: package github.com/projectatomic/buildah/vendor/github.com/ostreedev/ostree-go/pkg/otadmin:
vendor/github.com/ostreedev/ostree-go/pkg/otadmin/admin.go:1:1: expected 'package', found 'EOF'
can't load package: package github.com/projectatomic/buildah/vendor/github.com/ostreedev/ostree-go/pkg/otremote:
vendor/github.com/ostreedev/ostree-go/pkg/otremote/remoteadd.go:1:1: expected 'package', found 'EOF'
cmd/buildah/from.go:82:2:warning: ineffectual assignment to credsContext (ineffassign)
make: *** [validate] Error 1

Hmm, might be that assignment after all.  Need to dig further to see why that's a problem here but not skopeo.

LGTM.  Fingers crossed the test will pass.  I learned a nuance in golang with the error, will see if we can get our makefile to replicate/flag the issue Travis flagged.

Are we going to need the same code added to kpod pull?  If so could you open a pull request on it?
LGTM

@nalind PTAL

I thought I saw a PR for kpod pull --creds fly by, but I'm not seeing code for that.  I'll create an issue, assign it to myself and will work on that.

This needs tests.

Yep, definitely needs tests.  I've been mulling over how to create a private registry "on the fly" in a test script.  I may need to get a cert to do that and that's been the hang up, but I've not spent a ton of time on it yet.  Was hoping to get un/pwd auth working for the three buildah commands first, then get the tests going for that.
Looks like we'll need to discuss which of the other authentication related flags I should fully enable too.

@runcom PTAL

@runcom PTAL

back from PTO, I'll take a look at this today

looks ok overall but we shouldn't leak credentials where we aren't supposed to send them

@TomSweeneyRedHat needs a rebase.

I had to mostly gut the test for Travis to run.  I commented out most of the functionality.  At times it would complain that it could not resolve localhost, other times socket connections issues talking to dockerd, other times docker not being present. If possible I'd like to get this in as is and try to figure out what the heck the issues are in Travis/ubuntu.  These tests with the comments removed work fine on my Fedora vm.

Yes lets get this merged without a test, and manually test it for now.

@runcom @aweiteka @nalind PTAL

Can you just add a smoke test by creating a private image on the Docker hub and do a buildah from that image? LGTM otherwise

I actually started out with testing against dockerhub.com, but went to the private registry as I didn't think I could get a certificate associated with it (maybe I can, I'll relook), it didn't appear to be as flexible, and I wasn't real hip to expose my un/pwd in the test.  But perhaps I can set up a test user there for this and at least have a test in play to show that at least the creds piece works.

Only if you can do a readonly registry.   Could we setup something at crio-io or some other site that was readonly and only allowed people to pull with credentials?

IDK about the crio-io site.  Maybe?  Can we run docker on the system where the site lives?

Seems we need an external site with a readonly registry,  So that we could hard code the password. Otherwise we need to hack up something to start a registry inside of a VM/COntainer and have the test talk to it.

@nalind PTAL

As soon as we get this in should we build a new buildah or wait for @nalind big patch?

I'd like to wait for Nalin's magic #187 unless it's weeks out.

Should the changes in util/util.go still be there?

Got a lot of new extra whitespace at the end of lines in from.bats.

Make sure if we have extra config for certs, that this is handled in containers/image rather then buildah, so we don't end up with different creds for buildah, kpod, skopeo and CRI-o.

Oh shoot yes, changes to util/util.go should be backed out.  Fixing that now.  TYVM

@nalind I think I killed all the extra whitespace in from.bats.  Would love to know how you eagle eye that.

LGTM, I believe I've addressed all comments.  Please holler if not.

LGTM, I believe I've addressed all comments.  Please holler if not.

As an FYI, I thought I'd found a way to get a docker registry up an accessible (#247) but buildah from is not happy talking to it from within Travis when I merged it here.  That's what the pushes from today were all about.  I've put the test files back to the way they were Friday night, no other changes.

LGTM, merging.
@rh-atomic-bot r+

Excellent, This only handles it in one direction, we need support for credentials in buildah push, correct?  Once we have that we can cut a new release.

Yep, just one direction with this one.  Next up is commit and push.  William Henry brought up that we might want to add creds to Inspect as well.  I'd not considered that, but think he's probably right.  I'm going to do commit/push next for sure, will look at inspect but may do a separate PR for that.

I agree lets get push/commit done, so we can cut a new version.  Need to get @nalind to remove --transport also ...


no-validation-limits vs validation-limits

I suggest having validation-limits instead of no-validation-limits.
validation-limits should be enabled by default.
As you can in the following link: As a related note, Cargo requires that features are additive so a feature named negatively like no-abc is practically never correct.
https://rust-lang.github.io/api-guidelines/naming.html#c-feature

This feature sounds more like a setting then a feature flag. So maybe we have to create some settings or different functions you call when you want the non-limited version. Like a all_between_no_limited, all_between_unchecked, all_between_unvalidated or ...

I agree 👍🏼
Some other naming ideas, some_between for limited vs all_between for no limit


Ability to disable (unapply / deactivate / rollback) plugin

Expected Behavior
There should be a standardized API to "deactivate" a plugin.
For instance, the idiomatic approach suggests that the build scripts lists all the plugins in plugins {...} section.
That causes all the plugins to be applied, and now the question becomes "what if I need to skip certain tasks?"
For instance:

plugins { checkstyle } creates checkstyle tasks, and there's a reasonable demand to ask for -PskipCheckstyle
plugins { maven-publish } prepares the project for publishing, however there might be cases when only a certain subset of modules need to be published at a specific publish invocation. For instance, in "monorepo-like git repository", I want "all projects to be publishable", however, "this time I publish only a specific project.

IDEA: what if there was plugin.disable() where the plugin author would implement the needed logic to disable all plugin-added tasks?
Of course, there's no way to remove "added dependencies", and there's no way to "un-add a task", however, plugins.withId("checkstyle") { disable() } would be better than tasks.withType<Checkstyle>().configureEach { enabled = false }.
It looks like a very similar case often happens when plugins have to deal with whenObjectRemoved. So asking a plugin to disable all its tasks seems not that bad idea (at least, at the first sight).
Then it would be helpful for having a common set of properties to "auto-disable" a plugin like ./gradlew -Pplugin.checkstyle.disable build or ./gradlew -Pplugin.:core:api.checkstyle.disable
I know https://twitter.com/johnregehr/status/1443068945049657347 is a thing, yet having something standard would be great
Current Behavior
One of the options is to use plugins { id("checkstyle") apply false }, and then use a conditional to call apply(plugin = "false"), however, it makes the scripts less readable, it causes no accessors to be generated, etc/
Context
https://github.com/gradle-nexus/publish-plugin/issues/84#issuecomment-986943076

How do you suggest to do it?
At configuration phase all(?) of the tasks has been configured and dependencies attached.
The only way is to provide proxies for a plugin. However, it could be relatively easy to escape sandboxing.
In my projects I leverage buildSrc mechanism to apply plugins. This keeps my build files short and tidy

Sorry for the late reply
This feature request is in the backlog of the relevant team and is prioritized by them.


machine stuck in business  unit

Hi
I create a new unit. Add the PassPhrase to one host and it appears ( the filter is not working)
I then want to remove that machine from that unit.
I remove the PassPhrase from that machine, try and delete the unit but every time i refresh it keeps appearing

I had a look in the mysql DB and the business_unit table it empty
Thanks

Filter is not working
Could you tell why you think the filter is not working?
Remove machine from group
The machine won't be removed unless it checks in again, that may not be desirable. Could you file a separate issue for that?
Machine Groups and Business Units are two different things. You can have Machine Groups without business units. They will appear in 'Unassigned Groups'. Machine Groups are stored in a separate database table.

I might be reading the docs wrong so please correct me when i get it wrong
Filter is not working
A test machine is in the test machine group, i click on the filter button but only thredefault group is shown
Remove Machine from group
I manually checked the machine in a few times once i had removed the passphrase and it was still being shown as the test group.
I will open a separate issue for it
I had a look in the DB at the  machine_group but it is also empty
mysql> select * from machine_group;
Empty set (0.00 sec)

mysql>

If you log off and logon again, is the test group shown in the filter?

You could also open this in your browser:
index.php?/auth/set_session_props/show
which will refresh the groups in your list.

Ok, we don't use authentication
On Mon, Jul 13, 2015 at 10:29 PM, Arjen van Bochoven <
<EMAIL_ADDRESS>wrote:

You could also open this in your browser:
index.php?/auth/set_session_props/show
which will refresh the groups in your list.
—
Reply to this email directly or view it on GitHub
https://github.com/munkireport/munkireport-php/issues/266#issuecomment-121065055
.

--
Adam Barnett

Ok I added a change that will fix this.

Thanks, i pulled the update,
Here is the output from index.php?/auth/set_session_props/show
Array
(
    [user] => admin
    [auth] => noauth
    [groups] => Array
        (
        )

    [role] => admin
    [role_why] => Matched on wildcard (*) in admin
    [machine_groups] => Array
        (
            [0] => 0
            [1] => 1
        )

    [filter] => Array
        (
            [machine_group] => Array
                (
                )

        )

)

On Tue, Jul 14, 2015 at 8:27 AM, Arjen van Bochoven <
<EMAIL_ADDRESS>wrote:

Ok I added a change that will fix this.
—
Reply to this email directly or view it on GitHub
https://github.com/munkireport/munkireport-php/issues/266#issuecomment-121151800
.

--
Adam Barnett

I am also seeing two entries for "Manage Business Unit" now
See image

This update should address your issue where the filter would not update after you added/removed machine groups

That is now working, thanks
Still got that one machine stuck in a machine group :(
And there are now two entries for "Manage Business Units"
On Tue, Jul 14, 2015 at 9:20 AM, Arjen van Bochoven <
<EMAIL_ADDRESS>wrote:

This update should address your issue where the filter would not update
after you added/removed machine groups
—
Reply to this email directly or view it on GitHub
https://github.com/munkireport/munkireport-php/issues/266#issuecomment-121164248
.

--
Adam Barnett

How many files do you see in /app/views/admin?

Just the one
..app/views/admin $ ls
business_units.php

invisible perhaps?
..app/views/admin $ ls -la

Nope
inker ..app/views/admin $ sudo ls -al
drwxrwxrwx  2 ab user  4096 Jul 14 09:51 .
drwxrwxrwx 12 ab user  4096 Jul 13 12:12 ..
-rw-rw-rw-  1 ab user 20162 Jul 14 09:12 business_units.php

I can't replicate your issue, maybe you could reset your session by visiting:
index.php?/auth/set_session_props/show

I meant
index.php?/auth/logout

That did the job, once to keep note off
Thanks for the help
A
On Tue, Jul 14, 2015 at 10:53 AM, Arjen van Bochoven <
<EMAIL_ADDRESS>wrote:

I meant
index.php?/auth/logout
—
Reply to this email directly or view it on GitHub
https://github.com/munkireport/munkireport-php/issues/266#issuecomment-121186578
.

--
Adam Barnett


Serialization

After presenting notebooks with a thesis committee member today I realized that it would be useful to serialize plots to disk so I that I can quickly bring them back up when a Flatiron cluster node decides to end my session :laughing: .
GSP is a WIP but I'm thinking of something much simpler, at least for now.

Each Graphic implements to_dict() and classmethod from_dict() that stores all the buffers necessary to create the appropriate geometry and material for that Graphic, this can probably be implemented via methods on corresponding GraphicFeatures.
Apart from serializing Graphics, I think we just need to store the state of each PlotArea, i.e. cameras, controllers, canvas size.
GridPlot holds info for the gridplot configuration and all subplots
For ImageWidget we would need to store the entire 2D or 3D movie, so maybe ultimately store things to zarr instead of hdf5. :thinking:
classmethods on Plot, GridPlot and ImageWidget?
Somewhere in the output file store the type of plot that needs to be constructed and the fpl version it was created in. Have a helper function fastplotlib.load_viz() that auto create the right type of plot
No animation function support for now

I'll play around with this and note that it's very experimental.

I just got an idea! We might be able to serialize animation functions and graphic feature callbacks if the objects within the scope of the callback are contained within the figure :thinking:
Example:
line_graphic = figure[0, 0].add_line(sine, name="sine")

selector = line_graphic.add_linear_region_selector(selection=(0, 10))

hankel = linalg.hankel(sine[selector.selection()])
img_graphic = figure[1, 0].add_image(hankel, name="hankel")

def position_changed(ev):
  data = ev.pick_info["selected_data"]
  # figure is within the scope of figure, but `linalg` is not....
  figure[1, 0]["hankel"].data = linalg.hankel(data)


a simple way to provide sensitive and/or dynamic env for docker-compose

I understand this is a simple tool not meant for production, but it would be nice if there is a simple elegant way to accomplish this, as having plain passwords lying around makes many people nervous these days.
As an example, maybe each service can have a separate, optional .env.sh file with contents like:
MYUID=$(id -u)
yyy_password=$(pass docker-compose/services/mssql)

a wrapper is then used to inject the dynamic env before invoking the real docker-compose? This probably means that a gpg passphrase will be needed once for server.sh xxx operation every so often?
# docker-compose-wrapper file
##########
function compose_wrapper() {
    if [ -f "../../.usewrapper" ]; then
      set -a
      [-f ".env.sh"] && source <(cat .env.sh )
      set +a
    fi
    $real_compose  "$@"
}
...

compose_wrapper "$@"
##############

Hi @bayeslearner ,
I can think of several ways to provide a solution to the problem of dynamic environment variables or runtime. One of them would be using the method you describe. Another would be generating the .env file before executing the docker-compose command, taking advantage that our entry point is the Makefile would not be complicated. And, the last one, using a wrapper similar to the one that you comment and described in the following gist https://gist.github.com/mikeclarke/7620336.
About trying to hide the passwords and not show them in plain text, that should not be a problem. Why? Because this is running on a server, which should be secured and accessible only by the server administrator. Even if we avoid having passwords in plain text, this would not be a sufficient mechanism to ensure that, even if someone compromised our server, they would not obtain confidential information. Being able to access the .env.sh file would already be a way to obtain passwords or sensitive details.
Anyway, the possibility of adding dynamic information seems to me a good idea. If you feel like contributing, go ahead, as any contribution will be welcome 🚀
Thanks @bayeslearner !

I got it to work for myself.
so I settled on making just one change in your common.mk:
ifeq ($(wildcard $(ROOT_DIR)/docker-compose.sh),)
    DOCKER_COMPOSE := docker-compose
else
    DOCKER_COMPOSE := bash docker-compose.sh
endif

For each individual service, they are free to implement a wrapper however it sees fit.
For example, I have a mssql service,  there I added 2 files one is docker-compose.sh, the other .env.dynamic.
#!/bin/bash
set -a
[ -f ".env.dynamic" ] && source <(cat .env.dynamic | sed -e '/^#/d;/^\s*$/d')
set +a
docker-compose "$@"

The password is saved in a gpg encrypted store, without the passphrase to the secret-store,  having access to .env.dynamic is still useless.
#An encrypted password test
MSSQL_ROOT_PASSWORD=$(pass docker-compose/services/mssql)

I'm not sure I understand how exec could be used.  According to docker-compose documentation,  I have to use the environment variables of the shell to influence how it works, and not merely variables of the parent process.  So I have to export those variables into the shell, no matter what.  Am I missing something?


Add 'git commit' and related commands

Added git commit, diff, remote, branch.

I think there's something wrong here.  I'm only seeing the changes for git remote.  I think it's because there were merge conflicts, and someone resolved them wrong.

Hi Dr. Z,
This new commit (aaa4de6) should resolve the duplicated git fetch and improve upon the current definitions of git commit and other related commands.


New Luxembourg rules

New Luxembourg rules to match actual phone numbers

As discussed, here is the pull request. I couldn't use any git client at work behind the firewalls and proxies, so I edited the file in the web interface. Therefore I cannot run tests unfortunately.

You could run the tests locally?
On Fri, Sep 11, 2015 at 5:42 PM, Julien Del-Piccolo
<EMAIL_ADDRESS>wrote:

As discussed, here is the pull request. I couldn't use any git client at work behind the firewalls and proxies, so I edited the file in the web interface. Therefore I cannot run tests unfortunately.
Reply to this email directly or view it on GitHub:
https://github.com/floere/phony/pull/280#issuecomment-139580556

Unfortunately, with 10 tests failing (https://travis-ci.org/floere/phony/jobs/79872058), I can't easily accept this PR, as I can't fix them myself. Would you mind checking them and changing them if they should be different?

I have noticed some rules are wrong, I will be changing this soon and resubmit PR.

Thanks @jdel! :+1:


How to get errors when rendering from javascript (nodejs) code?

Hi, I'm having problems while trying to get errors when rendering MJML code.
Reproduction Steps:
import mjml from 'mjml';

// the MJML code. Note there's no closing tag for <mj-text>, I'm just forcing that error here:
var mjmlCode = '<mjml>mj-body><mj-text>Easy and Quick</mj-body></mjml>';

try {
  console.log(new mjml.MJMLRenderer(mjmlCode)); // should get an object with errors and html fields
  // also tried this, getting the same result:
  // console.log(mjml.mjml2html(mjmlCode));
} catch(error) {
  console.log(error); // in strict mode, I should get an object with a getErrors and getMessages functions
}

Expected behaviour:
According to this I should get one of this:

soft mode: the renderer should return an object with an errors field.
strict mode: the error in the catch should contain getErrors and getMessages functions.

Observed behaviour:
Got the exception raised in both cases (soft and strict), but with no info (not an Error object at all):
Error: [MJMLError] ParseError: Error while parsing the file
    at new MJMLError (modules.js?hash=460d1842c52aaca968e2cf7d1f333df7e695d3b3:4204)
    at documentParser (modules.js?hash=460d1842c52aaca968e2cf7d1f333df7e695d3b3:5135)
    at MJMLRenderer.parseDocument (modules.js?hash=460d1842c52aaca968e2cf7d1f333df7e695d3b3:4079)
    at new MJMLRenderer (modules.js?hash=460d1842c52aaca968e2cf7d1f333df7e695d3b3:4068)
    at Object.mjml2html (modules.js?hash=460d1842c52aaca968e2cf7d1f333df7e695d3b3:3780)
    at Object.preview (editor.js:44)
    at blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:3051
    at blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:1715
    at blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:3103
    at Function.Template._withTemplateInstanceFunc (blaze.js?hash=f33d3dfed63a491d24e3aa07ad66c24b5fe8c761:3744)

MJML version:
NodeJS: 4.6.2
MJML: 3.3.3
I tried all scenarios I found with no luck on any of them, ¿any idea how can I those errors?
Thanks!

Hi @luixal
First i strongly advise you to update your node to a recent one.
I think this is because you have a typo in the string :
<mjml><mj-body><mj-text>Easy and Quick</mj-body></mjml>

Hi @iRyusa , sure about node version, just tried on v8.4.0, same result.
About the typo, that's one kind of error that I should get at the exception, isn't it?
According to mjml-validator doc:

In Javascript, you can provide the level through the options parameters on MJMLRenderer. Ex: new MJMLRenderer(inputMJML, { level: strict }) strict will raise a MJMLValidationError exception. This object has 2 methods:
getErrors returns an array of objects with line, message, tagName as well as a formattedMessage which contains the line, message and tagName concatenated in a sentence.
getMessages returns an array of formattedMessage.
When using soft, no exception will be raised. You can get the errors using the object returned by the render method errors. It is the same object returned by getErrors on strict mode.

Thing is, I know MJML code has errors, I'm expecting the validator to return them.

Well as stated on my previous reply's edit parsing error is a "critical" error, not a validation error.
Validation error are raised when some attributes are invalid for an element, invalid nesting, etc.
Ex: setting a apple attribute on mj-body or directly set an mj-text inside mj-body.

Ah, ok, didn't know that.
IMHO, it would be interesting to get the number of the line that makes the parser crash :)
Thanks for the info!

@iRyusa I agree with @luixal, if the parser crashes you now have to search for a mistake in your markup. Returning the line number should be really nice. Especially on larger templates it's now impossible to debug..

We don't have this information, that's why it throws a generic error.


Does compose support GLTextView?

I want to use GLTextView in my project, does compose support it?

Not directly but this should work via View interop. Closing as not an issue with the samples.


Route53 Sanitize URL's for all requests

replace all /%2F\w+%2F with / for all requests:
aws/aws-sdk-go@072d128
internal id: 176722144

Besides the Go commit linked in the description, here are more recent implementations of this mod:

https://github.com/awslabs/aws-sdk-kotlin/pull/655 (Kotlin SDK)
https://github.com/awslabs/smithy-rs/pull/999 (Rust SDK)

Here's a ticket from a different SDK which sorta discusses the reason for this fix:

https://github.com/awslabs/aws-sdk-rust/issues/344

This PR was already merged in aws-sdk-swift:
https://github.com/awslabs/aws-sdk-swift/pull/521
Closing this issue as done.


[Feature Request] required_content for get_notes()

This is probably a feature request.
I am trying to get the acceptance status for a number of notes (submissions).
I am roughly following the example from the documentation, but on a per-note basis. Another difference to the example is that I would like to retrieve the status, rather than just accepted papers.
So this is my current code:
    decision_notes = [
        note
        for note in client.get_notes(forum=note.forum)
        if "decision" in note.content
    ]

    if decision_notes:
        acceptance_status = decision_notes[0].content["decision"]

This works fine, but seems very slow. For a large number of notes, I would prefer to have something like the content parameter in get_notes() which allows to filter for the presence of a specific field, ignoring the value. For instance a required_content parameter so I could do this:
    decision_notes = [
        note
        for note in client.get_notes(forum=note.forum, required_content="decision")
    ]

This should save a lot of network traffic because the filtering could be done on the server side.
Not sure if this makes sense, and whether it is currently possible though.

If you want to get all the decision notes no matter the value of the decision, you can get all the notes by invitation, like the example says:
all_decision_notes = openreview.tools.iterget_notes(client, invitation = 'MIDL.io/2019/Conference/-/Paper.*/Decision')

if you want to get the decision for a specific note:
client.get_notes(forum=note.forum, invitation='MIDL.io/2019/Conference/-/Paper.*/Decision')

or
client.get_notes(forum=note.forum, invitation='MIDL.io/2019/Conference/-/Paper' + str(note.number) + '/Decision')

@melisabok Great, thanks a lot!
I suppose I can use a more generous wildcard as the forum should be unique, such as:
client.get_notes(forum=note.forum, invitation='.*/Decision')

Is that a correct assumption?
This way, I do not need to track back which invitation a note came from initially.

Using a .* at beginning of the filter can be too expensive because an index is not being used to do the search. We prefer to get the decision by venue. Not all the venues have the same invitation name, this convention has changed over the years, for example: 'acceptance' -> 'decision'.
And there are also venues that don't have this decision note and the decision is stored in the Meta_Review invitation, for example: ICLR 2019.
My advice is to pick one note of each venue and call client.get_notes(forum=[forum_id]). Then inspect the result and check all the available invitations.
We are in the process of standardize the decision and save it in the note itself. We will let you know when it is ready.


Add createList tests

Showing some  :heart:  :heart:  for this awesome project

thanks man, much appreciated!!
Could we get one more for `createList allows attr overrides?
server.loadFactories({
   contact: Factory.extend({name: 'Sam'})
 });

var sams = server.createList('contact', 3);
var links = server.createList('contact', 3, {name: 'Link'});

// assert...

One sec

Done

No, wait

Now yes

woot!


[FEA]Custom Sample Method Request

I want to use custom sample method in training, so it would be great if xgb api could:

provide a param like "obj" or "custom_metric"

OR

provide a param looks like "samples" to receive np.ndarray that carries the exact indices of dtrain.
For example:
np.array([[1, 3, 5, 7, 9], [2, 4, 6, 8, 10], [1, 2, 3, 4, 5]]) provides 3 samples to fit the model.

I personally prefer the second one as some sample methods are too complicated to be abstracted into a simple function.

Thank you for rasing the issue. The simplest way to achieve what you want is to define your custom objective function and set the hessian to 0 for disabled samples.

Hi, I don't understand why set the hessian to 0 for disabled samples works.
Do you mean that I should set sampling_method='gradient_based' and then set g = h = 0 for disabled samples?

Don't set sampling for XGBoost if you were to have your own sampling strategy.

Hi, I don't understand why set the hessian to 0 for disabled samples works.

XGBoost is based on the newton method, 0 hessian for a sample implies that the sample won't contribute to the optimization.


Bump Penny dependencies

Test Plan (Steps to test):

Make sure app still works

Checklist:

[x] Create a Test Plan
[x] Changes Communicated (in commits or above)
[x] Docs Updated
[x] Storybook Updated

@incompl Can you nav to this folder, ensure you're on node 16, and run corepack enable then npm install. I think you're on a diff. version of npm and it's causing the lock file to churn.

You can see it was generated with an older npm version, this is what I get when running npm install on this branch.

You can see it was generated with an older npm version, this is what I get when running npm install on this branch.

@mshick Updated


Absolut paths

Absolut paths for spotify_appkey.key and spotify.processed.h so program can be launched from any directory

Can you make a new pull request (or rebase if you know how) with just the absolute path to the appkey?

I have made a wrapper around libspotify library which is now on a separate project pyspotify-connect.
I have published a rewrite of spotify-connect-web using the library as an import to my fork.


add option for multiple inputs when writing weight summary

Before submitting

[x] Was this discussed/approved via a Github issue? (no need for typos, doc improvements)  yes #537
[x] Did you read the contributor guideline? yes
[ ] Did you make sure to update the docs? no need
[ ] Did you write any new necessary tests? no

What does this PR do?
Fixes #537
PR review
Anyone in the community is free to review the PR once the tests have passed.
If we didn't discuss your PR in Github issues there's a high chance it will not be merged.
Did you have fun?
Make sure you had fun coding 🙃
yes

Maybe this is also the correct PR to work on issue #518 ? For me it wasn't printing the summary either.
However, I'm not sure what the issue could be.Does anybody have some ideas?

The issue there seems specific logging levels, so if you set your logging level to INFO you should see the summary.
BTW, looks like this branch needs a merge/rebase from master (rebase preferred if possible)

@VSJMilewski @Ir1d can we rebase and merge this PR?

@VSJMilewski rebase master, pls...

Sorry @Borda, I've been very busy.

@VSJMilewski it seems that you just merged master with many other commits, please do rebase...
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
or you can consider also cherry-pick from master


Support of DynaForm columnClasses

And some renaming rearding DynaForm nested model

I made a comment regarding else if check (small perf. optimization). Can you look this please? Thanks.


When extracting table from docx the cell paragraph loses its format

Hi, I am trying to extract the content from a cell from a docx. I'm running this func
document = Document('my docx')
tables = document.tables
table = tables[1]
def get_bold_lines_from_cell(cellColumn, cellRow):
#print table.cell(cellRow, cellColumn).text
for paragraph in table.cell(cellRow, cellColumn).paragraphs:
print paragraph._p
for run in paragraph.runs:
if run.bold:
#do stuff
Even tho the paragraph is filled with bold letters, it doesn't recognize any

I expect the bold is being applied by a style rather than directly.

If I run
for table in tables:
	for row in table.rows:
		for cell in row.cells:
			for paragraph in cell.paragraphs:
				for run in paragraph.runs:
					if run.bold:
						print run.text

It does find the .bold format

sounds like you need to narrow down where it's not doing what you expect.

@scanny ,
I am also facing same problem , run.bold not working for some columns .
Here is my code:
for table in WordDoc.tables:
    for i in xrange(1, len(table.rows)):
        for para in table.rows[i].cells[0].paragraphs:
            for run in para.runs:
                if run.bold and run.font.color.rgb == RGBColor(255,0,0):
                    print (run.text)

It does returns the bold text if change cells[0] to cells[1] but i have bold text in both cell 0 and cell 1.
I f you need I can upload the docx file aslo.


Update CODEOWNERS

Description:
As contributor of the components asking to be added as code owner.

Since this is a non code change, add [skipci] to your commit message and Travis won't be triggered 👍  Also, this could have been merged without waiting for tests (that all flaked jeez)


hosted.html - deleting all files, then dropping in new files, leaves bramble in a failed state

the file dropping works file, but I have to hard-reload the tab in order for the live preview to then actually work again.

That's wrong, it should work.  Have you got my commits from earlier today there?  Which browser?  Can you screenshot and show me your console when that happens?

I'll try to get some STR once I'm at a lull in actually writing code again

I'm pretty sure this is fixed, closing.


[Backport r0.11] Beautifier layers doc

Backport f0a8c74f5d6d1023505e3e41ba7bbab2f374814d from #2072

@joel-shor @charlielito @rahulunair @aakashkumarnain @tanzhenyu @failure-to-thrive @andreasmadsen @smokrow @cgarciae @susmit-a
You are owners of some files modified in this pull request.
Would you kindly review the changes whenever you have the time to?
Thank you very much.

Rubber stamp LGTM.


multiple file upload

I have:

            File Upload
            <input type="file" multiple>

            <input class="file-path" type="text">

when I select multiple files, only the last one shows up in the input field.  How to let them all show up?

Merged in 0c4864572fffeb21fe9e7e8350eb10faa5e25a79

I can limit the size of file in MB for example limit the file to 5 mb


Text not appearing in Captcha

I'm having some issues making the text appear in the captcha, running it on my local machine works fine, but running it on our host(railway.app) it doesn't add the text to the image.
We have tried a few different solutions from previous questions, but none of them seemed to solve our issues..
Local (works as expected)

Host (Doesn't add text)

We're running it in docker (on host only):

And we have our dependencies in package:

The code:

Do you mind trying v2.3.1 because maybe the issue is with skia-canvas. skia-canvas has made some breaking changes recently which is affecting the package alot. I m planning to restart my work on v2.4.0 so i can provide the same level of customization using canvas module.
npm i<EMAIL_ADDRESS>
Link to docs for v2: https://captcha-canvas.js.org/v2/index.html

As far as I remember your current configuration should work fine with the v2.3.1.

Changing to v2.3.1 and switching from alpine to bullseye worked out!
Thank you very much 😄


Copr: implement batch_executor/limit

Signed-off-by: Shirly<EMAIL_ADDRESS>
What have you changed? (mandatory)
We have implemented BatchLimitExecutor in this PR.
What are the type of the changes? (mandatory)
The currently defined types are listed below, please pick one of the types for this PR by removing the others:

Improvement (change which is an improvement to an existing feature)

How has this PR been tested? (mandatory)
unit tests.
Does this PR affect documentation (docs) update? (mandatory)
no
Does this PR affect tidb-ansible update? (mandatory)
no
Refer to a related PR or issue link (optional)
Benchmark result if necessary (optional)
Add a few positive/negative examples (optional)

/run-integration-tests

/run-integration-tests

Please update the PR to utilize the execution summary. Thanks! You may refer its usage according to ScanExecutor.

@rleungx @breeswish PTAl

/run-integration-tests


Add session_id and tags property

Summary
Details and comments
Fixes #635

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

7 of 9 (77.78%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.02%) to 64.145%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

qiskit_ibm_runtime/runtime_job.py
7
9
77.78%

Totals

Change from base Build<PHONE_NUMBER>:
0.02%

Covered Lines:
3383

Relevant Lines:
5274

💛  - Coveralls


[BACKEND][AMD] NFC: Fix initialization order.

Fixes reorder-ctor warning.

Thank you Keren for the fast review+merge! 🙏


Unable to connect to cluster with given k3s.yaml file

Hello
Trying to get access to my kubeconfig at the moment, been unsuccessful and am only getting this error while using the config file from /etc/rancher/k3s/k3s.yaml I updated the URI from <IP_ADDRESS>
to my nodes IP and this is the response I receive:
$ kubectl get nodes
Unable to connect to the server: x509: certificate has expired or is not yet valid
Is this intentional?  Is there any documentation on how to obtain the kubeconfig from the k3s server?  I set up the server using essentially the default config as I did not supply my own config.yaml

For a cert that was just created, that message typically means the time and/or timezone on either the server or your client is wrong, so the client thinks the certificate is good starting at a time that is still in the future.

This would be nice to document somewhere potentially

I assume correct timezone must be set on OS level before installation (specifically before certificates generation step)
TZ="Europe/Riga"
sudo ln -snf /usr/share/zoneinfo/$TZ /etc/localtime

or set time manually
$ kubectl get pods
Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2021-04-01T14:43:32+02:00 is before 2021-04-01T15:31:09Z
$ sudo date --set="2021-04-01T15:31:09Z"

relevant issue https://github.com/rancher/rancher/issues/26984


PYTHON-3795 oursql Tests

Sidekick: @a-feld
Overview

Imports oursql tests from internal repo
Adds namespacing to tables

Related Github Issue
PYTHON-3795
Testing
The agent includes a suite of tests which should be used to
verify your changes don't break existing functionality. These tests will run with
Github Actions when a pull request is made. More details on running the tests locally can be found
here,
For most contributions it is strongly recommended to add additional tests which
exercise your changes.

Dropping test suite, package is old and tests haven't failed in a very long time.


rowSpan Property

I needed to add "rowSpan" to my  component and it didn't work. Then I looked over the code and saw that the "colSpan" attribute is being considered and when this is sent to the component all the other props are also sent to the html  component.
This means that if I use [...]	 the "rowSpan" attribute will get ignored but if I use something like [...]	 my "rowSpan" attribute will be passed to the html  component and I will get my desired functionality.
Can you please pass the props to the html  component when there is no "colSpan" involved?
class TdInner extends React.Component {
  render() {
    if (this.props.colSpan) {
      return
    }
    const { headers, children, columnKey } = this.props
    const classes = (this.props.className || '') + ' pivoted'
    return (
       {/*<<=== Here I added the props */}

{headers[columnKey]}

        {children ||

}

    )
  }
}

Hey @dragos-rosca! Thanks for bringing this issue to light. Would you like to contribute a fix via pull request?

Hello, thank you for the opportunity but I think you guys will do a better job.
Like there's a bug in my comment that overrides the "className" property in the  excluding your "pivoted" class.

I created a fork and I will add the code the best I can. See you at pull request!

fixed with #116

Thank you @dragos-rosca!


Adds the WFS query for generating nearby fires to the /fire endpoint

This PR adds the WFS search query that finds all fires within ~70 miles of the selected point and returns the points and polygons inside of two additional JSON keys: fire_points and fire_polygons. To test, try points around the state of Alaska to see the returned data and ensure that the documentation for this returned data is clear.
This also removes an unused endpoint /wildfire that has no purpose remaining available.
Closes #424
Closes #446

This PR also chips away at XREF #137

We actually do want the code to return empty lists here rather than null to match the code that is expecting to be able to iterate through a list-like object. We could modify the fire map code, but I think it doesn't hurt to leave it like it is and return the empty lists.


Build Error in the script MemoryPackSerializerOptions.cs in MemoryPack.Core

Hello I am a newbie in MemoryPack and I try to integrate it in ur gaming project to clone object faster than NewtonSoft and for a NativeAOT environment.
I just downloaded the latest release and when I build MemoryPack.Core I have this error message

Error	CS1513	} expected	\MemoryPack.Core\MemoryPackSerializerOptions.cs	4
Error	CS1022	Type or namespace definition, or end-of-file expected	\MemoryPack.Core\MemoryPackSerializerOptions.cs	21
I really don't see what's missing here.
is there a fix?
EDIT: The installation by Nuggets works fine, but if I want to add the source code to a Nativeaot project it's not building

The file you have shown ( \MemoryPack.Core\MemoryPackSerializerOptions.cs ) does not seem to have any compilation errors.
NOTE:

MemoryPack.Core also contains C# 12 code.
I don't know much about your environment, but at least I think it is available from nuget if your goal is .NET Native AOT compilation.

In any case, since 1.20.0 the distribution of packages has been consolidated to nuget, I don't think they will officially support source code distribution.

Thanks @hadashiA


Only encode EKUs if there are EKUs to be encoded

What this PR does / why we need it:
This fixes an ASN 0. which got added it no extended key usages got requested in the certificate
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #
Fixes https://github.com/jetstack/cert-manager/issues/3260
Special notes for your reviewer:
Release note:

Do not encode EextendedKeyUsage in the CSR is none is needed

/kind bug
/cherrypick release-1.0

Makes sense to me to encode no EKU then.

@wallrj ready for review again!


main image,videos and favicon?

i'm just curious, any chances of providing an API to fetch main image, videos and favicon of the article soon?
ref:
https://github.com/ageitgey/node-unfluff

+1


Added creating and editing contacts via device form

Considering the existence of native forms existing in IOS and Android, I tried to provide some methods for creating and editing contacts through them.

@engylemure thanks for your PR.  Two issues need to be resolved:

The build is failing with Travis CI.
Please submit your PR to the staging branch (not master).

Thanks!

@lukasgit Sorry for the delay.

@engylemure thanks for your PR. Two issues need to be resolved:

The build is failing with Travis CI.
Please submit your PR to the staging branch (not master).

Thanks!

Solved these issues.
Thanks!

@engylemure my apologies for the late response!
Changes were made in PR #84 to migrate this plugin to android v2 embedding. Those changes affected a few lines of your PR code in ContactsServicePlugin.java.
Can you please update your code and let me know when the PR is ready? Thanks!

@engylemure my apologies for the late response!
Changes were made in PR #84 to migrate this plugin to android v2 embedding. Those changes affected a few lines of your PR code in ContactsServicePlugin.java.
Can you please update your code and let me know when the PR is ready? Thanks!

Sure, it is Ready.

Thank you @engylemure !


Allow for a mechanism to build a collection of blocks without having them wrapped within a surface

Is your feature request related to a problem? Please describe.
I'm not sure if there's a way to already do this, but I couldn't find one.
MessageBuilder is good for building the block kit require when using respond or say, but I can't find a way to use Slack Block Builder when using the API methods chat.postMessage or chat.update via Bolt.
The problem is that the Bolt API expects you to pass a collection of blocks to these methods, but MessageBuilder gives me an object that contains a property that is a collection of blocks. For example:
Message()
        .blocks(
            Blocks.Section()
                .text(model.messageTitle),
            Blocks.Section()
                .text(`State: ${state.status}`)
        );

gives me:
{
	"blocks": [
		{
			"text": {
				"type": "mrkdwn",
				"text": "This is block one."
			},
			"type": "section"
		},
		{
			"text": {
				"type": "mrkdwn",
				"text": "State: Running"
			},
			"type": "section"
		}
	]
}

But what the Bolt API requires is this:
const response = await app.client.chat.update({
    token: botToken,
    as_user: true,
    channel: progressMessage.channel,
    ts: progressMessage.message.ts,
    text: "This is an updated message",
    blocks: [
        {
            "text": {
                "type": "mrkdwn",
		"text": "This is block one."
            },
            "type": "section"
        },
        {
            "text": {
                "type": "mrkdwn",
                "text": "State: Running"
            },
            "type": "section"
        }
    ]
});

Describe the solution you'd like
Ideally, what I'd like to do would be to use a new 'top level' builder, that just outputs a collection of blocks. Something like this:
const response = await app.client.chat.update({
    token: botToken,
    as_user: true,
    channel: progressMessage.channel,
    ts: progressMessage.message.ts,
    text: "This is an updated message",
    blocks: Blocks()
        .blocks(
            Blocks.Section()
                .text(model.messageTitle),
            Blocks.Section()
                .text(`State: ${state.status}`)
});

Or an alternative would be to provide the methods to build a collection of blocks within a surface: MessageBuilder.getBlocks().buildToJSON() for example.
Describe alternatives you've considered
The best I can come up with at the moment is to build a MessageBuilder to JSON, and then get the .blocks property from the JSON.
eg JSON.parse(message.buildToJSON()).blocks
Additional context
None

.... and within minutes of posting I've just stumbled upon BlockCollection.
This looks like what I need.


Bitbucket support?

Hi there,
I would love to use GreenKeeper but am currently using BitBucket.  Any chance you would consider adding support for BitBucket anytime soon?  Or is this something you would look to the community to contribute?

Hey,
Last we checked bitbucket did not have all the required API endpoints available. But the community is welcome to try to get it to work!


Add overview for container concept

Add a page introducing the container concept. (preview)
/kind feature

/assign @simplytunde

Slightly related to PR #4502

Slightly related to PR #18335 as well.

Also see issue #18381

@thockin are you free to review this one (Eric Tune is marked busy)?

(I copied the reviewers from the page at https://k8s.io/docs/concepts/containers/)

/lgtm
/approve


add rule for too many test cases in test suite

This is based on the rule in https://code.google.com/p/robotframework/wiki/HowToWriteGoodTestCases#Test_suite_structure
"Should not have too many tests (max 10) in one suite unless they are data-driven."
Example output:
W: 12, 0: Too many test cases (29) in test suite (TooManyTestCases)

I'd like to include this rule, but I want it to be configurable. (see Configurable Rules on the wiki). I'll be glad to make it configurable if you want, or you can do it yourself.
Sorry it took so long for me to respond.

No problem. I'll make the necessary changes.

Updated.
(also I think if you want Travis CI to run on pull requests you need to log into Travis with your github credentials and switch it from "off" to "on" for this project)

Thanks, Guy!

I hope you don't mind, but I edited this rule to point to the Nth test case. For example, if the max is 10 and there are more than 10, the line number should point to test 11 since that's where the problem begins. Does that make sense?

Yeah, that sounds great.


Add ability for Scanner to request an executor

Building on the work done in #549 it would be nice if Scanners could request an executor.  Scanner could have a method like requestScanExecutor(String name).  The requested executor would be made available (via the ScanInfo interface) to the per table ScanDispatcher on the server side, which may or may not honor this request.  The built in SimpleScanDispatcher could have an option to enable honoring these request, but ignore them by default.

This could be a bit more general, with a scanner having a method like the following :
/**
 * Provides information to the server side scan dispatcher and prioritizer that may be used when making decisions.  However those server side classes may ignore these hints.
 */
void setHints(Map<String, String> hints){}


Does this library support incremental registration of Message types?

We have a growing schema repo used by consumers. We have our server-side that processes these messages.
I was wondering if we can register message types to marshaller incrementally as we receive request on the server-side for that particular message type. Any ideas?

That's an interesting use case. The solution with the current version would be to reuse MessageMarshaller.Builder, but this means all messages are bytecode regenerated every time build() is called. It'll have cost, but I wonder how often such updates happen in terms of whether this cost is prohibitive.
A quick reasoning makes me think that MessageMarshaller.toBuilder() could be reasonable, it would create a builder but prepopulate builtParsers with what's already been generated. IIUC, this should basically work - one issue could be if a new message is added that has a dependency on a message with a different version, then build() would probably cause a linkage error - this would happen with just normal Java code too though I guess.
Just to clarify, does your system dynamically add new message classes to the same classloader over time? If so, I guess if there is a compatibility problem this step itself would have an error, and on the flip side if it works, then MessageMarshaller.toBuilder() type of technique should work fine. This does seem to be a very unique use case though, I want to confirm that the cost of reusing the Builder would be prohibitive before adding a new API for it.

Sorry rereading the comment, I think I missed the point. I guess you have a large schema, and instead of precompiling all the bytecode even when much isn't used, you'd like to lazily compile it, probably to improve startup time in common usages. That seems reasonable, let me think a bit about it.

Yes, basically lazy load classes as they arrive on the server-side.

@muhyousufmemon Snapshots have been published with the change
https://github.com/curioswitch/protobuf-jackson/actions/runs/4816447500/jobs/8576108488
Is this something you would be able to try in your app before committing to a release?

@chokoswitch I was able to test. It works as expected. Thanks again :)

@muhyousufmemon Thanks for verifying - 2.1.0 has been released with this change.

Thanks for this addition! Very useful for us too. Had another question, is it possible to register a custom typehandler for a specific message type? I couldn't find a way to do it, and if it is not possible would it be ok to add it?

And hijacking the thread just in case you see this @chokoswitch . Is there a way to make the conversion strict? For instance MessageMarshaller.mergeValue() currently allows unpacking a json int into a string. I would prefer it to throw an exception.
So a json {"val": 1000} is unpacked without an exception into a message ProtoMessage { val string = 1}

Hi @C0mbatwombat - what do you mean exactly by custom typehandler? Do you want to hand-write marshaling logic for particular submessages in a tree?
For storing int to string field, upstream also accepts it, it seems. I've added a test in #16.
This library is meant to be a replacement for upstream that uses Jackson and bytecode generation, so I'd generally like to avoid adding configuration knobs that aren't present upstream. Notably, if upstream were to add the feature later and the knob names differed, it could cause some confusion.
Would you be interested in filing an issue upstream to see if they'd be interested in adding such a mode? If upstream also had it, I'd feel much more comfortable adding it here.

Hi @chokoswitch , thanks a lot for the clear explanation. It makes a lot of sense. The suggestion is indeed about hand-writing marshaling logic. I am pretty sure upstream will never allow custom (de-)serialization, as it breaks wire compatibility and tons of other invariants that they assume. (Within an organization it is very useful to be able to change the json encoding however.)
I suppose it would be quite a big step for you to add something that does not follow upstream. So I suppose I will fork your code and add the small changes locally.
Thanks a lot for the great library!

Thanks @C0mbatwombat - while core marshaling is meant to match upstream, this is a library meant to integrate well with Jackson. After thinking a bit, I realized that your request could be satisfied with optional integration with jackson-databind - basically any marshalers registered for types are consulted from the databind context first before falling back to the normal generated bytecode.
I have started on a PR for that
https://github.com/curioswitch/protobuf-jackson/pull/17/files#diff-59643dec798eeb071947be7922d487414a29851ed6c6c837112cd094192ebc97R60
Would this approach solve your issue? There's no new API needed for this and it's just tighter integration with Jackson than currently provided, which would be a good improvement for this library I think.

Hi @chokoswitch, thanks for the PR! Interesting approach, am I correct in understanding that it doesn't change the core marshaller but changes the entrypoint of (de)serialization to jackson? And that using this approach it is possible to pick a different marshaller? Nice approach! I will test but I think this is indeed an approach that would work for my usecase.
One remaining question: would this approach work with the incremental registration feature that you've committed as part of this issue? Ie. is it possible to add an extra proto message while using the jackson-databind flow?

Did a test, it works! I'll await whether you want to merge/release it. Thanks

@C0mbatwombat Thanks for verifying! 2.2.0 has been released with the new feature.

Thanks!

I got it integrated and it works, thanks!
Not urgent, but I couldn't get merging into a builder to work, either with a class definition or an existing object. I suppose builder-specific (de-)serializers would have to be added and registered in MessageMarshallerModule? I got it to work using a hack, but it's not as efficient of course.

Hi @C0mbatwombat - could you provide an example of the code that isn't working. Ideally, a failing unit test we can add would be best. Thanks!

@C0mbatwombat Ah I believe I understand the example. Does it mean we need to tweak the module settings
https://github.com/curioswitch/protobuf-jackson/blob/main/src/main/java/org/curioswitch/common/protobuf/json/MessageMarshallerModule.java#L56
to add something like
addDeserializer(
          (Class) prototype.newBuilderForType().getClass(), new MessageBuilderDeserializer<>(prototype, marshaller));

? If you want to try making the change and it works, happy to review a PR, otherwise it will take me a bit to get to it since a fairly busy for the next week or two.

Yes, correct! I'm also quite busy these days, if I find time I will do a PR. Otherwise it can wait, not urgent for me.


symbol(s) not found for architecture arm64

Using CI/CD using Microsoft azure build. Im using Carthage. using alamofire version 4.8.1. it appears I'm not able to get it work. having issue below. if I compile using Xcode, there is no issue.
2019-02-04T13:51:47.4367760Z       "__T0SSN", referenced from:
2019-02-04T13:51:47.4367810Z           __T09Alamofire8TimelineV11descriptionSSvg in 01.o
2019-02-04T13:51:47.4367850Z           __T09Alamofire8TimelineV16debugDescriptionSSvg in 01.o
2019-02-04T13:51:47.4367880Z           _hidden#614 in 02.o
2019-02-04T13:51:47.4367930Z           _hidden#640 in 02.o
2019-02-04T13:51:47.4367970Z           _hidden#643 in 02.o
2019-02-04T13:51:47.4368010Z           _hidden#644 in 02.o
2019-02-04T13:51:47.4368050Z           _hidden#1183 in 03.o
2019-02-04T13:51:47.4368090Z           ...
2019-02-04T13:51:47.4368130Z     ld: symbol(s) not found for architecture arm64
2019-02-04T13:51:47.4368170Z     Exited with 1
2019-02-04T13:51:47.4368210Z
2019-02-04T13:51:47.4368250Z
2019-02-04T13:51:47.4368290Z     error: Failed to compile bundle: /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/AlamofirexQvJfI/Alamofire.arm64.xar
2019-02-04T13:51:47.4368520Z
2019-02-04T13:51:47.4368550Z
2019-02-04T13:51:47.4368580Z Stderr:

I mean if I compile using Xcode locally. I have no issue

There's not really much we can do here. We don't do anything special for our build process, so I suggest you look into the build environment of Azure CI and see what differences you may have locally. Perhaps one or the other is caching older versions whose symbols don't match up? Or perhaps there are other errors before the symbol issues show up? Or perhaps you need to clean your Azure environment?
In any event, this is probably a better question for Stack Overflow or Azure CI support.


Fix build when linking against musl

musl doesn't define PTHREAD_MUTEX_RECURSIVE, so it has to be done manually.
From my testing, this seems to work when using both GCC + glibc and GCC + musl (on Fedora 31 and Alpine respectively).

musl doesn't define this macro, so it has to be done manually. Since there doesn't seem to be a macro to detect whether musl is used, we should always define the macro on Linux.

I think you can use !defined(__GLIBC__): https://stackoverflow.com/questions/4266354/how-to-tell-if-glibc-is-used
It might still let through some non-GNU C libraries which define __GLIBC__ for compatibility, but at least musl doesn't seem to: http://git.musl-libc.org/cgit/musl/tree/include/features.h

Bump :slightly_smiling_face:

Bump (again) :slightly_smiling_face:
cc @kmammou

Any chance to see this reviewed/merged? We use it downstream in Godot, would be good to have it upstream for others.

Any chance to see this reviewed/merged? We use it downstream in Godot, would be good to have it upstream for others.


How can we use it with external js and normal vue instance?

Hi there, I am running vue.js like jquery in html with vue instance. In wordpress widget, i cannot make it like a pure vue project as I have to use html php and vue all together. So how can I use this as a normal external js file and use the component? Thank you

See the usage part. https://github.com/jerrybendy/vue-touch-events#usage
<script src="path/to/vue.js"></script>
<script src="path/to/vue-touch-events.js"></script>

The directives will automatically installed and used.

Where to get the vue-touch-events.js file? Any cdn?

Download the index.js in this repo. (https://github.com/jerrybendy/vue-touch-events/blob/master/index.js) and put it in your web directory or CDN.


Enable and use GitHub Alert syntax for admonitions

This allows admonitions/callouts/alerts to be rendered properly both in GitHub and mkdocs. On the downside, GitHub syntax is less flexible than mkdocs, so we can't have the admonitions be rendered inline end any more.
Because of this we only use the GitHub syntax for the README, as it is more important that the README is rendered correctly in GitHub than having it look a bit nicer in mkdocs.

Before:

After:

I guess it got borked when I switched the merge queue from a "branch protection" to a "ruleset"