Make Alert element with position fixed to stay on the page and z-inde…

…x high to display on top, and top 3.5 em to account for normal nav bar.  Possibly should ask curators about replacing the nav bar content with the not logged in bar instead and put the okta sign in there instead ?

Thanks @sweng66 .  z-index is a css property that makes that element be on top of other elements, if their position would render them in the same place.  The higher number goes on top, so 9999 is an arbitrarily high number.

Oh cool. @azurebrd !!


potential bug related to generics

Bug Report
🔎 Search Terms
generics
pipe
functional programming
🕗 Version & Regression Information
5.2.0-dev

This is the behavior in every version I tried

⏯ Playground Link
Playground link with relevant code
💻 Code
export type Func = (..._: any[]) => unknown;

export type Unary<Input, Output> = (_: Input) => Output;

export type Tail<L extends unknown[]> = L extends
  readonly [unknown, ...infer LTail] ? LTail
  : L;

type UnaryFn<A, R> = (a: A) => R;
type Arg<F> = F extends UnaryFn<infer A, unknown> ? A : never;
type Res<F> = F extends UnaryFn<any, infer R> ? R : never;

type ValidCompose<F1, F2> = Res<F1> extends (Arg<F2> | Promise<Arg<F2>>) ? F1
  : (arg: Arg<F1>) => Arg<F2>;

type ValidPipe<FS> = FS extends [infer F1, infer F2, ...infer Rest]
  ? [ValidCompose<F1, F2>, ...ValidPipe<[F2, ...Rest]>]
  : FS;

export const pipe = <Fs extends Func[]>(  ...fs: ValidPipe<Fs>) => {}

(<T, Fn extends (x: T) => number>(f: Fn) => {
  const g = (x: T) => x;
  const h = (_: T) => 1;
  pipe(g, f);  // This gives a typing error.
  pipe(g, h);  // This works fine.
});

🙁 Actual behavior
The first pipe invocation results in a typing error.
🙂 Expected behavior
None should have an error, because the generic typing ensures everything is in order.

This seems correct to me? Given the type arguments, there's not a way to know which branch of ValidCompose will be chosen.

Then why does it suddenly work if you switch the definitions to:
type Arg<F extends Func> = Parameters<F>[0];
type Res<F> = F extends UnaryFn<any, infer R> ? R : never;

type ValidCompose<F1 extends Func, F2 extends Func> = Res<F1> extends
  (Arg<F2> | Promise<Arg<F2>>) ? F1
  : (...arg: Parameters<F1>) => Arg<F2>;

type ValidPipe<FS extends Func[]> = FS extends
  [infer F1 extends Func, infer F2 extends Func, ...infer Rest extends Func[]]
  ? [ValidCompose<F1, F2>, ...ValidPipe<[F2, ...Rest]>]
  : FS;


Add errors widget

This component is used to place the errors anywhere on the form.
The way to use it is something like this:
<GiftedForm>
  <GiftedForm.ErrorsWidget />
</GiftedForm>

thank you @juankiz


Variation in the benchmark

Seems there is some variation in the numbers of few datasets/models  after re-running the benchmark, might be due to AMP. It happens on few datasets on zero-shot classification, diabetic retinopathy being the worse. Retrieval is fine.
See #56, where it was first detected.

It could be that linear probing actually trains a classification head and then evaluates. If the training is on GPU and with pytorch, it will be non deterministic due to cudnn which is a well known issue


How to remove the 4th generation minimum requirement for CPU ?

Without buying new hardware, for testing purposes, how to test charmed-aether-sd-core with an INTEL i7 CPU before the 4th generation ?
A solution could it be to use Intel® Software Development Emulator ?
https://www.intel.com/content/www/us/en/developer/articles/tool/software-development-emulator.html

Hello @ohault,
Thank you for reaching out.
The dependency on 4th gen intel CPU's comes from Berkeley Extensible Software Switch (BESS) which is used inside of the User Plane Function to route packets.
We could remove this dependency by either:

Using a different UPF (ex. eUPF)
Identifying the areas in BESS that depend on those instructions and finding out implementing alternatives

Haswell has been out since 2013 now so removing this dependency is not a high priority.
Reference

https://github.com/canonical/sdcore-upf-bess-rock/blob/main/rockcraft.yaml


Rebase to upstream's version of Kubernetes support.

Uses Apache's version of Kubernetes support instead of the fork.
Done via the following commands:
git remote add apache git@github.com:apache/spark.git
git fetch apache
git checkout apache/master -- resource-managers/kubernetes
git checkout apache/master -- core/src/main/scala/org/apache/spark/deploy/SparkSubmit.scala
git checkout apache/master -- core/src/main/scala/org/apache/spark/deploy/SparkSubmitArguments.scala
git checkout apache/master core/src/test/scala/org/apache/spark/deploy/SparkSubmitSuite.scala
git checkout apache/master -- dev/make-distribution.sh
git commit

Verification can generally be done by seeing that this outputs empty: git diff apache/master -- resource-managers/kubernetes.

@mccheah you will struggle to make build pass on circle 1. Need to migrate to 2.0 before next tag

Do we not care about dynamic allocation changes?

Do we not care about dynamic allocation changes?

This should be fine.

@robert3005 @dansanduleac can either of you review / sign off on this?

Can you rebase so we know if the tests are passing?

This is rebased, I merged from master for both this and the other PR.

Looking at the test output we only break on the Python and Scala tests that have been flaky more generally.

@mccheah sorry for delay, wanted to get a release out with circle 2.0 build. We should get the test passing and then merge

Looks like the build passed. Good to merge?

@mccheah there are still changes in make-distribution.sh - we diverged there to speed builds up and be maven compatible. Once you fix that good to merge

This should be ready, I checked out our master's make-distribution.sh. We can merge but not cut a release until we get https://github.com/palantir/spark/pull/327 into master too.
Either way, are we good to go here?

Yes, all good
On Thu, 29 Mar 2018 at 23:33, mccheah<EMAIL_ADDRESS>wrote:

This should be ready, I checked out our master's make-distribution.sh. We
can merge but not cut a release until we get #327
https://github.com/palantir/spark/pull/327 into master too.
Either way, are we good to go here?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/palantir/spark/pull/324#issuecomment-377392914, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAfQVMB3ChsYiJ7x9jGC5Pcx_p0Ew3J6ks5tjWFEgaJpZM4SfvqG
.


FSNR

Use the preview tab to see the example given below. Edit the relevant information and preview the changes before submitting. You may delete these instructions.

Key
Value

ID
FSNR

Source
Vaaran Bhai Gurdas Ji

Page
28

Line
gur isKI dw sMjmo; fir infru infr muc frxw [

Correction
THIS ≠ THAT

PROOF (EDITION)
Image:

Correction:
gur isKI ≠ gurisKI
Proof:
Vaaran Bhai Gurdaas Ji | November 2011 | Shamsher Singh Ashok | SGPC, Sri Amritsar
Image:


Enable transport option on a control settings

Per this comments thread, this update enables the transport option on a control setting.
I prefer to write my own js to handle the dom updates, so I don't know how well it integrates with includes/functions/transport.php.

Hey there! I was in the middle of a rewrite and made the plugin a bit more OOP... this has been merged on https://github.com/presscodes/kirki/commit/2cf31494f7de38f54f4cc8031ff6a06ab55f5c35


404 error in gallery

Your link https://mxis.ch/gallery returns a 404 error.

I already fixed it a few days back and just saw your comment now, but thanks for pointing it out!


Drop {% raw %} block in manage-compute-resources-container

This was breaking rendering the end of the page.

/approve
/lgtm


added ReportTermUse

Ready for review ( first time PR for a public project ) :-)

Hi @kasperbolarsen, thank you 👏 for your contribution - it is highly appreciated. This should be live shortly 😊
I flattened the preview image only as the perspective angle didn't render well in the cards. Hope that is ok. Other minor tweaks just to provide that help for those unfamiliar with PnP PowerShell.
Great sample, Thank you!


feat: sweep mixdepths

Resolves #133.
⚠ I think eventually we should move sending/sweeping functionality towards the main page and make sweeping accounts/mixdepths/pockets more prominent since it is one of distinguishing features of Joinmarket.
For now this adds sweeping functionality to the current send page.
The most tricky part was how to communicate locked or frozen UTXOs (which will not be swept). When sweeping we now show the user the total balance of all UTXOs in a mixdepth (including frozen and locked ones) and in addition to that alert him that at least the sum of all frozen or locked UTXOs will not be sent.
I decided against doing the calculation total_balance - frozen_balance - locked_balance and show just that amount since it didn't feel right to replicate this business logic on the client (what if the backend behavior changes?). Therefore, I'm only showing which part of the total balance definitely won't be sent. This is a bit more conservative and cumbersome for the user but also less error prone potentially.
Let me know what you think about this and if I've been to careful here.
📸

Nice addition, thanks!
If we know that some coins for sure are locked or frozen, then I think their value should already be subtracted from the amount textbox.
Underneath can be a warning with maybe less sats will be sent, some coins might be locked or frozen.
[maybe I misunderstood the problem]
If senders will announce to the merchant the amount of the payment, then they would say what is shown in the textbox. So making the calculation accurate would be the preferred solution.

Nice addition, thanks!

:orange_heart: :rocket:

If we know that some coins for sure are locked or frozen, then I think their value should already be subtracted from the amount textbox.

That'd be the preferred way of course, however I guess @dnlggr wanted to avoid exactly that for reasons stated in the description. Linking this issue here: Spendable balance via api joinmarket-clientserver#1167

[maybe I misunderstood the problem]
If senders will announce to the merchant the amount of the payment, then they would say what is shown in the textbox. So making the calculation accurate would be the preferred solution.

I was probably a bit imprecise in my description, my that's my fault! All of this discussion refers to UI only. Independendtly from what we show in the amount field in case of a sweep, what we actually send to the Joinmarket backend is amount: 0. This then makes Joinmarket gather all UTXOs that can be sent (not frozen and not locked) and from those calculate the actual amount to send. Does that explanation make more sense?
I wasn't sure if I should replicate that calculation on the client side but reading the issue @theborakompanioni linked it seems like it should be fairly safe to do so.

Thank you.
Could we send this call to joinmarket when the user presses the sweep button, but in a way that the actual signing is only initiated when the user confirms the payment?

Could we send this call to joinmarket when the user presses the sweep button, but in a way that the actual signing is only initiated when the user confirms the payment?

I don't think that's possible at the moment. But I see where you're going at I think. It's weird showing the user some amount that we calculate locally when the backend later does it's own computation before sending (even though when the outcome should theoretically be the same).
That's basically the reason for me not doing the calculation of the actually spendable amount on the UI side but keeping it more vague and just telling the user "You have X balance in this account from which Y are definitely no spendable". Again, not sure if this is the perfect way of doing it. Might be too cautious—but maybe it's better to be cautious for these things. 🤷♂

Could we send this call to joinmarket when the user presses the sweep button, but in a way that the actual signing is only initiated when the user confirms the payment?

That would probably be the best of all cases. :+1:

That's basically the reason for me not doing the calculation of the actually spendable amount on the UI side but keeping it more vague and just telling the user "You have X balance in this account from which Y are definitely no spendable". Again, not sure if this is the perfect way of doing it. Might be too cautious—but maybe it's better to be cautious for these things. :man_shrugging:

Do you think the current approach is acceptable as a first version @MaxHillebrand ?

Current version is good enough for what we can do now.
I would still change the textbox amount to exclude the known frozen coins, but keep the notification as is, so to show how that value is calculated and what total mix depth value is.

I would still change the textbox amount to exclude the known frozen coins, but keep the notification as is, so to show how that value is calculated and what total mix depth value is.

Thoughts on a calculation breakdown like this? ☝ (Exact text TBD).

That looks good - but maybe a lot of clutter... how about you make it an optional drop down, or tooltip or something?

Good question. Reloading seems a bit excessive but on the other hand, if someone does multiple payments while staying on the send page without reloading, data would be wrong. So we probably have to do it 🤔

I played around for a bit but I couldn't really find a good solution. An instant reload after send is super confusing since the page disapears briefly. Feels like something with the send went wrong. Ok if I track this as an improvement and tackle separately before the next release ideally?

Tracked https://github.com/joinmarket-webui/joinmarket-webui/issues/187. Hope this is ok @theborakompanioni. Let me know.

Also tacked https://github.com/joinmarket-webui/joinmarket-webui/issues/188 for tests.

The Sweet button with the black background is taking over the visual hierarchy, it's the first thing my eyes are drawn to - even though it's not the most important element on the screen. May want to remove the background and use have the icon and label (or a white background).

The "Sweep" button with the black background is taking over the visual hierarchy, it's the first thing my eyes are drawn to - even though it's not the most important element on the screen. May want to remove the background and use have the icon and label (or a white background).

Do you think it is acceptable to use the existing buttons (changes background color on hover) for this? Or is it still too distracting? It is the only button rendered inside an input element at the moment - it would also make sense to define a custom style (e.g. soften the border color to match the input element in "light" mode).
📸

@theborakompanioni that works.
The JoinMarket Figma file here has a "free" style for buttons that can be easily applied (in addition to filled and outline). Maybe this could become a general style? Might come in handy in other places as well.

The JoinMarket Figma file here has a "free" style for buttons that can be easily applied (in addition to filled and outline). Maybe this could become a general style? Might come in handy in other places as well.

Nice, yeah. Integrating a "free" link style button without underlined text looks good. Currently, a slightly adapted stylesheet from react-bootstrap (see the buttons page) is used, which is a little buggy here and there.
I will merge this for now as it can be revisited in #178 and #188

is this helping?


Upgrade http 1.0.0 (w/o reqwest)

Blocking on https://github.com/yanorei32/http-request-duplicator/issues/43

Stuck on:

https://github.com/seanmonstar/reqwest/issues/2039#issuecomment-1949287114
https://github.com/quinn-rs/quinn/pull/1715


Test SMTP connection when claiming from pool

I'm using simple-java-mail 6.0.3 and wondering if there is a way to configure the mailer to check connectivity when claiming. I've found it's possible that broken connections in the pool are re-used when setting MailerGenericBuilder.withConnectionPoolExpireAfterMillis to a longer expiration time
Looking at the implementation I found that Allocator.allocateForReuse seems to be the appropriate place for this check. However the concrete TransportAllocator doesn't override this method -- would something like the following be reasonable?
@Overload
public Transport allocateForReuse(Transport transport) {
   ...
   try {
      if (transport.isConnected()) {
         transport.connect();
      }

      return transport;
   }
   ...
}

See https://github.com/eclipse-ee4j/mail/blob/1.6.3/mail/src/main/java/com/sun/mail/smtp/SMTPTransport.java#L1419 for SMTPTransport.isConnected

Interesting addition, but I'm not sure the code would there since Simple Java Mail marks a claimed Transport resource as faulty in case of any exception and so it would never allocate for reuse.
Unless that mechanism is broken...

In my testing after it’s claimed and an exception is encountered during
use, the resource isn’t used again. So that’s working fine. The test I’m
proposing is after claim and before usage
Hopefully that makes sense. Really appreciated your quick reply!!
On Wed, Feb 26, 2020 at 6:45 PM Benny Bottema<EMAIL_ADDRESS>wrote:

Interesting addition, but I'm not sure the code would there since Simple
Java Mail marks a claimed Transport resource as faulty in case of any
exception and so it would never allocate for reuse.
Unless that mechanism is broken...
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/bbottema/simple-java-mail/issues/250?email_source=notifications&email_token=ACB7ILWH6LN6XZSWCY2WA43RE4SOHA5CNFSM4K4RG5T2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOENCWM4Q#issuecomment-591750770,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACB7ILRQXNRZYCU5TTIAJP3RE4SOHANCNFSM4K4RG5TQ
.

Hmm, makes sense. I'd need to look into the performance overhead first though of a connection test.
If it is negligent, then no worries. Otherwise I'd like to introduce a cool down property so that it only rechecks the connection after a user defined threshold (so during bursts of emails it won't check the connection each reuse).

The performance hit can be low when the NOOP command is used: it is just one extra command added to all the other commands required to send an email.
The benefit is that the command will fail when a connection was returned to the pool in a broken state (e.g. halfway a DATA sending operation).
The downside is that the NOOP command has issues (probably - I cannot verify this).
From the documentation at https://javaee.github.io/javamail/docs/api/com/sun/mail/smtp/package-summary.html :
mail.smtp.userset: If set to true, use the RSET command instead of the NOOP command in the isConnected method. In some cases sendmail will respond slowly after many NOOP commands; use of RSET avoids this sendmail issue. Defaults to false.
mail.smtp.noop.strict: If set to true (the default), insist on a 250 response code from the NOOP command to indicate success. The NOOP command is used by the isConnected method to determine if the connection is still alive. Some older servers return the wrong response code on success, some servers don't implement the NOOP command at all and so always return a failure code. Set this property to false to handle servers that are broken in this way. Normally, when a server times out a connection, it will send a 421 response code, which the client will see as the response to the next command it issues. Some servers send the wrong failure response code when timing out a connection. Do not set this property to false when dealing with servers that are broken in this way.
If you know the email server will respond properly to a NOOP command, a method like the one below can be used to validate a connection before "checkout of the pool":
    /**
     * Returns false if the transport connection is invalid and closed by this method,
     * returns true if the given transport connection is valid.
     */
    boolean validateTransportConnection(SMTPTransport transport) {

        boolean valid = false;
        try {
            /*
             * isConnected uses a "NOOP" command and expects a "250" return status.
             * If it fails, isConnected will close the connection.
             */
            valid = transport.isConnected();
            if (valid) {
                log.debug("Validated a SMTP transport connection for {}.", getDestinationName());
            } else {
                log.info("Closed an invalid SMTP transport connection for {}.", getDestinationName());
            }
        } catch (Exception e) {
            // Technically, a catch is not required since isConnected does not throw an exception.
            // But just to be on the safe side, catch any unexpected runtime error.
            log.info("SMTP transport connection no longer valid for {}: {}", getDestinationName(), e.toString());
            closeTransport(transport);
        }
        return valid;
    }

It's a little confusing. Three things:
1.

The benefit is that the command will fail when a connection was returned to the pool in a broken state (e.g. halfway a DATA sending operation).

So this should not be possible. A transport that broke down would be marked faulty when returning to the pool, so it will be destroyed.
If I initially understood you correctly, your use case is about connections that were returned just fine (or simply kept warm but never used before) and the connection breaks down while idle in the connection pool. Then when claiming (allocating), the connection should be checked just to be sure.
2.

The downside is that the NOOP command has issues
(..)

I find this a little difficult to unify into a single simple api. I would like to solve this for my users on higher an abstraction level, but the whole 'if the server supports it' makes it confusing.
I would like to offer my users something like this:
mailerBuilder
   .withConnectionPoolDefensiveClaimingEnabled() // with mail.smtp.noop.strict
   .withConnectionPoolDefensiveClaimingLegacyMode() // turn off mail.smtp.noop.strict

Or something like that.
3.
Regarding mail.smtp.userset / mail.smtp.noop.strict, what would the solution be in pseudo code? I haven't had time to explore those properties yet, so I wonder what it would look like. Obviously I wouldn't want those properties to be active during actual connection test / email sending (the regular Mailer api), or otherwise I'm contaminating the Session object with properties meant for defensive claiming from the connection pool.

Recently, I've released a version that reconnects if the connection was lost in the mean time. Would that solve your problem?

Closing due to lack of response. Assuming the change covers the use case reported here.


Navbar doesn't show active page

The navbar doesn't show what page is active of the three

Woking on it.

@theblindprophet You commented just as I were completing it, sorry! :(


add successive delay option to crouton configuration

It would be a great if we could have the option of adding a delay to croutons such that successive croutons will each have have a short delay after animating out before the next one shows. Currently successive croutons show immediately after the current one animates out.

See README for further info.


formatting error created in wrapper and using its cached_trace

this fixes problems with node v0.11 & v0.12

forgot to recompile js file


PR: Set selected OpenGL implementation for QtQuick too

Fixes #7447.
This also adds GLES to the list of available OpenGL implementations users can select from.

Hello @ccordoba12! Thanks for submitting the PR.

There are no PEP8 issues in the file setup.py !

There are no PEP8 issues in the file spyder/app/cli_options.py !

In the file spyder/app/mainwindow.py, following                are the PEP8 issues :

Line 222:2: E901 IndentationError: unindent does not match any outer indentation level

In the file spyder/app/tests/test_mainwindow.py, following                are the PEP8 issues :

Line 227:80: E501 line too long (104 > 79 characters)

There are no PEP8 issues in the file spyder/plugins/configdialog.py !

The failure in Travis was fixed in PR #7860.


Retrieve all configurable config/gin parameters.

Are all the parameters in the gin files under infinigen_examples/configs/scene_types currently supported by Infinigen, and can the effects shown in Infinigen's official promotional video be achieved by adjusting these parameters? I hope to figure out how many customizable options there are in total.

Hello,
Unfortunately there is no single easily accessible list of all the customization options present in infinigen. We are working on standardizing the random parameter format into something that is uniform across all assets, but at the moment the only way to know for sure is to go into implementations and count them. This is what we did for our parameter count in the original CVPR paper, which does provide a somewhat exhaustive list of the parameters available at that time, but it is now out of date (the codebase is roughly twice as large).
The majority of videos in the intro video are directly taken from the result of running manage_jobs with monocular_video. the exceptions I can think of are:

any videos with fluid/fire sims came from a separate run using the GeneratingFluidSimulations.md docs
for scenes with effects designed only for the video (stopping time, dissolving the whole scene, etc) we some extra specific code to randomly generate these, but they are achievable with small amounts of additional python/geometrynodes.
the videos towards the end with asset parameters being adjusted are generated by stitching together many runs of infinigen_examples/generate_asset_demo.py with different parameters each time.

Let me know if you have further questions. I wish I could provide a more concrete number, as I think measuring the overall complexity would be useful. Although, it is also worth noting that infinigen also contains millions and millions more random numbers than just these user interpretable ones - besides the user interpretable values like "tree branching frequency" and "bark noise magnitude" there is also millions like "exact angle of every leaf" and "exact displacement of every vertex" or "how did the light bounce during raytracing".

Thank you very much for your patient reply; it has been a huge help to me! Additionally, I would like to ask if InfiniGen supports importing content from an existing 3D material library.

Yes, importing existing materials is not hard at all, you can apply them to infinigen objects the same as you would to any other blender object.

I mean to ask if it's possible to call the material library directly within InfiniGen when generating scenes (which might require completing the corresponding asset class code), rather than generating a .blend file and then having modelers add it manually. Can this be achieved?

For example, I have a batch of FBX files that contain motion information. I hope to implement character movement in the rendered scene.

Hello, just wonder are you able to figure this out, or have any progress with this?

The million random numbers are the non-user-interpretable randomness, IE per vertex random displacement or per ray bounce randomness. These are undocumentable and uncontrollable although their seed can be recorded.
I do intend to create documentation and apis for the named controllable parameters but have no specific timeline as it is a large undertaking

Hello @Enderfga, just wonder are you able to figure this out, or have any progress with this?
@araistrick Since you mentioned there are "millions" of numbers, will you plan to release an official doc for explaining those interpretable options/parameters in a near future?

you can try 'gin.operative_config_str()'

This will get you what is exposed to gin, which is a start but far from everything.
In practice the majority of parameters (named random variables) are only accessible via python kwargs or dicts or even editing python.
I intend to unify the interface and expose these but until then there is partial access via gin

I see, thank you both for sharing the info! A quick follow-up for @araistrick's comment, are those major random variables also user-interpretable or they are not? I believe it would make Infinigen more accessible with the official doc.
@Enderfga Actually, I was wondering about your previous question about implementing character movement in the rendered scene. Do you perhaps have any luck with that?

For example, I have a batch of FBX files that contain motion information. I hope to implement character movement in the rendered scene.


Fix workbasket serializer and UI

Format the workbasket list UI similarly to the prototype
Fix the workbasket serializer to show the transaction ID if present and handle setting the approver

Codecov Report

Merging #23 into master will increase coverage by 0.05%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #23      +/-   ##
==========================================
+ Coverage   76.92%   76.97%   +0.05%
==========================================
  Files          33       33
  Lines         819      821       +2
  Branches       26       26
==========================================
+ Hits          630      632       +2
  Misses        178      178
  Partials       11       11

Impacted Files
Coverage Δ

workbaskets/serializers.py
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update ac2ea3f...abb1f5c. Read the comment docs.


how to delete JExcel tab from worksheet?

This is what I am trying, my JExcel Version is 5.
this.worksheet.nativeElement.jexcel.splice(sheetIndex-1, 1);
jexcel(this.worksheet.nativeElement.jexcel)

Can you upgrade JExcel to v7? The support for tabs is much better, and the migration should be very straight forward.

Property
Description

createWorksheet(object)
Create a new table worksheet based on a given configuration.createWorksheet(configuration: object)

getWorksheet(object)
Get the worksheet position based on a table instance.getWorksheet(instance: object) => number

openWorksheet(number)
Set worksheet as active by worksheetNumber starting in zero.openWorksheet(worksheetNumber: number)

renameWorksheet(number, string)
Change a worksheet title.renameWorksheet(worksheetNumber: number, worksheetName: string)

deleteWorksheet(number)
Delete worksheet.deleteWorksheet(worksheetNumber: number)

https://jexcel.net/v7/examples/worksheets

If you further questions about this one you can send us a message at<EMAIL_ADDRESS>


Explain GPP estimation with towers

How does the flux tower infer measure or estimate GPP?

In ref #35


Fix check HAS_ENTITLEMENTS

Some app create file entitlements successfully but the entitlements file has no content so restore entitlements fails.

can confirm this would fix the issue. ty!


phpstan.paths is being applied to phpstan.binPath since v3.2.0

I have a script in dev/bin/phpstan that runs phpstan inside of a docker container. This together with phpstan.paths has worked great up until v3.2.0. Now the path mapping is being applied to binPath which results in the bin not being found.
When this happened there was no immediately clear error message. I first noticed the issue after I was confused about why the problems tab was empty even though I had a clear type mismatch in my code.

Hmm I'm not too sure what the best course of action is here. I think it is the "right" way to go for it to be pathmapped. I'd assume that binPath points to the PHPStan binary itself in most workspaces, in which case path mapping should be enabled. A couple of ways to fix this for your case:

You can use the binCommand setting instead. This describes the command to be used instead of a file, and is meant specifically for docker-like cases.
You can use the PHPStan: Launch setup command to set up and test your configuration specifically for docker. Then you don't need to refer to a custom script anymore and can use it the "native" way. (unless that script contains some special args of course, which you could add to binCommand or args but I can imagine if you want to keep it in your script).

I cleared all of my settings for the extension and then ran PHPStan: Launch setup and now it's all working again.


cannot fork, out of memory when compiling

I was able to get this to compile and run, and then it stopped compiling and gave me the following error.
Previous output:
Hello world! The time is 2017-06-29 22:43:48 +0000HTTP::Headers{"HOST" => "<IP_ADDRESS>:8081"}#<HTTP::Request:0x556357bc8900>

Error:
crystal# crystal build main.cr
Unhandled exception in spawn:
fork: Cannot allocate memory (Errno)
0x55b5be: ??? at ??
0x11184c5: ??? at ??
0x1514ea8: ??? at ??
0x55e178: ??? at ??
0x0: ??? at ??
Unhandled exception in spawn:
fork: Cannot allocate memory (Errno)
0x55b5be: ??? at ??
0x11184c5: ??? at ??
0x1516fc8: ??? at ??
0x55e178: ??? at ??
0x0: ??? at ??

Source:
require "http/server"

server = HTTP::Server.new("<IP_ADDRESS>", 8080) do |context|
  context.response.content_type = "text/plain"
  context.response.print "Hello world! The time is #{Time.now}"

  context.response.print context.request.headers

  context.response.print context.request
end

puts "Listening on http://<IP_ADDRESS>:8080"
server.listen

Thanks! Great work!
Crystal 0.22.0 [3c71228] (2017-04-20) LLVM 3.5.0

Out of curiosity:

Does this work with the latest version?
What's the output of free -h before and after compiling?

Aside this issue:

LLVM 3.5 is buggy anyway (https://github.com/crystal-lang/crystal/issues/4104)
Crystal 0.23 just released.

I'll check this out now! Thanks guys :)

@kirbyfan64
# free -h
              total        used        free      shared  buff/cache   available
Mem:           484M         97M        222M        3.2M        164M        369M
Swap:            0B          0B          0B

Whoops! just happened, but worse this time.
Unhandled exception in spawn:
fork: Cannot allocate memory (Errno)
0x5a9495: ??? at ??
0x1163325: ??? at ??
0x1555225: ??? at ??
0x5acd28: ??? at ??
0x0: ??? at ??
Unhandled exception in spawn:
fork: Cannot allocate memory (Errno)
0x5a9495: ??? at ??
0x1163325: ??? at ??
0x1555225: ??? at ??
0x5acd28: ??? at ??
0x0: ??? at ??
Unhandled exception in spawn:
fork: Cannot allocate memory (Errno)
0x5a9495: ??? at ??
0x1163325: ??? at ??
0x1555225: ??? at ??
0x5acd28: ??? at ??
0x0: ??? at ??
Unhandled exception in spawn:
fork: Cannot allocate memory (Errno)
0x5a9495: ??? at ??
0x1163325: ??? at ??
0x1555225: ??? at ??
0x5acd28: ??? at ??
0x0: ??? at ??
Unhandled exception in spawn:
fork: Cannot allocate memory (Errno)
0x5a9495: ??? at ??
0x1163325: ??? at ??
0x1555225: ??? at ??
0x5acd28: ??? at ??
0x0: ??? at ??
Unhandled exception in spawn:
fork: Cannot allocate memory (Errno)
0x5a9495: ??? at ??
0x1163325: ??? at ??
0x1555225: ??? at ??
0x5acd28: ??? at ??
0x0: ??? at ??
Unhandled exception in spawn:
fork: Cannot allocate memory (Errno)
0x5a9495: ??? at ??
0x1163325: ??? at ??
0x1555225: ??? at ??
0x5acd28: ??? at ??
0x0: ??? at ??
Unhandled exception in spawn:
fork: Cannot allocate memory (Errno)
0x5a9495: ??? at ??
0x1163325: ??? at ??
0x1555225: ??? at ??
0x5acd28: ??? at ??
0x0: ??? at ??
Unhandled exception in spawn:
fork: Cannot allocate memory (Errno)
0x5a9495: ??? at ??
0x1163325: ??? at ??
0x155bc55: ??? at ??
0x5acd28: ??? at ??
0x0: ??? at ??

Seems to be happening more with crystal 0.23.0 and llvm 3.8.1

I actually can't get it to successfully compile at all, even after a reboot

@akzhan @kirbyfan64 you both have invitations waiting for you if you want to check out the new source code

What is the output of free -h after a fresh reboot?

@styler1972 how about using swap memory?

A total of 484 MB memory with no swap could be a bit to low for Crystal compiler. You're probably gonna need more space.

Yeah, you definitely don't have enough memory for compiling Crystal code. Type inference is expensive!
Try making sure nothing else is open before compiling, too. It doesn't look like you have anything else open, but Chrome/Electron-based applications can use quite a bit.

@mverzilli I'm not sure this is a bug. Compiling Crystal programs require considerable amounts of memory - that's a trade-off we make for awesomeness.
We always want to lower the memory amount needed, but as long as we can still compile the compiler in a 32bit environment (~4GB), I wouldn't consider this a major bug we should fix ASAP.
TL;DR: I'd remove this from 0.23.1

Cool. I thought the problem was worsened by 0.23, but I guess you're right, it doesn't merit a hotfix.

I think using the newer LLVM 3.8 implies you need more memory to compile, so that's a good reason for the bug to happen more often with 0.23.0, but I don't thinks it's enough for a hotfix anyway.
I'd think about that if there's any pretty common scenario in which this change makes things really worse (say, previously compiling apps now hitting Docker Hub's automated build memory limits), but not as is.
PRs and suggestions on improvements on memory footprint are always welcome, anyways!
BTW, @styler1972 building with --no-debug has proven to lower the memory footprint. You could try that as a workaround if you ran out of alternatives.

If it's a VM maybe you can add some swap?  Anyway (as a note to followers) building without "--release" builds using much less RAM FWIW.  Also you might be able to build "for it" on a different box and copy it over there.  Though maybe there's something that could be done internally to help as well. GL!

Crystal needs a lot of memory to compile, and we know it. There's nothing immediate that we can do here, so I'm closing this.


Binary search based IpSubnetFilter

Motivation:
IpSubnetFilter uses Binary Search for IP Address search which is fast if we have large set of IP addresses to filter.
Modification:
Added IpSubnetFilter which takes IpSubnetFilterRule for filtering.
Result:
Faster IP address filter.

For 50k IP Addresses, here is the benchmark:
The Target IP address was in the middle.
Benchmark                    Mode  Cnt         Score         Error  Units
BenchmarkPerf.binarySearch  thrpt    5  12235564.910 ± 4653778.680  ops/s
BenchmarkPerf.forLoop       thrpt    5      4494.061 ±    1570.423  ops/s

Too much variance I am not convinced the bench is measuring things correctly!

Too much variance I am not convinced the bench is measuring things correctly!

Even I thought the same when I looked at it for the first time. To double check, I added try catch block to catch ArrayIndexOutOfFound exception to see if my binary search was failing. However, no exceptions at all.
And for-loop for 25k (my target entry was in middle of 50k list) seems to be slow enough.

Try measuring branch mispredict with perf norm counters or by inspecting GC profiling...there must be a reason for the variance

Ran some random IP test and now Binary search is showing extreme results.
I inserted <IP_ADDRESS> in the list, sorted along with other random IP addresses (generated using java.util.Random).
Binary search is skipping long indexes.
16843009 against -392714775
Failed for: /<IP_ADDRESS>:9110 > IpSubnetFilterRule{ipAddress='<IP_ADDRESS>'}
16843009 against 712155077
Failed for: /<IP_ADDRESS>:9110 > IpSubnetFilterRule{ipAddress='<IP_ADDRESS>'}

My <IP_ADDRESS> address was in the middle of these 2 entries (along with other IP addresses like 6.X.X.X, 13.X.X.X, etc).
Not sure about this.

Benchmark                                                     Mode  Cnt         Score         Error   Units
BenchmarkPerf.binarySearch                                   thrpt   25  26404462.537 ±  938167.338   ops/s
BenchmarkPerf.binarySearch:·gc.alloc.rate                    thrpt   25        ≈ 10⁻⁴                MB/sec
BenchmarkPerf.binarySearch:·gc.alloc.rate.norm               thrpt   25        ≈ 10⁻⁶                  B/op
BenchmarkPerf.binarySearch:·gc.count                         thrpt   25           ≈ 0                counts
BenchmarkPerf.binarySearchAndGetElement                      thrpt   25  22392144.426 ± 1068876.685   ops/s
BenchmarkPerf.binarySearchAndGetElement:·gc.alloc.rate       thrpt   25        ≈ 10⁻⁴                MB/sec
BenchmarkPerf.binarySearchAndGetElement:·gc.alloc.rate.norm  thrpt   25        ≈ 10⁻⁶                  B/op
BenchmarkPerf.binarySearchAndGetElement:·gc.count            thrpt   25           ≈ 0                counts
BenchmarkPerf.forLoop                                        thrpt   25    476466.294 ±   15702.361   ops/s
BenchmarkPerf.forLoop:·gc.alloc.rate                         thrpt   25        ≈ 10⁻⁴                MB/sec
BenchmarkPerf.forLoop:·gc.alloc.rate.norm                    thrpt   25        ≈ 10⁻⁴                  B/op
BenchmarkPerf.forLoop:·gc.count                              thrpt   25           ≈ 0                counts

@franz1981 Boooooooom :p

@chrisvest
There is 1 more issue with this.
<IP_ADDRESS>/4 has ranges from <IP_ADDRESS>-<IP_ADDRESS>. It someone inserted this rule:
<IP_ADDRESS>/8
<IP_ADDRESS>/8
<IP_ADDRESS>/4
<IP_ADDRESS>/8
<IP_ADDRESS>/8

Current code will only remove:
<IP_ADDRESS>/4
<IP_ADDRESS>/8
<IP_ADDRESS>/8

Of course, I will blame the programmer for adding such over-lapping rules. But just to be sure from our side, should we add a backward CIDR overlapping check. The current code checks the forward direction.
Your thoughts?

@hyperxpro I put your example in a test, and it passes though?
    @Test
    public void testSortAndFilter() {
        List<IpSubnetFilterRule> rules = new ArrayList<IpSubnetFilterRule>();
        IpSubnetFilterRule superRule;
        rules.add(buildRejectIP("<IP_ADDRESS>", 8));
        rules.add(buildRejectIP("<IP_ADDRESS>", 8));
        rules.add(superRule = buildRejectIP("<IP_ADDRESS>", 4));
        rules.add(buildRejectIP("<IP_ADDRESS>", 8));
        rules.add(buildRejectIP("<IP_ADDRESS>", 8));
        rules = IpSubnetFilter.sortAndFilter(rules);
        assertEquals(Arrays.asList(superRule), rules);
    }

That's not the issue. It'll pass. But if you iterate the list, you'll find <IP_ADDRESS>/8 IP however, it should be there because <IP_ADDRESS>/4 already covers it.

I don't understand. The test above asserts on the contents of the whole list, and after sortAndFilter it only has the <IP_ADDRESS>/4 rule in it.

See, when we insert <IP_ADDRESS>/4 and then we insert <IP_ADDRESS>/8, sortAndFilter will remove <IP_ADDRESS>/8 since it overlaps with <IP_ADDRESS>/4. However, sortAndFilter don't remove <IP_ADDRESS>/8 even though it overlaps with <IP_ADDRESS>/4. sortAndFilter needs backward scanning too in order to remove <IP_ADDRESS>/8.

No, it is removed because <IP_ADDRESS>/4 (0x60000000) is ordered before <IP_ADDRESS>/8 (0x69000000) by the sort. The rules are sorted by their masked addresses. This is what the test shows.

My PC is updating (typical Windows stuff), once it finishes. I've some code that reproduces this issue. I'll drop the output in sometime.

NVM, The old test was using the wrong code. Things are perfect now.
@normanmaurer Ready for your review.

@netty-bot test this please

Added mixed IPv4 and IPv6 and updated JavaDoc. :D

I am waiting for PR #10500 to be merged before I finalized now.

@franz1981 In meanwhile, can you tell how exactly you want benchmark code to be so you can add it to the suite?

import io.netty.handler.ipfilter.IpFilterRuleType;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.annotations.TearDown;
import org.openjdk.jmh.annotations.Warmup;
import org.openjdk.jmh.infra.Blackhole;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;

import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

@State(Scope.Benchmark)
@BenchmarkMode(Mode.Throughput)
@Warmup(iterations = 5)
public class BenchmarkPerf {

    private List<IpSubnetFilterRule> ipFilterRulesListUnsorted;
    private List<IpSubnetFilterRule> ipFilterRulesListSorted;
    private InetSocketAddress remoteAddress;

    public static void main(String[] args) throws RunnerException {
        Options opt = new OptionsBuilder()
                .include(BenchmarkPerf.class.getSimpleName())
                .forks(5)
                .addProfiler("gc")
                .build();

        new Runner(opt).run();
    }

    @Setup
    public void setup() {
        ipFilterRulesListUnsorted = new ArrayList<>();
        ipFilterRulesListSorted = new ArrayList<>();
        remoteAddress = new InetSocketAddress("<IP_ADDRESS>", 9110);

        // <IP_ADDRESS>
        // <IP_ADDRESS>
        // <IP_ADDRESS>
        // X.X.X.X
        for (int i = 0; i < 255; i++) {
            ipFilterRulesListUnsorted.add(new IpSubnetFilterRule(i + "." + i + "." + i + "." + i, 32, IpFilterRuleType.REJECT));
        }

        // <IP_ADDRESS>
        // <IP_ADDRESS>
        // <IP_ADDRESS>
        // 100.200.225.X
        for (int i = 0; i < 255; i++) {
            ipFilterRulesListUnsorted.add(new IpSubnetFilterRule("100.200.225." + i, 32, IpFilterRuleType.REJECT));
        }

        ipFilterRulesListUnsorted.add(new IpSubnetFilterRule("<IP_ADDRESS>", 32, IpFilterRuleType.REJECT));
        ipFilterRulesListSorted.addAll(ipFilterRulesListUnsorted);
        Collections.sort(ipFilterRulesListSorted);
    }

    @Benchmark
    public void forLoop() {
        for (IpSubnetFilterRule rule : ipFilterRulesListUnsorted) {
            if (rule.matches(remoteAddress)) {
                return;
            }
        }
        throw new IllegalArgumentException("IP Address was not found");
    }

    @Benchmark
    public void binarySearchAndGetElement(Blackhole blackhole) {
        try {
            blackhole.consume(this.ipFilterRulesListSorted.get(Collections.binarySearch(this.ipFilterRulesListSorted, remoteAddress,
                    IpSubnetFilterRuleComparator.INSTANCE)).ruleType());
        } catch (ArrayIndexOutOfBoundsException ex) {
            throw new IllegalArgumentException("IP Address was not found");
        }
    }

    @Benchmark
    public void binarySearch(Blackhole blackhole) {
        try {
            blackhole.consume(Collections.binarySearch(this.ipFilterRulesListSorted, remoteAddress, IpSubnetFilterRuleComparator.INSTANCE));
        } catch (ArrayIndexOutOfBoundsException ex) {
            throw new IllegalArgumentException("IP Address was not found");
        }
    }

    @TearDown
    public void clean() {
        this.ipFilterRulesListSorted.clear();
        this.ipFilterRulesListUnsorted.clear();
    }
}

@chrisvest Having separate lists for IPv4/6, we can handle both IP versions without any issue. Also, separate lists will give advantage in binary search because IPv4 is 32-bit Integer and IPv6 is 128-bit Integer and their LOW and HIGH ranges are very big. Binary search will take a lot more time in that case.
Just added instanceOf checks and it's alright. The rest base algorithms are the same.
PTAL and lemme know.

Also, separate lists will give advantage in binary search because IPv4 is 32-bit Integer and IPv6 is 128-bit Integer and their LOW and HIGH ranges are very big. Binary search will take a lot more time in that case.

Binary search time complexity only depends on the number of elements in the list, not the domain of values being compared.

@netty-bot test this please

Also, separate lists will give advantage in binary search because IPv4 is 32-bit Integer and IPv6 is 128-bit Integer and their LOW and HIGH ranges are very big. Binary search will take a lot more time in that case.

Binary search time complexity only depends on the number of elements in the list, not the domain of values being compared.

Same but the real reason why I added code to remove overlapping subnet was if we had <IP_ADDRESS>/8 and few more IP addresses in this range like <IP_ADDRESS>/32, <IP_ADDRESS>/32.. etc. Binary search won't work. Debugged it hard and found Binary search was jumping high on ranges. So to make things simple, I added sorting for CIDR. Afterward, it worked perfectly.

Updated withNetUtils#ipv4AddressToInt(Inet4Address).
Please run the test last time and we're good to go for merge.

@netty-bot test this please

13:22:54 [netty-centos6-java8-prb] $ /bin/sh -xe /tmp/jenkins6078476321631526049.sh
13:22:54 + docker-compose -f docker/docker-compose.yaml -f docker/docker-compose.centos-6.18.yaml -p netty-centos6-java8-prb run --rm test-leak
13:22:55 Creating netty-centos6-java8-prb_runtime-setup_1 ...
13:22:55
Creating netty-centos6-java8-prb_runtime-setup_1 ... error
13:22:55 ERROR: for netty-centos6-java8-prb_runtime-setup_1  Cannot start service runtime-setup: network netty-centos6-java8-prb_default not found
13:22:55
13:22:55 ERROR: for runtime-setup  Cannot start service runtime-setup: network netty-centos6-java8-prb_default not found
13:22:55 Encountered errors while bringing up the project.
13:22:55 Build step 'Execute shell' marked build as failure

I don't remember messing with Docker. What could be the reason for failure?

@netty-bot test this please

Good to go for a merge finally. :D

@netty-bot test this please

@hyperxpro thanks a lot again..

Huge thanks to @franz1981 and @chrisvest for the help. :D


InvalidArgumentError

Hi
I am trying to run the notebook :   lesson3-rsna-pneumonia-detection-kaggle.ipynb  verbatim on my Ubuntu machine.
I get an InvalidArgumentError. This error does not happen if i run it in Google Colab but it does on two different Ubuntu machines that I tried.
This happens in this cell of code.
NUM_EPOCHS = 1
# Train Mask-RCNN Model
import warnings
warnings.filterwarnings("ignore")
model.train(dataset_train, dataset_val,
            learning_rate=config.LEARNING_RATE,
            epochs=NUM_EPOCHS,
            layers='all',
            augmentation=augmentation)

All Python modules for mrcnn have been installed from their requiremnt.txt file so I dont see any reason for a version mismatch.
Any suggestions would be appreciated.
Here's the complete stack trace.
Epoch 1/1
---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args)
   1277     try:
-> 1278       return fn(*args)
   1279     except errors.OpError as e:

/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _run_fn(feed_dict, fetch_list, target_list, options, run_metadata)
   1262       return self._call_tf_sessionrun(
-> 1263           options, feed_dict, fetch_list, target_list, run_metadata)
   1264

/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _call_tf_sessionrun(self, options, feed_dict, fetch_list, target_list, run_metadata)
   1349         self._session, options, feed_dict, fetch_list, target_list,
-> 1350         run_metadata)
   1351

InvalidArgumentError: indices[209] = 980 is not in [0, 960)
	 [[Node: ROI/GatherV2_23 = GatherV2[Taxis=DT_INT32, Tindices=DT_INT32, Tparams=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](ROI/strided_slice_48, ROI/strided_slice_49, training/SGD/gradients/roi_align_classifier/concat_grad/mod)]]

During handling of the above exception, another exception occurred:

InvalidArgumentError                      Traceback (most recent call last)
<ipython-input-32-3c633e2e5bb2> in <module>()
      8             epochs=NUM_EPOCHS,
      9             layers='all',
---> 10             augmentation=augmentation)

/usr/local/lib/python3.5/dist-packages/mask_rcnn-2.1-py3.5.egg/mrcnn/model.py in train(self, train_dataset, val_dataset, learning_rate, epochs, layers, augmentation, custom_callbacks, no_augmentation_sources)
   2379             max_queue_size=100,
   2380             workers=workers,
-> 2381             use_multiprocessing=True,
   2382         )
   2383         self.epoch = max(self.epoch, epochs)

/usr/local/lib/python3.5/dist-packages/keras/legacy/interfaces.py in wrapper(*args, **kwargs)
     85                 warnings.warn('Update your `' + object_name +
     86                               '` call to the Keras 2 API: ' + signature, stacklevel=2)
---> 87             return func(*args, **kwargs)
     88         wrapper._original_function = func
     89         return wrapper

/usr/local/lib/python3.5/dist-packages/keras/engine/training.py in fit_generator(self, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
   2040                     outs = self.train_on_batch(x, y,
   2041                                                sample_weight=sample_weight,
-> 2042                                                class_weight=class_weight)
   2043
   2044                     if not isinstance(outs, list):

/usr/local/lib/python3.5/dist-packages/keras/engine/training.py in train_on_batch(self, x, y, sample_weight, class_weight)
   1760             ins = x + y + sample_weights
   1761         self._make_train_function()
-> 1762         outputs = self.train_function(ins)
   1763         if len(outputs) == 1:
   1764             return outputs[0]

/usr/local/lib/python3.5/dist-packages/keras/backend/tensorflow_backend.py in __call__(self, inputs)
   2271         updated = session.run(self.outputs + [self.updates_op],
   2272                               feed_dict=feed_dict,
-> 2273                               **self.session_kwargs)
   2274         return updated[:len(self.outputs)]
   2275

/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in run(self, fetches, feed_dict, options, run_metadata)
    875     try:
    876       result = self._run(None, fetches, feed_dict, options_ptr,
--> 877                          run_metadata_ptr)
    878       if run_metadata:
    879         proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _run(self, handle, fetches, feed_dict, options, run_metadata)
   1098     if final_fetches or final_targets or (handle and feed_dict_tensor):
   1099       results = self._do_run(handle, final_targets, final_fetches,
-> 1100                              feed_dict_tensor, options, run_metadata)
   1101     else:
   1102       results = []

/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _do_run(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)
   1270     if handle is None:
   1271       return self._do_call(_run_fn, feeds, fetches, targets, options,
-> 1272                            run_metadata)
   1273     else:
   1274       return self._do_call(_prun_fn, handle, feeds, fetches)

/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args)
   1289         except KeyError:
   1290           pass
-> 1291       raise type(e)(node_def, op, message)
   1292
   1293   def _extend_graph(self):

InvalidArgumentError: indices[209] = 980 is not in [0, 960)
	 [[Node: ROI/GatherV2_23 = GatherV2[Taxis=DT_INT32, Tindices=DT_INT32, Tparams=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](ROI/strided_slice_48, ROI/strided_slice_49, training/SGD/gradients/roi_align_classifier/concat_grad/mod)]]

Caused by op 'ROI/GatherV2_23', defined at:
  File "/usr/lib/python3.5/runpy.py", line 184, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib/python3.5/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/usr/local/lib/python3.5/dist-packages/ipykernel_launcher.py", line 16, in <module>
    app.launch_new_instance()
  File "/usr/local/lib/python3.5/dist-packages/traitlets/config/application.py", line 658, in launch_instance
    app.start()
  File "/usr/local/lib/python3.5/dist-packages/ipykernel/kernelapp.py", line 477, in start
    ioloop.IOLoop.instance().start()
  File "/usr/local/lib/python3.5/dist-packages/zmq/eventloop/ioloop.py", line 177, in start
    super(ZMQIOLoop, self).start()
  File "/usr/local/lib/python3.5/dist-packages/tornado/ioloop.py", line 888, in start
    handler_func(fd_obj, events)
  File "/usr/local/lib/python3.5/dist-packages/tornado/stack_context.py", line 277, in null_wrapper
    return fn(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/zmq/eventloop/zmqstream.py", line 440, in _handle_events
    self._handle_recv()
  File "/usr/local/lib/python3.5/dist-packages/zmq/eventloop/zmqstream.py", line 472, in _handle_recv
    self._run_callback(callback, msg)
  File "/usr/local/lib/python3.5/dist-packages/zmq/eventloop/zmqstream.py", line 414, in _run_callback
    callback(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/tornado/stack_context.py", line 277, in null_wrapper
    return fn(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/ipykernel/kernelbase.py", line 283, in dispatcher
    return self.dispatch_shell(stream, msg)
  File "/usr/local/lib/python3.5/dist-packages/ipykernel/kernelbase.py", line 235, in dispatch_shell
    handler(stream, idents, msg)
  File "/usr/local/lib/python3.5/dist-packages/ipykernel/kernelbase.py", line 399, in execute_request
    user_expressions, allow_stdin)
  File "/usr/local/lib/python3.5/dist-packages/ipykernel/ipkernel.py", line 196, in do_execute
    res = shell.run_cell(code, store_history=store_history, silent=silent)
  File "/usr/local/lib/python3.5/dist-packages/ipykernel/zmqshell.py", line 533, in run_cell
    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/IPython/core/interactiveshell.py", line 2698, in run_cell
    interactivity=interactivity, compiler=compiler, result=result)
  File "/usr/local/lib/python3.5/dist-packages/IPython/core/interactiveshell.py", line 2802, in run_ast_nodes
    if self.run_code(code, result):
  File "/usr/local/lib/python3.5/dist-packages/IPython/core/interactiveshell.py", line 2862, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-30-6cd33d3ef12a>", line 1, in <module>
    model = modellib.MaskRCNN(mode='training', config=config, model_dir=MODEL_DIR)
  File "/usr/local/lib/python3.5/dist-packages/mask_rcnn-2.1-py3.5.egg/mrcnn/model.py", line 1845, in __init__
    self.keras_model = self.build(mode=mode, config=config)
  File "/usr/local/lib/python3.5/dist-packages/mask_rcnn-2.1-py3.5.egg/mrcnn/model.py", line 1973, in build
    config=config)([rpn_class, rpn_bbox, anchors])
  File "/usr/local/lib/python3.5/dist-packages/keras/engine/topology.py", line 602, in __call__
    output = self.call(inputs, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/mask_rcnn-2.1-py3.5.egg/mrcnn/model.py", line 296, in call
    names=["pre_nms_anchors"])
  File "/usr/local/lib/python3.5/dist-packages/mask_rcnn-2.1-py3.5.egg/mrcnn/utils.py", line 829, in batch_slice
    output_slice = graph_fn(*inputs_slice)
  File "/usr/local/lib/python3.5/dist-packages/mask_rcnn-2.1-py3.5.egg/mrcnn/model.py", line 294, in <lambda>
    pre_nms_anchors = utils.batch_slice([anchors, ix], lambda a, x: tf.gather(a, x),
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/array_ops.py", line 2659, in gather
    return gen_array_ops.gather_v2(params, indices, axis, name=name)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/gen_array_ops.py", line 3142, in gather_v2
    "GatherV2", params=params, indices=indices, axis=axis, name=name)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/op_def_library.py", line 787, in _apply_op_helper
    op_def=op_def)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/util/deprecation.py", line 454, in new_func
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 3155, in create_op
    op_def=op_def)
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 1717, in __init__
    self._traceback = tf_stack.extract_stack()

InvalidArgumentError (see above for traceback): indices[209] = 980 is not in [0, 960)
	 [[Node: ROI/GatherV2_23 = GatherV2[Taxis=DT_INT32, Tindices=DT_INT32, Tparams=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](ROI/strided_slice_48, ROI/strided_slice_49, training/SGD/gradients/roi_align_classifier/concat_grad/mod)]]

@quakig seems to have something to do with the parameters I listed above, removing those fixes the issues

Considering using GPU. More details later.


Any example with template?

I see that is an option for templating the button, but i cant make it work. Please, an example of a valid template

template is deprecated, it was used in emojionearea v2.*


Example star wars graphql fails

When attempting to run any query using the example starwars-graphql API I get an error related isObservable.  From what I can tell there's no network request being made so before any request goes out.  It's possible this is a configuration problem on my end but I'm at a loss to figure out where I'm going wrong.
Expected Behavior
I should get a response or some sort of actionable error.
Current Behavior
I get back the following error:
{   "errors": {     "message": "Cannot use 'in' operator to search for 'subscribe' in null",     "stack": "TypeError: Cannot use 'in' operator to search for 'subscribe' in null\n    at isObservable (webpack-internal:///../../node_modules/graphiql/esm/components/GraphiQL.js:1270:21)\n    at eval (webpack-internal:///../../node_modules/graphiql/esm/components/GraphiQL.js:1075:29)"   } }
Steps to Reproduce

npx @backstage/create-app and walk through the setup steps
yarn dev
Wait for startup
Navigate to http://localhost:3000/catalog/default/api/starwars-graphql/definition
Enter any query
Press the Execute button

Context
Just trying to get a sample GraphQL API to work
Your Environment

NodeJS Version: 14.17.6
Operating System and Version: Mac OS 10.14.6
Browser Information: Chrome 96.0.4664.110

Hmm, I believe I found the reason.  It looks like the default fetcher implementation just returns null.
https://github.com/backstage/backstage/blob/cbfa75bf69da90961daae517f28a106327ceb5d0/plugins/api-docs/src/components/GraphQlDefinitionWidget/GraphQlDefinitionWidget.tsx#L58
So is the only way to get this working to create a custom API implementation?

Yeah I believe that it's not really setup to go and fetch any data yet, thinking that it might be this way due to things like Authorization headers or something like that not being so easy to attach for the queries. So it just displaying the query interface was a nice middleground.


External issuer : When we update the data of an issuer in the portal (external issuer) and we update the wallet config the text is not updated in the Discover

The update of the text, logo and issuer list are ok
the update of the external issuer data is not taken into account


Suitable for production?

I read this is a work in progress. May you provide a to-do list in order to help or to know how much is required for using this template in a production environment? I would like to help, for sure. Let me know.

Sure you can use it in production. It's not like a library, it's more like a boilerplate that I used in some projects.
Lately I've switched to Nuxt + Laravel so that's why there's not much activity on this repo.

Thank you anyway, I'll close this issue then, and I hope to do some pull requests in the future, and who knows, maybe to keep supporting this boilerplate.


Keeping open file history

So, one thing I really liked about 1.2 and prior, is files did not belong to an "editor" (pane). It was one of my favorite things about vscode. I can open and close editors when ever I want. Sometimes something is not relevant or I want more room for one file, so I will close other editors. Keeping files and editors separate lets you move around your codebase without worrying about losing history. I thought this was a bug at first, since I have both tabs and "open editors" hidden in the UI as I don't need or use them.
Via twitter I heard these new split editor features were wildly requested. Feature requests are easy to make, but its hard to vote on keeping a feature that you already like.
My suggestion would be to keep the awesome work you did with tabs, but maybe store all open files in a single list also. So any time you open a file, it gets pushed to that list, while also being associated to and editor for tabs and what not.
Thoughts?
<3

VSCode Version:
1.3
OS Version:
OSX

Read and follow Ctrl+Tab to navigate in entire editor history in https://github.com/Microsoft/vscode/issues/6605

@bpasero
Can you have all editors closed and still have unsaved files/have edit history? I'm not sure your suggestion even relates to the feature I feel is now missing.

@rtorr that in particular you cannot do anymore, closing a dirty file and having it floating around is gone. We have no intent to bring this behaviour back nor make it configurable.

I really appreciate you taking the time fore the reply. On last note to think about and does not need a reply but is just feedback; The new open files list in editors on that replaces working files duplicates the functionality of open tabs, and it's hard to see how it is better than working files. Just saying I think you had it right the first time.
Thanks again! Keep up the awesome work (sincerely) :)

The biggest pain point I have with this is I have to remember what file is in what editor/pane so I don't lose undo functionality

Can you explain how that is a problem by an example?

I viewed editors as temporary. I would open and close them as I need context of 1-3 files, not assuming I need the editor open for the life of a file. Open an editor/file, make some changes, close. Reopen said file in any editor and still have undo history if needed. Prior to this release, vscode viewed editors as a view to a file, not own it's lifecycle. That is what the now removed working files drop down did. I used the 'recent files' fuzzy finder as my goto for "working files".

If I have both tabs and 'open editors' hidden (which I do because I don't use them in favor of recent files fuzzy finder), I have no context to when I'm going to lose file history

We are working on a fix to keep the undo history even after closing the editor, so we are aware of this particular issue.

Awesome!


Change simulate to return signed_bundled_transactions

I think this could be helpful. This way you can build an unsigned bundle, call simulate, check results, then send_bundle_munger(signed_bundled_transactions, ...).
Without this, you can pass the unsigned bundle to send_bundle_munger, but it has to sign things twice then.

I like this change, but it mixes _ and snakeCase keys. Could you fix that and I'll merge it?

Yeah. I can make that change tomorrow.

Great, thanks!

There you go!


adjusted parameter name when use operators cv::resize() and cv::Re… …ct())

adjusted parameter name when use operators cv::resize() and cv::Re… …ct()) in file deploy/cpp/src/paddlex.cpp

？

？

Thanks for your contribution, we are reviewing and testing this pull request, it seems fine now

Thanks for your contribution, we are reviewing and testing this pull request, it seems fine now

lgtm

lgtm


Added readdir and fixed typo in omitempty

With this, I think all of the docker side stuff can be implemented.

@gupta-ak,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

Changes look good


Advanced topic: R integration

R View (Table) allows to seamlessly include R scripts into KNIME. We will demonstrate on a minimal. We will demonstrate on a minimal example how such a script is integrated.
// why two times "we will demonstrate"?

For reviews, please use openms.readthedocs.io/en/develop. Until merged to develop, it's a playground.
The best would be to review PRs raised by @OpenMS/doc-team https://github.com/OpenMS/OpenMS-docs/pulls.
Closing.

PR doesn't seem to be mergeable yet so better reopen so we don't lose it for reference @greengypsy


Users Command permission add not working

When typing "user permission add NAME PERMISSION", an UnsupportedOperationException occurs: https://pastes.gq/48ek1Gl90z the user was just created using "create user NAME PASSWORD", it works when using "user create NAME PASSWORD"

I can confirm, this happens, due to the fact, that the permissions are an empty array as a list.
https://github.com/CloudNetService/CloudNet/blob/8a225fb6cba21d288d420968fc228ea6cde5d720/cloudnet-core/src/main/java/de/dytanic/cloudnetcore/command/CommandCreate.java#L117
Due to the fact, that the user command covers all management about users, we should remove the create user command.


Modular router system

This PR provides the basics for a more modular router system.
Changes so far:

Implement address type in Address

Provide convenience methods to create Addresses from Strings
The functionality of AddressSet is not impacted by this change

Implement Route and RouteBuilder abstractions over the ockam_core addresses

Update (2021-03-09)

Improve the route builder to allow in-place editing of route types via the same builder API
Add a mechanism by which routers can register themselves via the Context API
Wrap messages in ockam_node so that router implementations are forced to handle RouterMessage types

Log and handle errors to comply with this requirement gracefully

Add a Context API endpoint to "forward" a message from a router to a "child worker"
There is a minimal example of this system in use called worker_simple_router

Consumer could potentially be a TcpConnectionWorker
The address space prefix (proxy_me_...) was chosen to make the difference between the two address spaces clear, but fundamentally the mapped address space could be anything.

Context API additions
Why add forward_message(TransportMessage)?
By letting the router re-enter its re-addressed message through the same routing stack, a lot of logic can be re-used, instead of pushing this responsibility onto the external router author.
Currently this only works if the router forwards the message to a non-router worker.
Why add a register(...) API instead of using the existing message sending system?
The internal router is not implemented as a worker, because this would cause a bootstrap problem.
I initially tried to implement it this way, but ran into a lot of problems and complexities that can be solved by using the command channel message types used by the Context API to request per-worker senders, or to shut down a node.
What is missing?
Currently a user-worker has no access to the route information of the message that it received.
Routers must accept RouterMessage, which is a slim wrapper around a TransportMessage, which contains all of this state. To give userspace workers access to the same information I envision a conposition type similar to Cancel<_, M>, which implements Deref<M>, and provides an API to access route information to make it easy for users to send replies to workers based entirely on the message route.
Data flow chart
Following is a breakdown of the data flow through this API.

Update 2021-03-15
There has been a lot of movement on this PR since I started it. I rebased it against develop this morning to make sure we can merge it.
Following is a breakdown of changes since the last update.  These are primarily around the TCP transport crate.
Changes to ockam_node

Introduce Routed<M> which provides access to the route information of a message

When wanting to move the message, call .take() to drop the composite type
Also provides .sender() and .reply() to quickly construct a reply route

Changes to ockam_transport_tcp

Refactor tcp_transport internals to use the new worker and routing system

A TCP connection worker is implemented as two workers: one to receive, and one to send
Uses tokio's into_split() mechanism to separate ownership of input and output streams
The receiving worker is implemented as a custom loop in initialize()

We don't currently have a mechanism to have access to a worker Context, without receiving messages
The receive worker uses an AtomicBool to kill its receive loop when stopping the worker pair
There may be better designs available to solve this issue, but they will require some research

Retire the ockam_router crate, as it is now fully implemented in ockam_node
Rewrite ockam/examples/tcp crate with the new architecture
The new TcpRouter can either act as a client router, or bind a TcpListener to a socket to accept incoming connections

Provide a function register(...) on RouterHandle to allow connection workers to register themselves with the router
When calling TcpRouter::bind() another worker is started: TcpIncomingWorker, which is shut down when the router is

Following is an overview of the TCP specific parts of the routing architecture.

What's missing
Most of the design is complete and only lacking in some implementation specifics. However, there are some small design questions to be resolved.
Connection workers won't shut down immediately
In the current design the TcpRecvWorker and TcpListenWorker are implemented as custom loops in the initialize() function. The run loop is gated via an Arc<AtomicBool> which is switched off when the worker is meant to be shut down.
This means that a worker might idle for longer than it is meant to, because it is blocking on a tokio i/o recv call! This concept needs to be changed to expose a Future API, which then allows the worker to select(...) between the two futures.
Examples
Getting the previous examples to work with the new code base would have been much harder than starting from scratch, which means that currently there are no examples of this API working

Update
This PR has examples now and should be ready to merge @jared-s (if I get past CI :P)

Actually, the rebase seems to have added a bunch of files that I previously deleted so I have to have another look at cleaning up the history before merging!

Okay, looks good now. Not sure why the tests fail, but that doesn't feel like something that this PR touches

Awesome thanks @spacekookie , I'll investigate the failures and take it from here!

@jared-s Oh, I fixed it. I'm pushing one last thing to also enable some lints I had forgotten about.

Merged as https://github.com/ockam-network/ockam/pull/1070 !


Can you give a example using hightlight lines in code?

I tried using this below, but it did not work for me.
let test = '';

console.log('test', test);
console.log('test hightlight');

And taking advantage of the same issue, would I have to activate the numbers in the lines of the codes, how would I do that?

https://vuepress.vuejs.org/guide/markdown.html#line-highlighting-in-code-blocks
Just like this below:
```js{4}
export default {
  data () {
    return {
      msg: 'Highlighted!'
    }
  }
}


SyntaxError: Unexpected token

Hi all,
I am newbie about gittio and after installing it, I have tried to launch the following command:
-- gittio install -g facebook
and the result is:
[INFO]  facebook searching...
SyntaxError: Unexpected token <
at Object.parse (native)
at Request._callback (/usr/local/lib/node_modules/gittio/lib/component.js:27:22)
at Request.self.callback (/usr/local/lib/node_modules/gittio/node_modules/request/request.js:123:22)
at Request.EventEmitter.emit (events.js:98:17)
at Request. (/usr/local/lib/node_modules/gittio/node_modules/request/request.js:893:14)
at Request.EventEmitter.emit (events.js:117:20)
at IncomingMessage. (/usr/local/lib/node_modules/gittio/node_modules/request/request.js:844:12)
at IncomingMessage.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:920:16
at process._tickCallback (node.js:415:13)
Can someone help me on this trouble?
Thanks in advance,
Matteo.

I think gitTio was down when you tried this. Can you try again?
I get:
≫ gittio install -g facebook
[INFO]  facebook searching...
[ERROR] facebook:commonjs no distributable available
[ERROR] facebook:mobileweb no distributable available
[ERROR] facebook:ios no distributable available
[ERROR] facebook:android no distributable available

Which is correct because there is no "facebook" component.


Audio call dosent work from background service

I am using agora and ConnectionService of android to achieve VoIP calling app but when In the background I couldnt make voice call (even I join channel I cant listen any audio)

you should use foreground service if you want to keep calling in the background.

we face the same issue in iOS
let me describe the current situation
our app work as expected in all cases but we have this case when some one called from any android or iOS device
to iOS device which not running the app in foreground mode both the caller device and the receiver not hear each other
we are sure that microphone permission has given
any suggestions ?

try https://pub.dev/packages/callkeep?

@LichKing-2234 thanks ... can you please refer any example who to use with agora SDK

just enable it, keep application alive in the background.


how to train table-structure-recognition_cycle-centernet ，there is no docs about it

Currently this model doesn't support fine-tuning.


Adopters redhat

Hey, I just made a Pull Request!
Add Red Hat to the list of Adopters
:heavy_check_mark: Checklist

[ ] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

@christophe-f  I'm sorry, for some reason this PR never bubbled up on my review board it seems, I have to look into why that's the case.
Anyhow - would you mind rebasing or reconstructing this on a fresh master? It would be great if you could also DCO sign the commits, as per the comment above or the build details below.
Again, sorry, for some reason this slipped under my radar.


[Bug]: AuthenticationError:

What happened?
When doing collection.query() with a query_text it prompts an AuthenticationError

Versions
Chroma v0.3.25
I am using Google Colab
Relevant log output
No response

@isa-tr are you using the default embedding function? can you provide a link to an example of this error? I just tried it in my Google Colab and it worked well for me.

This is a bug/issue  on the openai side and coming from their library. Users of that library have suggested some workarounds here https://github.com/openai/openai-python/issues/464
Closing this out for now but feel free to reopen if needed!


feat: add setting to change DNS servers

Closes #2726
I've added 2 fields and forwarded values to container configuration.
Checked that it works both for create/edit scenarios:

Results in:
$ docker inspect test -f '{{.HostConfig.Dns}}'
[<IP_ADDRESS>]

Should I add something, like docs? Not sure where to look for required changes, would be grateful for pointing out.

Any chance to see this coming in a release in a not too far future?

Any chance to see this coming in a release in a not too far future?
Next release will be coming next week (hopefully) and we hope to include this PR


🐛 Add go mod tidy when building possibly-new integration

Summary
This PR adds a go mod tidy into the recipe for building ks/OTP using the local version of ks/ks. This may be needed when the local version of ks/ks has different dependencies than the version that ks/OTP normally builds with. I needed it while working on #1760.
I am not a fan of this building, see https://github.com/kubestellar/kubestellar/issues/1786#issuecomment-1964802834 ; as long as we are doing this building, this extra step is sometimes needed.
Related issue(s)
Fixes #

/cc @nirrozenbaum
/cc @vMaroon
/cc @waltforme

This seems risky.  Do we expect such cases ?

@ezrasilvera : not sure what you mean by "this". Let's keep the #1786 discussion in
#1786. As for this PR, I do not think it is risky, it is a standard bit of normalization, and yes, as I noted in the opening comment, I already needed it.

/lgtm
/approve


New SortedIterationKTypeVTypeHashMap based on IndirectSort

A read-only view with sorted-iteration on a delegate KTypeVTypeHashMap.

The template generation works. I added Intrinsics.compare.
The assertion to verify the delegate map didn't change is minimal.
Minimal set of tests. Will put more tests after the first discussion on this sorted-iteration view.
I refactored a bit KTypeVTypeXyzMapTest by introducing AbstractKTypeVTypeTest to move duplicated helper methods there.

Thanks Bruno! I'll be able to take a look at this next week - I'm away for the weekend. I just peeked at the issue though and I'd use the same package as the rest of the classes (and revert fields to private). It's really the same functional area - why bother splitting (and making package names longer).

I'd use the same package as the rest of the classes

Ok, I reverted that as well as the fields visibilities.

One thing I'm keen to change is sorting comparators - I like the explicit version for generic types when you pass Comparator comparator and shift the logic of comparing keys to the caller. For the generic version I'd keep just this method (and get rid of the default Comparable intrinsic). For primitives, I'd require a KTypeComparator implementation interface so that you can, for example, iterate in descending order of the keys? The default comparators for all primitive types could be even written statically, delegating to Float.compareTo, etc.?

In the current implementation the empty key is always iterated first, whatever is the comparator.
1- Is it ok?
2- Or should we compare using the default value, but in this case the comparator must accept null ?
I tend to choose 1.

I actually missed the default key exception in the code - I think ideally you'd again shift the decision to whoever provides the comparator... If their comparator throws an NPE on a null key - this is a bug on the user side. If they want to shift null until the end of the iteration - the comparator will handle that. I'm all for moving those decisions to folks who pass in the logic for comparing keys/ entries. Don't know how more complex it'd make the code though.

I agree, and it is more intuitive. I'll change that; I think there must be a way to no make the code more complex.

Thanks Bruno! I'll take a look again later too.


Add feature that disable user after days.

Hi Angristan,
Can easyrsa auto expire user cert after n days?
Thanks.

Yes : https://github.com/OpenVPN/easy-rsa/blob/master/easyrsa3/vars.example#L117
You can modify the script like here : https://github.com/Angristan/OpenVPN-install/blob/master/openvpn-install.sh#L402


'\n' mixed in Vocabulary['token']

it seems that counter in vocabulary is counting 'token' tokens with a newline character.
for example, vocabulary.pkl in java-small dataset, i can find
'return': 6020684,
and
'return\n': 33290,
separately.
i personally fixed this problem by stripping path_context on Vocabulary._process_raw_sample,
but im little confused whether this problem(mixing '\n' in tokens) is intended.
thank you!

It's interesting. But I'm not sure that this is the same return. The code was tokenized by a parser, so it should handle different indentations. I may suggest that there are different sorts of string literals with return\n inside.

i don't understant what "different sorts of string literals with return\n inside." means, but i could find out lots of '*\n' tokens in vocabulary.pkl
for example,
'EMPTY\n': 11459,
'\n': 11416,
'if\n': 6900,
'exception\n': 6624, ...
lots of tokens are mixed with '\n', which i assume that vocabulary parser is reading each end of the line

Yeah, seems strange. I will investigate why the parser extracted tokens with new line characters in the end.


The code doesn't output anything

As you can see after i've terminated the program it doesn't output anything but multiple errors. Same thing happens when i run
$ python rnn_tf.py saved/model.ckpt "The "
although i doesn't happen when i run this code:
$ python rnn_tf.py
another thing that doesn't work is the relative position of the file. So i always have to give the absolute position of data/shakespeare.txt. All of the program runs in terminal Mac version 10.12. İ use python 3.6.2.
İf you need any other information please just ask.
Thank you in advance!

@theNewRootUser
Output does come.
As NUM_TRAIN_BATCHES = 20000, you have to let the model run. The model was still working (you can see the batches going is still at 15600. It takes a bit more time later as the loss is to be reduced further. If you need model to finish early, you can reduce the training batches number from rnn_tf.py line 151.


AIRBOT Z1 Robot Air Purifier and Humidifier

@bwp91 Hey there. I will get an ECOVACS AIRBOT Z1 Air Purifier and Humidifier.
Air Purifier and Humidifier
Are you willing to try to extend your plugin to support this device? 🥰 Of course, I will help as good as I can. 😅
Thanks in advance for your time and consideration.

@DJay-X
Once you get the device please check if it's already listed as a new device (classid sdp1y1) in the plugin.
I assume it is already listed, and maybe some things like battery level already work.
Btw.: I cannot speak for @bwp91 whether he's willing to support this device.
And I'm also not sure if I'm willing to fully support this device with my library because there's still no public documentation for the Ecovacs (Deebot) API.

I will do so, when the Z1 is delivered. Thanks for now. 👍

@DJay-X
Once you get the device please check if it's already listed as a new device (classid sdp1y1) in the plugin. I assume it is already listed, and maybe some things like battery level already work.

From the Plugin Debug Log, I can tell, there is a sdp1y1 listed.
If I can help with providing additional information from the log that is useful for the library and @bwp91 is also willing to have a look for using with the plugin, please of course let me know.

@DJay-X

@mrbungle64 From the Plugin Debug Log, I can tell, there is a sdp1y1 listed. +1

Is the battery level shown correctly?

Sorry Im a bit late on this issue.
I would be willing to support whatever the ecovacs-deebot library is available to support.
With regards to HomeKit (and homebridge), air purifiers and humidifiers are tricky devices to support even separately as a current humidity% is required. I simply don't know how I could expose such a device that combines both features into an "accessory" that appears in homekit,

Not against the idea, just wouldn't know how to make it look nice in the home app like I try to do with everything else I do!

Is the battery level shown correctly?
It is shown correctly and updating, yes.

@bwp91 Thanks for being open.
I think the main feature is the air purification. But also mostly automatic.
I think a great help would just be to start the device out of the charging station, send it back to it and bring it to a room like with the deebot X1 Omni. I have the impression the navigation is the same. Of course I have no idea if this is the case from the technical side. I can send you guys a debug log in a private message of course if this helps to further investigate.
Thanks again to you both.

@DJay-X
You can use the example apps of the library to create a debug log while the device is working:
https://github.com/mrbungle64/ecovacs-deebot.js/wiki/Example-apps
Please send me the output by email

@DJay-X
Hallo "Nachbar", Du kannst gerne Kontakt zu mir aufnehmen 😃

Ich habe das Sample mal ausprobiert.. ein paar Befehle gehen... aber "clean" ist eben nicht für den AirBot gedacht.. es scheint "AirClean" zu sein, aber anscheinend ist der Befehl nicht ganz vollständig (hatte mich an dem Clean-Befehl orientiert)

@bhuebschen

Ich habe das Sample mal ausprobiert.. ein paar Befehle gehen...

Klingt gut. Möchtest du uns auch verraten welche das sind? 😉

aber "clean" ist eben nicht für den AirBot gedacht.. es scheint "AirClean" zu sein, aber anscheinend ist der Befehl nicht ganz vollständig (hatte mich an dem Clean-Befehl orientiert)

Hast du den Netzwerkverkehr mit geschnitten?

Android App decompiled 🫢

aber das issue hier ist sowieso eigentlich nicht der richtige Ort für eine Unterhaltung über die Integration des Z1

@DJay-X
With version 5.3.2-beta.2 of the plugin "Clean" (auto mode), "Go charge" (and also the battery level) should already work.

Thanks @mrbungle64 Please excuse my delayed response. Busy family stuff is going on. 😅
I was able to check the -beta.3 and the Battery level and charging state is showing up.
However, the clean button is not doing anything. "Go charge" is working on the other hand.
[9.12.2022, 11:00:59] [Deebot] [xxxx-xxxx-xxxx-xxxx-xxxx] receiving update [CleanReport: idle].
[9.12.2022, 11:00:59] [Deebot] [xxxx-xxxx-xxxx-xxxx-xxxx] receiving update [ChargeState: charging].
[9.12.2022, 11:00:59] [Deebot] [xxxx-xxxx-xxxx-xxxx-xxxx] receiving update [ChargeState: charging].
[9.12.2022, 11:00:59] [Deebot] [xxxx-xxxx-xxxx-xxxx-xxxx] receiving update [BatteryInfo: 100].
[9.12.2022, 11:00:59] [Deebot] [xxxx-xxxx-xxxx-xxxx-xxxx]receiving update [NetInfoIP: xxx.xxx.xxx.xx].
[9.12.2022, 11:00:59] [Deebot] [xxxx-xxxx-xxxx-xxxx-xxxx] receiving update [NetInfoMAC: xx:xx:xx:xx:xx:xx].
[9.12.2022, 11:00:59] [Deebot] [xxxx-xxxx-xxxx-xxxx-xxxx] receiving update [ChargeState: charging].
[9.12.2022, 11:02:00] [Deebot] [xxxx-xxxx-xxxx-xxxx-xxxx] current cleaning state [cleaning}].
[9.12.2022, 11:02:00] [Deebot] [xxxx-xxxx-xxxx-xxxx-xxxx] sending update [Clean_V2].

@DJay-X

However, the clean button is not doing anything.

This should be fixed with version 0.9.1-alpha.6 of the library
@bwp91, can you please bump the ecovacs-deebot.js version and release a new beta of your plugin? 😉

All done!

Thanks, @mrbungle64 @bwp91 The latest Version homebridge-deebot v5.3.2-beta.5 did the job. Clean for auto mode and "go charge" is working. 👍

Clean switch should stay on whilst device is in any form of clean mode, well, being report as one of ['auto', 'clean', 'edge', 'spot', 'spotarea', 'customarea'].
Would be interesting to see your logs to see what cleaning state is being reported for this switch to be turned off

I have the impression for the Z1 is "move" what is "clean" for deepot. 🤷♂
When the Clean button turns back to off, there is no output in the log.
[8.1.2023, 09:43:53] [Deebot] [xxxxxxx] receiving update [ChargeState: idle].
[8.1.2023, 09:43:53] [Deebot] [xxxxxxx] receiving update [CleanReport: move].
[8.1.2023, 09:43:53] [Deebot] [xxxxxxx] receiving update [ChargeState: idle].
[8.1.2023, 09:43:53] [Deebot] [xxxxxxx] receiving update [BatteryInfo: 100].
[8.1.2023, 09:44:04] [Deebot] [xxxxxxx] current charging state [returning].
[8.1.2023, 09:44:04] [Deebot] [xxxxxxx] sending update [Charge].
[8.1.2023, 09:44:05] [Deebot] [xxxxxxx] receiving update [CleanReport: returning].
[8.1.2023, 09:44:05] [Deebot] [xxxxxxx] current cleaning state [returning].
[8.1.2023, 09:44:05] [Deebot] [xxxxxxx] receiving update [ChargeState: returning].
[8.1.2023, 09:44:05] [Deebot] [xxxxxxx] current charging state [returning].
[8.1.2023, 09:44:15] [Deebot] [xxxxxxx] current cleaning state [cleaning}].
[8.1.2023, 09:44:15] [Deebot] [xxxxxxx] sending update [Clean_V2].
[8.1.2023, 09:44:16] [Deebot] [xxxxxxx] receiving update [CleanReport: move].
[8.1.2023, 09:44:16] [Deebot] [xxxxxxx] current cleaning state [move].
[8.1.2023, 09:44:16] [Deebot] [xxxxxxx] receiving update [ChargeState: returning].
[8.1.2023, 09:44:32] [Deebot] [xxxxxxx] current charging state [returning].
[8.1.2023, 09:44:32] [Deebot] [xxxxxxx] sending update [Charge].
[8.1.2023, 09:44:32] [Deebot] [xxxxxxx] receiving update [CleanReport: returning].
[8.1.2023, 09:44:32] [Deebot] [xxxxxxx] current cleaning state [returning].
[8.1.2023, 09:44:32] [Deebot] [xxxxxxx] receiving update [ChargeState: returning].

Hi @DJay-X sorry I appreciate some time has passed between your last message and you getting a reply.
I'm guessing you still have pending issues with regards to the plugin?
(apologies this is a bit of a generic reply to all outstanding issues on the plugin!)

Thanks @bwp91 With the latest version of the plugin, the basic functionality did work with the Z1. So this “Issue” can be closed.
Thanks again.


[WIP] #473 Auto-generation of common usage in components docs

Related issue
#473 [Docs/Automation] Inline basic Storybook stories into components docs
Scope of work
This closes #473.
Description
I just copy the commit message from the most important commit:

Instead of writing all common usage sections for our components docs
manually, this enables auto-generation of the example code blocks by
using the "common" stories in the storybook.
As parsing via regex is no viable solution – everything can happen inside
a story! it might have external dependencies referenced, or contain
characters that look like the end of a story although they're only part
of a string. So, the story has to be actually executed. Luckily, the
story is defined by a "story function" (storyFn) which describes the
template, props and components references. All that is passed to a
storiesOf function, more strictly the .add function of its return
type. As this is JS land, we can simply create a closure, so the
executed story will use our functions instead of the defined imports
inside the story file – those are simply removed before passing the story
file content to eval().
Extra work had to be done for the props: Those aren't simple objects we
can access from the storyFn but function calls. Those can be proxied via
previously closure functions too, so those are collected and later on
concatenated to build the final code block.
For the code block to look nicely formatted, prettier's API is used.
Side note: I disabled ESLint's no-unused-vars rule for the part where
the evaluated story code magic happens because it looks to the linter as
if it's unused. Using WebStorm you will still see many warnings in that
area because WS doesn't provide a way to disable the internal linter for
a specific block or section (the only other way is to use comments for
each and every line with "unused" definitions, or to disable the
inspection completely. Both ways are dumb.)

One of the notable changes in this PR is that I introduced "group IDs" for story knobs: That arranges all knobs defined in the storyFn into tab-able sections. So all props are under the tab "Props", besides the CSS modifiers; those live under "CSS Modifiers". Technically, more groups/tabs are possible but not useful at the moment (besides "Slots" for SfButton). This makes the knobs look cleaner IMHO, without "(prop)" after every prop. (Mind that the tab bar is not visible if all options in a story belong to the same groupId. So oftentimes when there are only props, it looks like before.)
Also, I removed the last pieces of the (actually nice but now unneeded) generateStorybookTable().
See commit list and messages for more details. And I tried to describe what's going on inside code comments (mainly in create-vue-components-docs.js).
Caveats :warning:

The iframe src link links to the "common" story in the storybook—which was introduced in this PR 😅 Hence the iframes render only the storybook error page. For testing this PR I will change the link temporarily to this PR's Netlify deployment. For local usage you can change the URL to localhost:6006 in create-vue-components-docs.js:856.
Some code examples got actually worse than the manually written that existed before (There weren't many but still.). E.g. some examples aren't interactive (e.g. SfBullets). This is quite expected imho and maybe more of a hint that our stories could get better. When they do, our common usage examples automagically ✨ get too. (cf. SfOverlay) 🎉
When there is no MD file for a component yet, the iframe renders in 100% width but with the default height your browser uses for iframes.
I've just noticed that there are unneeded imports in the generated code examples sometimes. They're from other stories in the stories file which aren't needed for the "common" story. I guess, I'll use a different imports detection in a subsequent commit.
There are components which don't render at all at the width VuePress outputs documents (max-width: 740px but SfTopBar needs 1025px). We need to decide how to handle those cases.

Screenshots of visual changes

Checklist

[x] I followed composition rules for my component
[x] I tested the component in most common device sizes (can be tested in Storybook from viewport addon in top menu)

I think we should merge this to another branch (or keep at WIP and push to this branch) and together work on our stories to remove:

inline CSS
wrappers (use docorators instead)
other redundant purely presentational stuff

Generally, we shouldn't merge it until we are happy with every common story.
WDYT?

Also @EduardDopler I don't know enough words to express how impressed I am :) What you've done is absolutely amazing!

Thank you @filrak :blush:
Sounds good to me; Let's keep this branch and push the needed changes to it.

@filrak I think it's wise to extract the changes which aren't 100% necessary for this PR and merge them separately. I mean things like

renaming all the first stories to "Common",
using group IDs for all knobs,
removing the last pieces of the vue-info addon.

Doing so, the new PR and this one will get a lot easier to reason about. Plus, we'll have fewer merge conflicts in this PR in the future.

Here is the PR for the changes which make sense outside of this PR: #491.
Once that one is merged, this PR's diff will get much simpler.

@filrak I added a new story for the decorator thing: #514. It is necessary for this story but itself doesn't require the changes from this PR; its merge target will be develop.
Merging strategy:

Merge #491 Structural changes for stories into develop
Merge PR of #514 Use Decorators in Stories into develop
Merge #502 Refactoring stories for new docs concept into this PR branch (can be done earlier)
(do more work in this PR like fixing imports)
Merge this PR branch into develop
Party hard. 🕺🏻

wdyt?

I also just noticed that you're generating default imports on docs when it should be a named import:
import SfBanner from "@storefront-ui/vue";

is present when it should be
import { SfBanner } from "@storefront-ui/vue";

@filrak You're totally right. I've committed a version which uses named imports. Also I've changed the behavior so now the imports are generated from the actually used components (as defined in the components: {} block in the component) – previously the imports were extracted as defined in the Storybook file, but there were the imports for all the stories not only for the "Common" story. This should be better now.

It is so awesome to see this PR merged ☺ 🎉
Thanks to all, especially @pspaczek for the rest of the work!