Supporting OpenSearch & ElasticSearch

o/. I just wanted to run this by you before we push any further with it.
Background: we run AWS and we prefer to use managed services as much as possible. As you know, ElasticSearch is not available as an AWS managed service anymore and they offer OpenSearch. So we were wondering if we could get the basic functionality working with OpenSearch and the result is the commit that comes with this PR.
However, obviously, I understand that you would not want to move away from ElasticSearch in your own infrastructure. Hence, I would like to discuss the possibility of supporting both engines in the code. That way, we do not have to fork the code and maintain it ourselves.
After sorting out OpenSearch, we want to help with or implement incremental scans.
rel: #113

Hiya, thanks a ton for making this PR! As you can see from the age of the ticket, it's really something we've been dragging our heels on.
The problem I have is that both us and a few of our customers are using Elastic cloud, the hosted offering by Elastic. Which - you guessed it - uses some sort of extra auth mechanism (cf. https://github.com/opensearch-project/opensearch-py/pull/104). So I'm a little worried that switching to this lib will make it impossible to connect to our cluster.
I think there's a couple of options:
a) I'm going to do some research on whether connecting opensearch-py to Elastic Cloud is a thing
b) We could support both libraries (because the world is an ugly place) via a wrapper library that equalises their call signatures. Would you perhaps be amenable to scope that out? It'll require much more testing etc. and is generally a bit of a bad solution.
c) ?? Any other ideas?

Hm, there's one more option, which I guess is to "crack" the ES client lib to remove the OpenSearch check.

I kinda think option B would be ideal here because I can see that these two diverging more and more. Both on the library side and the engine side. What I am trying to say is that: we might be able to get away with using opensearch-py or tricking elastic's client. However, it will be a temporary solution.
If you are happy with option B, I would get into implementing it*. Also, I only checked stuff up to index and match. If there are more places that I should check to make sure that they work, please let me know.
* any preferences about how? a base class with two subclasses and an env var to pick between them?

Hey! After some reflection I also agree that B's the way to go. Both ES and OS are very vocal that these are starting to be two different applications, and so the layering will have to grow deeper and deeper over time.
Regarding how: I guess class-based makes a lot of sense. One thing we should try and do is to wrap the exceptions that are being thrown and trade them in for our own SearchException so that we can still catch throwies at the appropriate point later.
If you do indexing and /match, I'm very happy to take care of /search and fetch (/entities).

Great. This is gonna be my todo list:

[ ] get yente to run on ECS with an OpenSearch cluster.
[ ] implement solution B.
[ ] get github actions to run the tests against both OpenSearch and ElasticSearch.

ok, after a bit of focusing on other stuff, I can work on this again. In the meantime, we have been running yente on ECS with an OpenSearch cluster. No issues and everything works as expected. However, I definitely like to wrap up what we discussed and upstream OS' support. Not a fan of running forks.

Hello all! We've now implemented OpenSearch support in main and are looking for some beta testers of this. Please let us know if you're interested in helping us stabilize this for release by running it in your targets environments for a day or two :)

Thank you @pudo. We are definitely going to take a stab at it and will get back with patches if we notice any issues. :-)

We'll try to set it up in our test environment as well, and report back!
Thank you!
Üdvözlettel:
Kizman József
On Wed, Jul 17, 2024 at 12:28 PM Behrooz Shabani @.***>
wrote:

Thank you @pudo https://github.com/pudo. We are definitely going to
take a stab at it and will get back with patches if we notice any issues.
:-)
—
Reply to this email directly, view it on GitHub
https://github.com/opensanctions/yente/pull/311#issuecomment-2232973347,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALI4WAR6TW7YWNNNS3JEXK3ZMZBOVAVCNFSM6AAAAABK76OLYCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMZSHE3TGMZUG4
.
You are receiving this because you commented.Message ID:
@.***>

Here's the announcement: https://www.opensanctions.org/articles/2024-07-24-yente4/

We're running yente in AWS EKS, would be great if it could use IAM Roles
for service accounts instead of configuring static access keys.
https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html
According to this it does not seem to support it yet:
https://www.opensanctions.org/faq/83/opensearch/
Üdvözlettel:
Kizman József
On Wed, Jul 24, 2024 at 10:08 AM Friedrich Lindenberg <
@.***> wrote:

Here's the announcement:
https://www.opensanctions.org/articles/2024-07-24-yente4/
—
Reply to this email directly, view it on GitHub
https://github.com/opensanctions/yente/pull/311#issuecomment-2247173498,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALI4WARZHPT6OFU52JE2OCLZN5OILAVCNFSM6AAAAABK76OLYCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENBXGE3TGNBZHA
.
You are receiving this because you commented.Message ID:
@.***>

That may be an issue with the documentation rather than the service: if you set YENTE_OPENSEARCH_SERVICE and YENTE_OPENSEARCH_REGION then it should be using whatever boto-compatible credentials it can find in the environment - I assume this also includes workload identity inside EKS. Worth a test?

Cheers!
Will definitely test!
Thanks!
On Thu, Jul 25, 2024 at 3:04 PM Friedrich Lindenberg <
@.***> wrote:

That may be an issue with the documentation rather than the service: if
you set YENTE_OPENSEARCH_SERVICE and YENTE_OPENSEARCH_REGION then it
should be using whatever boto-compatible credentials it can find in the
environment - I assume this also includes workload identity inside EKS.
Worth a test?
—
Reply to this email directly, view it on GitHub
https://github.com/opensanctions/yente/pull/311#issuecomment-2250270851,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALI4WAV3X45LQWRZQRJ4Z7TZODZS7AVCNFSM6AAAAABK76OLYCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENJQGI3TAOBVGE
.
You are receiving this because you commented.Message ID:
@.***>

Ran a test today with 4.0.0 on EKS and service account, resulting in this
error when running a reindex:
Traceback (most recent call last):
File "/app/yente/provider/init.py", line 49, in with_provider
provider = await _create_provider()
^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/yente/provider/init.py", line 25, in _create_provider
return await OpenSearchProvider.create()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/yente/provider/opensearch.py", line 54, in create
await es.cluster.health(wait_for_status="yellow", timeout=5)
File
"/venv/lib/python3.12/site-packages/opensearchpy/_async/client/cluster.py",
line 131, in health
return await self.transport.perform_request(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.12/site-packages/opensearchpy/_async/transport.py",
line 375, in perform_request
await self._async_call()
File "/venv/lib/python3.12/site-packages/opensearchpy/_async/transport.py",
line 198, in _async_call
await self._async_init()
File "/venv/lib/python3.12/site-packages/opensearchpy/_async/transport.py",
line 163, in _async_init
self.set_connections(self.hosts)
File "/venv/lib/python3.12/site-packages/opensearchpy/transport.py", line
255, in set_connections
connections = list(zip(map(_create_connection, hosts), hosts))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.12/site-packages/opensearchpy/transport.py", line
253, in _create_connection
return self.connection_class(metrics=self.metrics, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/venv/lib/python3.12/site-packages/opensearchpy/_async/http_aiohttp.py",
line 149, in init
self.headers.update(urllib3.make_headers(basic_auth=http_auth))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.12/site-packages/urllib3/util/request.py", line 121,
in make_headers
] = f"Basic {b64encode(basic_auth.encode('latin-1')).decode()}"
^^^^^^^^^^^^^^^^^
AttributeError: 'AWSV4SignerAuth' object has no attribute 'encode'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/venv/bin/yente", line 33, in
sys.exit(load_entry_point('yente', 'console_scripts', 'yente')())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.12/site-packages/click/core.py", line 1157, in
call
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.12/site-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/venv/lib/python3.12/site-packages/click/core.py", line 1688, in
invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.12/site-packages/click/core.py", line 1434, in
invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.12/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/yente/cli.py", line 44, in reindex
asyncio.run(update_index(force=force))
File "/usr/lib/python3.12/asyncio/runners.py", line 194, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/asyncio/base_events.py", line 687, in
run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/app/yente/search/indexer.py", line 204, in update_index
async with with_provider() as provider:
File "/usr/lib/python3.12/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/app/yente/provider/init.py", line 52, in with_provider
await provider.close()
^^^^^^^^
UnboundLocalError: cannot access local variable 'provider' where it is not
associated with a value
ENV Settings look like this:
export set YENTE_INDEX_TYPE="opensearch"
export set YENTE_INDEX_URL="https://redacted"
export set YENTE_OPENSEARCH_REGION="eu-central-1"
export set YENTE_OPENSEARCH_SERVICE="es"
export set YENTE_INDEX_CA_PATH="/tmp/bimaxi.crt"
Seems to be related to this fix:
https://github.com/opensearch-project/opensearch-py/pull/547
Üdvözlettel:
Kizman József
On Thu, Jul 25, 2024 at 7:36 PM József Kizman @.***> wrote:

Cheers!
Will definitely test!
Thanks!
On Thu, Jul 25, 2024 at 3:04 PM Friedrich Lindenberg <
@.***> wrote:

That may be an issue with the documentation rather than the service: if
you set YENTE_OPENSEARCH_SERVICE and YENTE_OPENSEARCH_REGION then it
should be using whatever boto-compatible credentials it can find in the
environment - I assume this also includes workload identity inside EKS.
Worth a test?
—
Reply to this email directly, view it on GitHub
https://github.com/opensanctions/yente/pull/311#issuecomment-2250270851,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALI4WAV3X45LQWRZQRJ4Z7TZODZS7AVCNFSM6AAAAABK76OLYCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENJQGI3TAOBVGE
.
You are receiving this because you commented.Message ID:
@.***>

Tried 4.1 release, and getting a different error now:
Traceback (most recent call last):
File "/venv/bin/yente", line 33, in
sys.exit(load_entry_point('yente', 'console_scripts', 'yente')())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.12/site-packages/click/core.py", line 1157, in call
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.12/site-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/venv/lib/python3.12/site-packages/click/core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.12/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.12/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/yente/cli.py", line 44, in reindex
asyncio.run(update_index(force=force))
File "/usr/lib/python3.12/asyncio/runners.py", line 194, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/app/yente/search/indexer.py", line 188, in update_index
async with with_provider() as provider:
File "/usr/lib/python3.12/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/app/yente/provider/init.py", line 47, in with_provider
provider = await _create_provider()
^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/yente/provider/init.py", line 25, in _create_provider
return await OpenSearchProvider.create()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/yente/provider/opensearch.py", line 54, in create
await es.cluster.health(wait_for_status="yellow", timeout=5)
File "/venv/lib/python3.12/site-packages/opensearchpy/_async/client/cluster.py", line 131, in health
return await self.transport.perform_request(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.12/site-packages/opensearchpy/_async/transport.py", line 375, in perform_request
await self._async_call()
File "/venv/lib/python3.12/site-packages/opensearchpy/_async/transport.py", line 198, in _async_call
await self._async_init()
File "/venv/lib/python3.12/site-packages/opensearchpy/_async/transport.py", line 163, in _async_init
self.set_connections(self.hosts)
File "/venv/lib/python3.12/site-packages/opensearchpy/transport.py", line 255, in set_connections
connections = list(zip(map(_create_connection, hosts), hosts))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.12/site-packages/opensearchpy/transport.py", line 253, in _create_connection
return self.connection_class(metrics=self.metrics, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.12/site-packages/opensearchpy/_async/http_aiohttp.py", line 149, in init
self.headers.update(urllib3.make_headers(basic_auth=http_auth))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib/python3.12/site-packages/urllib3/util/request.py", line 121, in make_headers
] = f"Basic {b64encode(basic_auth.encode('latin-1')).decode()}"
^^^^^^^^^^^^^^^^^
AttributeError: 'AWSV4SignerAuth' object has no attribute 'encode'


Suggestion: have measures define their own units

Currently, the output renderers have the responsibility of assigning units to the measures. For instance:
let () =
  Bechamel_notty.Unit.add Instance.monotonic_clock "ns";
  Bechamel_notty.Unit.add Instance.minor_allocated "words";
  Bechamel_notty.Unit.add Instance.major_allocated "words";
  (* run benchmark *)

I consider this to be backwards: the provider of the monotonic_clock instance is the only one who knows what its units are, as they are providing the get : unit -> float function for this particular measure. I propose adding the following field to the S.MEASURE signature:
val unit : witness -> string option

(Leaving the None case for unit-less quantities like major_collections.) The renderer would then consume measures as { name: string; unit: string option } products (rather than the current string just for the name), and be responsible for rendering that appropriately.
An alternative that gives more flexibility to the renderer would be to have each MEASURE define its own unit type (like [> `Words ] or an extensible variant), which the renderer / user can then supply a to_string function for.

I agree that the measure should have its unit - currently, it does not do that due to a separation between the layout logic and the core (I mean, it's useless to know the unit when we benchmark - but it's not when we want to show result). I will make a PR about that next week,

An alternative that gives more flexibility to the renderer would be to have each MEASURE define its own unit type (like [> `Words ] or an extensible variant), which the renderer / user can then supply a to_string function for.

Hmmhmm, it's possible indeed but I think it's not necessary (or too over enginering for a small improvement).


Feedback for the user

How should we give feedback to the user regarding things such as:

Failed requests(eg. fetching bookings)
Bad login credentials

Could we implement this in the designs?

@MRTNKCR

Will take care of this, thanks for the reminder

Here is the response from the design team @jalbertsr :

Failed request should be solved the same way as usual error message.
Regarding the login - keep in mind that input components have error messages included

So the failed request should involve showing a SystemError alert as in here ?


feature to save scores

simple functionality to save top 3 high scores
additional button in options menu to display high scores.

Added the backend logic for saving the top 3 high scores to leaderboard.txt

Do you have the assets ready for the leaderboard ? Would need a "leaderboard.png" or something as the button

Do you have the assets ready for the leaderboard ? Would need a "leaderboard.png" or something as the button

Any updates ?

Any updates ?

@bjuspi sorry, I'm caught up with some work. We'll update :D

@bjuspi sorry, I'm caught up with some work. We'll update :D


Update iterators-and-generators-javascript.md

Fixed last example

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot

@Mikejo5000 Mike can you take a look at the merge conflicts here and resolve?


correct string formats

I have correct the string formats in some scanf and printf functions

Codecov Report

Merging #5456 into master will decrease coverage by <.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #5456      +/-   ##
==========================================
- Coverage   82.85%   82.85%   -0.01%
==========================================
  Files         134      134
  Lines      147814   147814
==========================================
- Hits       122478   122474       -4
- Misses      25336    25340       +4

Impacted Files
Coverage Δ

src/libvterm/src/parser.c
90.16% <ø> (ø)
:arrow_up:

src/libvterm/src/pen.c
91.01% <ø> (ø)
:arrow_up:

src/ui.c
72.32% <ø> (-0.09%)
:arrow_down:

src/drawline.c
84.64% <0%> (-0.14%)
:arrow_down:

src/gui_gtk_x11.c
57.96% <0%> (-0.1%)
:arrow_down:

src/channel.c
84.22% <0%> (-0.08%)
:arrow_down:

src/os_unix.c
63.55% <0%> (-0.05%)
:arrow_down:

src/terminal.c
81.85% <0%> (+0.03%)
:arrow_up:

src/gui.c
63.63% <0%> (+0.05%)
:arrow_up:

... and 1 more

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 41a4141...e1661ec. Read the comment docs.

Thanks, I can include that.  Please also send the libvterm changes to the original libvterm maintainers, hopefully we don't divert too much.

ping @leonerd

Hi. Thanks. Turns out only one of those two is still present in latest development source anyway. Shall apply there.


Improve build reproducibility/consistency

I run into a lot of build system problems. For various reasons, builds are inconsistent. It'd save us a lot of time and aggravation if we put some effort into nixifying or partially nixifying the build.

@enolan let's enumerate more details of the issues:

dune/ocaml ? injects datestamps and other meta data in to binaries - cannot produce identical binary from same source code

some code parameters (eg snark pv keys) are generated at compile time and thus not easy to reproduce. (a cached copy of re-usable keys is included in CI builds, but this breaks whenever the snark code is modified)

The things I'm thinking of:

opam switch import doesn't seem to actually pin the dependencies versions. We see rebuilds in CI that should be cached, and what gets rebuilt changes when we haven't changed the opam.export file
Vendored dependencies pinned with opam pin add are A) global to the current switch, so things may break if you have more than one checkout on your machine and B) not upgraded automatically.  This leads to breakage.
The docker toolchain images can get out of sync with the actual contents of the repo fairly easily. coda-toolchain contains a version of the kademlia executable that it pulls in from apt when the container is built. We also build all the opam dependencies when we build the image, so if they change and the image isn't updated the CI build will be incorrect.
Build products are tossed whenever you change profiles, leading to excessive rebuilds
You have to install our patched version of RocksDB globally.

Re Joel's points:

Bit-for-bit reproducible builds is an admirable goal, especially if we want to convince people we're not sneaking backdoors into published binaries, but I don't think we should prioritize it highly if it's hard.
I don't know how this works. Is the fix as simple as just fixing a random seed? Obviously for production we can't do that, but for CI that would be easy.

@bkase has a tentative plan to move to a Nix based system sometime after launch.


Using ngModel with  breaks page nav or display

Ionic version:  (check one with "x")
(For Ionic 1.x issues, please use https://github.com/ionic-team/ionic-v1)
[ ] 2.x
[x] 3.x
[ ] 4.x
I'm submitting a ...  (check one with "x")
[x] bug report
[ ] feature request
Please do not submit support requests or "How to" questions here. Instead, please use one of these channels: https://forum.ionicframework.com/ or http://ionicworldwide.herokuapp.com/
Current behavior:
When adding [(ngModel)]="selectedCategory" to a <ion-select> element in a page,
the page does not display anymore:

If I try to access the page from a classic Push, the redirection does not occur.
If I try to access the page from a deeplink, I got a blank page displayed (even if when I'm looking at Chrome inspector, I can see that everything seems to be loaded).

As soon as I remove the [(ngModel)]="selectedCategory", everything works normally again.
There is no error in the console.
Expected behavior:
[(ngModel)]="selectedCategory" does not break anything.
Steps to reproduce:
cf. related code
Related code:
html
<form (ngSubmit)="onSubmit()" #f="ngForm" autocomplete="off">

    <ion-list no-margin>
      <ion-item no-margin no-lines>
        <ion-select style="max-width: 100%; padding-left: 0;"
                    interface="action-sheet"
                    [(ngModel)]="selectedCategory"
                    required
                    placeholder="Choisissez un sujet">
        <!-- <ion-options here> -->
        </ion-select>
      </ion-item>
    </ion-list>

</form>

typescript
@IonicPage()
@Component({
  selector: 'page-feedback',
  templateUrl: 'feedback.html',
})
export class FeedbackPage implements OnInit {
  @ViewChild('f') feedbackForm: NgForm;

  selectedRating: string;  // This uses ngModel too, but this one makes no problem!
  selectedCategory: string;

Other information:

Ionic info: (run ionic info from a terminal/cmd prompt and paste output below):
cli packages: (/usr/local/lib/node_modules)

    @ionic/cli-utils  : 1.14.0
    ionic (Ionic CLI) : 3.14.0

local packages:

    @ionic/app-scripts : 2.1.4
    Ionic Framework    : ionic-angular 3.7.1

System:

    Node : v8.7.0
    npm  : 5.4.2
    OS   : macOS Sierra

Misc:

    backend : legacy

It required a name attribute to work.


Create GETTINGSTARTED.md

If I remember right this doesn't actually work end-to-end yet (right)?  So these instructions are just a start?

correct. these are a stub that needs to be completed.

So what review is requested here?

I can close this out and someone else can pick up the branch I guess.


Runtests parallel

Run tests in parallel. Default to running four subsets at once (plus a very small 'everything else' category).
Drawbacks:

In order to avoid mocha writing multiple progress bars to the console, parallel tests just write a summary when they're done.
fourslash server tests take a long time, so total time is only about halved rather than quartered.

On my old Surface Pro (2 cores), test time drops from around 7 minutes to around 6 minutes. On my "server-class" machine (12 slow-ish cores), test time drops from around 9 minutes to around 5 minutes. So you may only get a speed improvement with at least 4 cores, at least until I can figure out what to do about fourslash.
Everything except fourslash server tests finishes in 1-2 minutes.

:+1:

:tada: :balloon:

:+1: :trophy: :birthday: :+1:


[docs] Add FlyWeekend in showcase

Add the FlyWeekend (https://flyweekend.co) site to the showcase page

@tjl9 Thanks, I wish you good luck with your project :).

Thanks @oliviertassinari !


match argument handling

I'm having trouble setting the match argument to a specific language. For example
notedown --nomagic --match=stata StataIntro.md > StataIntro.ipynb
Traceback (most recent call last):
  File "/home/izahn/.local/bin/notedown", line 11, in <module>
    sys.exit(app())
  File "/home/izahn/.local/lib/python3.5/site-packages/notedown/main.py", line 312, in app
    main(args, help=parser.format_help())
  File "/home/izahn/.local/lib/python3.5/site-packages/notedown/main.py", line 275, in main
    notebook = reader.read(ip, as_version=4)
  File "/usr/lib/python3.5/site-packages/nbformat/v4/rwbase.py", line 89, in read
    return self.reads(nbs, **kwargs)
  File "/home/izahn/.local/lib/python3.5/site-packages/notedown/notedown.py", line 376, in reads
    return self.to_notebook(s, **kwargs)
  File "/home/izahn/.local/lib/python3.5/site-packages/notedown/notedown.py", line 368, in to_notebook
    cells = self.create_cells(blocks)
  File "/home/izahn/.local/lib/python3.5/site-packages/notedown/notedown.py", line 347, in create_cells
    markdown_cell = self.create_markdown_cell(block)
  File "/home/izahn/.local/lib/python3.5/site-packages/notedown/notedown.py", line 323, in create_markdown_cell
    markdown_cell = nbbase.new_markdown_cell(**kwargs)
  File "/usr/lib/python3.5/site-packages/nbformat/v4/nbbase.py", line 112, in new_markdown_cell
    validate(cell, 'markdown_cell')
  File "/usr/lib/python3.5/site-packages/nbformat/v4/nbbase.py", line 23, in validate
    return validate(node, ref=ref, version=nbformat)
  File "/usr/lib/python3.5/site-packages/nbformat/validator.py", line 156, in validate
    raise better_validation_error(e, version, version_minor)
  File "/usr/lib/python3.5/site-packages/nbformat/validator.py", line 152, in validate
    return validator.validate(nbjson, {'$ref' : '#/definitions/%s' % ref})
  File "/usr/lib/python3.5/site-packages/jsonschema/validators.py", line 123, in validate
    raise error
jsonschema.exceptions.ValidationError: None is not valid under any of the given schemas

Failed validating 'oneOf' in schema['properties']['source']:
    {'oneOf': [{'type': 'string'},
               {'items': {'type': 'string'}, 'type': 'array'}]}

On instance['source']:
    None

Any help will be appreciated.

That's because I hard coded in a small set of languages and didn't fix the general case. Will make a fix. Your code blocks start with something like ```stata right?

Yes, I have org-mode files converted to markdown via pandoc, which produces stata code blocks just as you describe. I also have a bunch of example blocks that should not be converted to inputs, hence my attempt to set match=stata.
Thanks for looking into it, let me know if there is anything I can help with.

As I noted in https://github.com/aaren/notedown/commit/7cb0f22c2de41c0f408b86a65e5b8ce1ad6215b1 line 200 of notedown.py has print 'jazz', which breaks python 3. I corrected that in a local branch but I still get
notedown --nomagic --match=stata StataIntro.org
Traceback (most recent call last):
  File "/home/izahn/.local/bin/notedown", line 9, in <module>
    load_entry_point('notedown==1.5.0', 'console_scripts', 'notedown')()
  File "/home/izahn/.local/lib/python3.5/site-packages/notedown/main.py", line 312, in app
    main(args, help=parser.format_help())
  File "/home/izahn/.local/lib/python3.5/site-packages/notedown/main.py", line 275, in main
    notebook = reader.read(ip, as_version=4)
  File "/usr/lib/python3.5/site-packages/nbformat/v4/rwbase.py", line 89, in read
    return self.reads(nbs, **kwargs)
  File "/home/izahn/.local/lib/python3.5/site-packages/notedown/notedown.py", line 380, in reads
    return self.to_notebook(s, **kwargs)
  File "/home/izahn/.local/lib/python3.5/site-packages/notedown/notedown.py", line 372, in to_notebook
    cells = self.create_cells(blocks)
  File "/home/izahn/.local/lib/python3.5/site-packages/notedown/notedown.py", line 351, in create_cells
    markdown_cell = self.create_markdown_cell(block)
  File "/home/izahn/.local/lib/python3.5/site-packages/notedown/notedown.py", line 327, in create_markdown_cell
    markdown_cell = nbbase.new_markdown_cell(**kwargs)
  File "/usr/lib/python3.5/site-packages/nbformat/v4/nbbase.py", line 112, in new_markdown_cell
    validate(cell, 'markdown_cell')
  File "/usr/lib/python3.5/site-packages/nbformat/v4/nbbase.py", line 23, in validate
    return validate(node, ref=ref, version=nbformat)
  File "/usr/lib/python3.5/site-packages/nbformat/validator.py", line 156, in validate
    raise better_validation_error(e, version, version_minor)
  File "/usr/lib/python3.5/site-packages/nbformat/validator.py", line 152, in validate
    return validator.validate(nbjson, {'$ref' : '#/definitions/%s' % ref})
  File "/usr/lib/python3.5/site-packages/jsonschema/validators.py", line 123, in validate
    raise error
jsonschema.exceptions.ValidationError: None is not valid under any of the given schemas

Failed validating 'oneOf' in schema['properties']['source']:
    {'oneOf': [{'type': 'string'},
               {'items': {'type': 'string'}, 'type': 'array'}]}

On instance['source']:
    None

Can you provide a minimal example input that reproduces the error?

Oops, my mistake, I messed up the input file. It runs without errors now, thank you!

No problem.
The fix is merged to master now. I'll probably make a release soon but you can install from master in the meantime.


Tower charts are instantaneously lost if an option disable the Upper background

Should definitely have a separate class, game breaking bug

Actually doesn't occur, the problem was on a specific chart because LIFE=0


RFAM database

https://rfam.xfam.org
https://docs.rfam.org/en/latest/database.html
can maybe use this database

RFAM seems to focus more on rna, rRNA, regulatory  stuff. Less of the functional genes seem to be tagged with rfam.

closed as unnecessary because RFAM does not look directly at cds/genes


added wifi switch

This pull request adds a simple wifi switch to the already existing network switch. I am using this feature with nm-applet frequently to save energy and have been eager to use it with mncli-dmenu for a long time.

Nice job, thanks for the contribution!
Scott


Oddities with Base kind

          This is still odd, but now I understand the problem. Turns out that implementing this is a bit more involved.

In this test
fn make_eq_hash() -> impl Eq + Hash
    0
}

fn id<T as base>(x: T) -> T[x] {
    x
}

fn test00() {
    let z = mk_eq_hash();
    id(z);
}

At the point we call id we have λ. impl Eq + Hash  as the generic argument, i.e., a lambda with no parameters. That's already wrong at many levels. Arguments of kind base should be a lambda with exactly one parameter. So there's a problem when we generate the instantiation here https://github.com/flux-rs/flux/blob/main/crates/flux-middle/src/global_env.rs#L341. I think we need to do this check before we instantiate the arguments or make the instantiation itself check it.
We can ponder this later though. The change is a bit orthogonal to the rest of the changes in the PR. I would revert the changes and remove the associated tests, so we can tackle it later.
Originally posted by @nilehmann in https://github.com/flux-rs/flux/pull/542#discussion_r1380571866

Fixed in https://github.com/flux-rs/flux/pull/622


The parens of arrow functions should be highlighted as javascriptParens

I found that the parentheses of arrow functions are highlighted as javascriptArrowFuncDef in the current master branch.
Shouldn't they be highlighted as javascriptParens instead?

Yes, but current javascriptParens is normal group (no special color).
I will fix this issue when supporting destructing parameter

Thanks for reply.
Because I use after/syntax/javascript.vim to change the colors of some groups, it is a bit strange to highlight javascriptArrowFuncDef and javascriptParens with the same color. (Although only the parentheses of arrow functions will be highlighted as javascriptArrowFuncDef.)

A good timing for ask for your opinion on parens.
I am trying to support destructing argument #109
The code will be something like:
function ({a, b}) {}
({a,b}) => {}
([a,b,c,d]) => {}

Do you have any idea on how to highlight the (), [], {} in this code snippets ?

I will highlight them as usual (javascriptParen, javascriptBrackets, javscriptBraces) personally.
IMO, I think we can give them special groups so that users can change the color by themselves via after/syntax/javascript.vim.
But I'm not sure what the default highlight colors for these groups should be.

Thank you, now they are normal javascriptParen, javascriptBrackets, javscriptBraces.
No special highlight now.

Great! Thanks :smile:

Oh, I found that the original problem still exists.
Will this be fixed?

Yes, fixing


chore: Replace link tag with embedded fonts.

The goal of this PR is to embed Google fonts into the project rather than load them via the Internet. This is important because the dashboard will be deployed to environment with slow or non-existent connectivity to 3rd party web services.
To test this PR, you just need to run npm start. I suggest using a Chrome plugin called WhatFont which is available at: https://chrome.google.com/webstore/detail/whatfont/jabopobgcpjmedljpbcaablpmlmfcogm?hl=en
Once the plugin is installed and your restart your browser, you can click on text and see the actual typography being rendered. It should be the following when you click on a title in the sidebar:

Resolves #209

LGTM


quiche: remove dummy.h, dummy.cc, dummy_test.cc

Signed-off-by: Bence Béky<EMAIL_ADDRESS>For an explanation of how to fill out the fields, please see the relevant section
in PULL_REQUESTS.md
Description: remove three files that are not part of any build target.
Risk Level: low
Testing: n/a
Docs Changes: n/a
Release Notes: n/a
[Optional Fixes #Issue]
[Optional Deprecated:]

Are there build files that need updating?
/wait-any

Are there build files that need updating?
/wait-any

I do not believe so.  No files in the Envoy repository other than the removed ones contain any of the strings "dummy.h", "dummy.cc", or "dummy_test.cc".


feat(integrations): Improve checkpoint functionality of WandbLogger

What does this PR do?

Fixes #<issue_number>

Before submitting

Was this discussed/agreed via a GitHub issue? (not for typos and docs)
[ ] Did you read the contributor guideline, Pull Request section?
[ ] Did you make sure your PR does only one thing, instead of bundling different changes together?
Did you make sure to update the documentation with your changes? (if necessary)
Did you write any new necessary tests? (not for typos and docs)
[ ] Did you verify new and existing tests pass locally with your changes?
Did you list all the breaking changes introduced by this pull request?
Did you update the CHANGELOG? (not for typos, docs, test updates, or minor internal changes/refactors)

PR review
Anyone in the community is welcome to review the PR.
Before you start reviewing, make sure you have read the review guidelines. In short, see the following bullet-list:

Reviewer checklist

[ ] Is this pull request ready for review? (if not, please submit in draft mode)
[ ] Check that all items from Before submitting are resolved
[ ] Make sure the title is self-explanatory and the description concisely explains the PR
[ ] Add labels and milestones (and optionally projects) to the PR so it can be classified

📚 Documentation preview 📚: https://pytorch-lightning--19297.org.readthedocs.build/en/19297/

@awaelchli Would love some 👀 on this

@ash0ts Would you mind adding a unit test as well for the added functionality?

Merged https://github.com/Lightning-AI/pytorch-lightning/pull/19288 into this as similar checkpointing functionality controls

@awaelchli I added the unit tests for the new functionality. Let me know if I'm missing anything!

@awaelchli Any oppositions to a PR check here?


Add datagrid-prop to suppress warning

Warning is "MUI: The page size  is not preset in the Add it to show the pagination select."

With this change we remove the pageSize select by default.
The warning was shown when pageSize didn't match 10, 25, 50 or 100 (=default value of rowsPerPageOptions)?

With this change we remove the pageSize select by default.
There is no pageSize-select by default.

The warning was shown when pageSize didn't match 10, 25, 50 or 100 (=default value of rowsPerPageOptions)?
This is correct, but since the default value of pageSize is 20 the warning was shown until the pageSize was set manually to one of the default values.

Do you suggest something different?

Yes: why not change the default pageSize to 25
You're right, this fits better to the default settings of the Data Grid. Changed.

Yes: why not change the default pageSize to 25

Should we change this in the API (and generator) as well?

Good idea! I added a commit which changes the the default value in the api.


rez-depends -- AttributeError: type object 'Bar' has no attribute 'del' (win, py-3, rez-2.47.7)

Hey guys!
I found a new bug in rez-depends. I'll see if I can fix it on my day off if it's helpful :)
C:\Users\willjp>rez-depends rez
Searching [################################] 8/8
#0: rez
#1: rezgui
Exception ignored in: <bound method ProgressBar.__del__ of <rez.util.ProgressBar object at 0x0000013998C0A4E0>>
Traceback (most recent call last):
  File "c:\users\willjp\documents\rez\install\lib\site-packages\rez\util.py", line 32, in __del__
    Bar.__del__(self)
AttributeError: type object 'Bar' has no attribute '__del__'

Hey @willjp, any contribution is welcome and will always be helpful :) Feel free to fix it on your side and push a PR.

thanks!  I'll take a look tomorrow or Friday :)
Just for clarity in terms of ettiquette - it's better to create the issue first, then reference it in the PR right?

Generally speaking yes. You can refer to https://help.github.com/en/github/managing-your-work-on-github/closing-issues-using-keywords on how to mention the issue in your PR, so that the issue is automatically closed once the PR is merged.

Thank you for the kind words, and the link! :)


Developing plugin in c++ sometimes make script mandatory, or require godot-code change

Operating system or device - Godot version:
2+
Issue description:
Some functions only use script-methods, the equivalent in C++ is missing.
So when developing a plugin in c++ only,
this requires workarounds like generating a script by code or manipulate godot-code
example:
It is not possible to select a spatial derived object (by raycast) in the spatial editor, if the editor_plugin is done in C++ and the object is not one of the "built-ins".
Expected
all builtin-functions avail to scripting, should be avail to c++ too.
for this example:
maybe a virtual method similar to EditorPlugin::create_spatial_gizmo(..)
which is called prior to "script"-solution.
or even better add a virtual method get_gizmo_type to spatial itself.
Link to minimal example project:
some detail to the above example:
workaround 1 (generate script in c++, so this works):
Ref<SpatialEditorGizmo> EditorPlugin::create_spatial_gizmo(Spatial *p_spatial) {
	//??
	if (get_script_instance() && get_script_instance()->has_method("create_spatial_gizmo")) {
		return get_script_instance()->call("create_spatial_gizmo", p_spatial);
	}

	return Ref<SpatialEditorGizmo>();
}

workaround 2 (edit godot code, my favorite solution):
one could add a virtual function to EditorPlugin and override it in the custom plugin
then call it in create_spatial_gizmo prior to script search.
workaround 3 (worst one, the whole method is unlucky design)
append the custom spatial to the case list of SpatialEditorGizmos::get_gizmo(Spatial *p_spatial)

sorry, it seems this is more a question than an issue...

BTW, related to #7779


ByteConverterTest fails on Windows because of different new line characters

The tests:

ByteConverterTest.testByteArray
ByteConverterTest.testByteProperty

fails on windows as the unix style new line is hard coded to test string. Windows requires "\r\n" instead of "\n".

A fix propsal as diff because I'm currently not familar wth pull request workflow.
fix1752.diff.txt

Created a fix Pull Request: #1754


Wait for <IP_ADDRESS>:8080 instead of localhost:8080

Hi all
Wait for <IP_ADDRESS>:8080 instead of localhost:8080
In GenericContainer class, it exists a method waitingFor, that waits for status code 200 as reponse from the server.
I am running a web application in a container and use <IP_ADDRESS> as host instead of localhost.
When I try to run the sbt test, I've got following timeout:
[sweetsoft/sapmock:latest] - Could not start container
org.testcontainers.containers.ContainerLaunchException: Timed out waiting for container port to open (localhost ports: [8080] should be listening)

I am using the test container as the following:
final class MessageSpec extends BddSpec
  with ForAllTestContainer
  with BeforeAndAfterAll {

  override val container = FixedHostPortGenericContainer("sweetsoft/sapmock",
    waitStrategy = Wait.forHttp("/"),
    exposedHostPort = 8080,
    exposedContainerPort = 8080,
  )

  override def beforeAll(): Unit = {

  }

  feature("Process incoming messages") {
    info("As a user, I want that incoming messages is going to process appropriately.")
    info("A message should contain the following properties: `sap_id`, `sap_event`, `payload`")

When I would remove waitStrategy = Wait.forHttp("/"), then it works fine but with waitStrategy = Wait.forHttp("/")
it goes into the timeout.
How to tell the Testcontainer to listen on <IP_ADDRESS> instead of the localhost?
I have described the problem with the localhost here: https://stackoverflow.com/questions/56201718/why-does-the-client-can-not-connect-to-localhost8080/56201938?noredirect=1#comment99027626_56201938
Thanks

Hi @bifunctor !
First of all, I'm trying to run your code but it looks like sweetsoft/sapmock is not a public container. Could you provide reproducible code, this will greatly simplify the search for a solution.
Are you sure that you need FixedHostPortGenericContainer? By default, testcontainers uses the random port and binds it for you. FixedHostPortGenericContainer is not recommended for most cases.

Hi LMnet
First of all, thanks for your response. I will publish the sweetsoft/sapmock container at this evening, because
I am at work now.
I am using FixedHostPortGenericContainer, because I do not know, how to get the random port.
I could not find the property, that provides the port like for Java:
https://www.testcontainers.org/features/networking/
Integer firstMappedPort = container.getFirstMappedPort();

How to get the random port?
Thanks

Here is the GenericContainer example in the docs: https://github.com/testcontainers/testcontainers-scala#generic-container.
You should add port you want to expose from the container in the exposedPorts argument. After that, you will be able to get mapped port with the mappedPort method. Like this:
override val container = GenericContainer("nginx:latest",
  exposedPorts = Seq(80)
)

"some test" in {
  container.mappedPort(80) // will return random mapped port
}

Hi @LMnet
Sorry for the late response. I uploaded the docker image to dockerhub and you can find it here https://hub.docker.com/r/kostonstyle/sapmock. The source code from the project, can be found here https://gitlab.com/sweetsoft/sapmock.
I've changed as you told me as the following:
inal class MessageSpec extends BddSpec
  with ForAllTestContainer
  with BeforeAndAfterAll {

  override val container = GenericContainer("sweetsoft/sapmock",
    exposedPorts = Seq(8080)
  )

  override def beforeAll(): Unit = {

  }

  feature("Process incoming messages") {
    info("As a user, I want that incoming messages is going to process appropriately.")
    info("A message should contain the following properties: `sap_id`, `sap_event`, `payload`")

    scenario("Message is not intended for the server") {
      Given("A message with `sap_id:unknown`")
      val req = SapRequestMsg("unknown", "unknown", "{foo: foo}")
      When("the message gets validated")
      val ws = WsClient.send(container.mappedPort(8080))(req)

But I've still got the message:
org.testcontainers.containers.ContainerLaunchException: Timed out waiting for container port to open (localhost ports: [32778] should be listening)
What am I doing wrong?
Thanks

I didn't see from the docker ps output that your application exposes 8080 port: ports block is empty. Try to check your app.
I suggest you to try to run your application from the command line first, and after that integrate it with testcontainers.

Hi @LMnet
I've tried to run the server application from the commnad line and it works.
The container was started with following docker command:
 docker run -d -p 8080:8080 ....

and I could reached the web application via the browser. But with sbt test statement and got the timeout exception.
I am using https://github.com/sbt/sbt-native-packager to publish the docker image on local and as
you can see below, the exposed port is in https://gitlab.com/sweetsoft/sapmock/blob/master/build.sbt as the following:
enablePlugins(JavaServerAppPackaging)
enablePlugins(DockerPlugin)
enablePlugins(GitVersioning)
dockerExposedPorts := Seq(8080)

git.formattedShaVersion := git.gitHeadCommit.value map { sha =>
  s"$sha".substring(0, 7)
}

dockerUpdateLatest := true
dockerAlias := DockerAlias(None, Some("kostonstyle"), (packageName in Docker).value, git.gitDescribedVersion.value)

As mentioned above, starting the application manually with docker command, I have the access to the application.
But when I run the sbt test command, I've got the timeout exception.
The best way to figure out, what I mean is, to download the source code from the application on https://gitlab.com/sweetsoft/sapmock and
run the command sbt docker:publishLocal, then sbt test and you will see the timeout exception.
Thanks for your help.

That is the whole log:
21:19:40.046 [pool-7-thread-6] ERROR 🐳 [kostonstyle/sapmock:latest] - Could not start container
org.testcontainers.containers.ContainerLaunchException: Timed out waiting for container port to open (localhost ports: [32770] should be listening)
        at org.testcontainers.containers.wait.strategy.HostPortWaitStrategy.waitUntilReady(HostPortWaitStrategy.java:47)
        at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:35)
        at org.testcontainers.containers.wait.HostPortWaitStrategy.waitUntilReady(HostPortWaitStrategy.java:23)
        at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:35)
        at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:582)
        at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:259)
        at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:212)
        at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:76)
        at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:210)
        at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:199)
        at org.testcontainers.containers.GenericContainer.starting(GenericContainer.java:714)
        at org.testcontainers.containers.TestContainerAccessor$.starting(TestContainerAccessor.scala:13)
        at com.dimafeng.testcontainers.TestContainerProxy.starting(TestContainer.scala:106)
        at com.dimafeng.testcontainers.TestContainerProxy.starting$(TestContainer.scala:106)
        at com.dimafeng.testcontainers.SingleContainer.starting(TestContainer.scala:111)
        at com.dimafeng.testcontainers.ForAllTestContainer.run(TestContainer.scala:67)
        at com.dimafeng.testcontainers.ForAllTestContainer.run$(TestContainer.scala:63)
        at com.sweetsoft.MessageSpec.org$scalatest$BeforeAndAfterAll$$super$run(MessageSpec.scala:6)
        at org.scalatest.BeforeAndAfterAll.liftedTree1$1(BeforeAndAfterAll.scala:213)
        at org.scalatest.BeforeAndAfterAll.run(BeforeAndAfterAll.scala:210)
        at org.scalatest.BeforeAndAfterAll.run$(BeforeAndAfterAll.scala:208)
        at com.sweetsoft.MessageSpec.run(MessageSpec.scala:6)
        at org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:317)
        at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:510)
        at sbt.TestRunner.runTest$1(TestFramework.scala:113)
        at sbt.TestRunner.run(TestFramework.scala:124)
        at sbt.TestFramework$$anon$2$$anonfun$$lessinit$greater$1.$anonfun$apply$1(TestFramework.scala:282)
        at sbt.TestFramework$.sbt$TestFramework$$withContextLoader(TestFramework.scala:246)
        at sbt.TestFramework$$anon$2$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:282)
        at sbt.TestFramework$$anon$2$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:282)
        at sbt.TestFunction.apply(TestFramework.scala:294)
        at sbt.Tests$.$anonfun$toTask$1(Tests.scala:309)
        at sbt.std.Transform$$anon$3.$anonfun$apply$2(System.scala:46)
        at sbt.std.Transform$$anon$4.work(System.scala:67)
        at sbt.Execute.$anonfun$submit$2(Execute.scala:269)
        at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
        at sbt.Execute.work(Execute.scala:278)
        at sbt.Execute.$anonfun$submit$1(Execute.scala:269)
        at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
        at sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
21:19:40.092 [pool-7-thread-6] ERROR 🐳 [kostonstyle/sapmock:latest] - Log output from the failed container:
Server online at <IP_ADDRESS> on the port 8080

Press RETURN to stop...

Look at the end, it starts the container. But it should start before this message appears
21:19:40.046 [pool-7-thread-6] ERROR 🐳 [kostonstyle/sapmock:latest] - Could not start container
Thanks

I did some research and I've found, that something is not right here:

Maybe it helps

I tried to use your container from the command line:
➜  ~ docker run -it  -p 32878:8080 kostonstyle/sapmock
Server online at <IP_ADDRESS> on the port 8080
Press RETURN to stop...

Here is docker ps output:
CONTAINER ID        IMAGE                               COMMAND                  CREATED             STATUS              PORTS                     NAMES
4d075be5bbee        kostonstyle/sapmock                 "/opt/docker/bin/sap…"   4 seconds ago       Up 2 seconds        <IP_ADDRESS>:32878->8080/tcp   gracious_burnell

It looks like docker successfully bound 32878 host port to the 8080 container port.
In another terminal I tried to use wget to communicate with the app:
➜  ~ wget http://localhost:32878/
--2019-05-23 13:14:02--  http://localhost:32878/
Resolving localhost (localhost)... <IP_ADDRESS>
Connecting to localhost (localhost)|<IP_ADDRESS>|:32878... connected.
HTTP request sent, awaiting response... 404 Not Found
2019-05-23 13:14:02 ERROR 404: Not Found.

But as you can see from the output, it returns 404. That's why Testcontainers can't start your container.
I didn't deeply dive in your application code, but I think that issue is on the application side. Try to use steps above to reproduce the problem and solve it.

You are right. I corrected the error and pushed the new changes to the docker hub https://cloud.docker.com/u/kostonstyle/repository/docker/kostonstyle/sapmock.
I run the container after the change as the following:
docker run -it  -p 32878:8080 kostonstyle/sapmock
Server online at <IP_ADDRESS> on the port 8080
Press RETURN to stop...
And on the other window, I did:
wget <IP_ADDRESS>:32878
--2019-05-23 18:50:28--  http://<IP_ADDRESS>:32878/
Connecting to <IP_ADDRESS>:32878... connected.
HTTP request sent, awaiting response... 200 OK
Length: 31 [text/html]
Saving to: ‘index.html’

index.html          100%[===================>]      31  --.-KB/s    in 0s

2019-05-23 18:50:28 (7.20 MB/s) - ‘index.html’ saved [31/31]

As you can see, I've got now the response code 200.
Running 'sbt test', I've still got the error message:
0},com.github.dockerjava.core.exec.ExecCreateCmdExec@48011915
18:57:34.472 [pool-7-thread-2] ERROR 🐳 [kostonstyle/sapmock:latest] - Could not start container
org.testcontainers.containers.ContainerLaunchException: Timed out waiting for container port to open (localhost ports: [32773] should be listening)

I do not know anymore, what should I do.
Thanks

I think I found the problem. After starting your application is waiting for the user input. When user press enter — application stops. But it will work only with the interactive console mode. Try to run your app in docker from the command line without -it flags — it will immediately stop. Testcontainers don't start containers in the interactive mode. So, in case of testcontainers your app will stop right after the start.
To fix the problem your application should be able to work in the daemon mode.

Wow....Thanks so much for your help. It works!!!!!! 1000 thanks.

@LMnet great job! thank you for helping 👍


update syntax for importing Mapping from collections.abc

Without this change, I get the following warning:
/home/jeff/miniconda3/lib/python3.7/site-packages/anndata/readwrite/write.py:2
  /home/jeff/miniconda3/lib/python3.7/site-packages/anndata/readwrite/write.py:2: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
    from collections import Mapping

thanks! must’ve been PyCharm, I always import it from there!


SKEMA Reference Solving

Currently the reference solving throws a NotImplementedException, because you figured it out. It's not implemented! :D
What needs to be done (This is written in the SKEMA Spec):

Find out if there are any strongly connected components.

Replace all references with it's definition.

For this to work properly, optional entries must be supported first. See #32

Another one in the wrong repo...


Add updaterTicker that can be overwritten in tests.

Fixes #4565
I wasn't sure if this should be configurable via command line option or in the config file, but if it's only for testing within the discovery package, I didn't want to expose modification of the value outside the package.
@krasi-georgiev

Thanks for working on this! I'm working on a PR (should be sent soon) that will fix this as well as adding more unit tests for the discovery manager.

This is #4582. I've added you as a co-author as I "stole" from your PR for the ticker field.

Thanks for reviewing @simonpasquier! Should I close this PR?

Yes please.

And again thanks for your work!


Polish sql and redis sample doc

Codecov Report

Merging #122 into master will decrease coverage by 0.08%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master     #122      +/-   ##
============================================
- Coverage     41.76%   41.67%   -0.09%
- Complexity      146      147       +1
============================================
  Files            59       59
  Lines           771      775       +4
  Branches         45       45
============================================
+ Hits            322      323       +1
- Misses          419      422       +3
  Partials         30       30

Impacted Files
Coverage Δ
Complexity Δ

...nfigure/context/AzureContextAutoConfiguration.java
25% <0%> (ø)
2% <0%> (+1%)
:arrow_up:

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 5849377...5ddb745. Read the comment docs.


[triton] Update triton

Describe the pull request

What does your PR fix?

Updates Triton to a newer code version

Which triplets are supported/not supported? Have you updated the CI baseline?

Same as before

Does your PR follow the maintainer guide?

Yes

Thanks for the clarification. It should be good to go now

@illera88 Thanks for the update!
@dg0yt Thanks for the review!


Scheme for automatically handling remote queue backlog / failures / scaling

See discussion on #1931
Problem we want to protect against it gradual increase in sample/s eventually causing the remote storage queues to drop samples silently.  Ideally we'd be able to automatically scale the parallelisation.

Closing in favour of #2445, where the discussion is happening.


Non 500 errors should not throw exceptions in exception-handler

Non 500 errors should not throw exceptions in exception-handler

Done


log.exportResolvedPaths { local_options }

A problem which I usually face, and probably other users, too, is the correct declaration of relative paths, especially of those ones which are related to foreign packages/modules config options.
I suggest a new option to be created; the log.exportResolvedPaths one, which records all resolved options paths in a user friendly form such as:
relative_file_path, absolute_file_path, Option.property_name, relative_path_set, ABOSLUTE_PATH_resolved
and exports them either to the terminal or to a file.
local_options would include properties such as:
include, exclude, columnsDisplayed: string[], exportTo: terminal|'path_to_log_file'
Moreover, showResponseTime option would also be moved under the log option as log.showResponseTime.
Additional notes:

Instead of an option, it could be a plugin.
A maxFilesNo property may be set, to control the files per directory that are exported when regex is used.

Can you describe it more with example configurations?

Note: I have added additional notes in the first message.
Yes, of course. For example:
start({
  rootDir: process.cwd(),
  cacheDir: './.reboost_cache',
  entries: [
    ['./src/index.js', './public/dist/index.js']
  ],
  contentServer: {
    root: './public'
    },
    index: 'index.html'
  },
  resolve: {
    alias: {
      ConfigFiles: './.config_files',
      Public: './public',
      Src: './src'
    },
  },
  sourceMaps: {
    include: /.*/,
    exclude: /node_modules/
  },
  watchOptions: {
    include: /.*/,
    exclude: /\..*|node_modules|.*.json|.*.code-workspace|reboost.js/,
    chokidar: {
      cwd: process.cwd()
      }
    }
  },
  plugins: [
    UsePlugin({
      include: /.(png|jpg|jpeg)$/i,
      exclude: /.*/,
      use: FilePlugin()
    }),
    UsePlugin({
      include: /.*/,
      exclude: /node_modules/,
      use: BabelPlugin()
    }),
    CSSPlugin({
      modules: {
        test: /\.module\./i
      }
    })
  ]
})

When
  log.exportResolvedPaths: {
    include: /.*/,
    exclude: /node_modules/,
    columnsDisplayed: ['relative_file_path', 'absolute_file_path', 'Option.property_name', 'relative_path_set', 'ABOSLUTE_PATH_resolved'],
    exportTo: 'terminal',
    maxFilesNo: 5
  }

then, the following should be given:

relative_file_path
absolute_file_path
Option.property_name
relative_path_set
ABOSLUTE_PATH_resolved

./reboost.js
/home/... /project/reboot.js
rootDir
./
/home/... /project/

"-"
"-"
cacheDir
./.reboost_cache/
/home/... /project/.reboost_cache/

"-"
"-"
contentServer.root
./public/
/home/... /project/public/

"-"
"-"
contentServer.index
./public/index.html
/home/... /project/public/index.html

"-"
"-"
resolve.alias.ConfigFiles
./.config_files/
/home/... /project/.config_files/

"-"
"-"
resolve.alias.Public
./public/
/home/... /project/public/

"-"
"-"
resolve.alias.Src
./src/
/home/... /project/src/

"-"
"-"
sourceMaps.include
The first 5 files per directory
The first 5 files per directory

"-"
"-"
sourceMaps.exclude
./node_modules/
/home/... /project/node_modules/

...
...
...
...
...

"-"
"-"
watchOptions.chokidar.cwd
./
/home/... /project/

...
...
...
...
...

This should also include imports and requires from every single file; for example:
test.js
import { a, b } from './.../tester'
...

relative_file_path
absolute_file_path
Option.property_name
relative_path_set
ABOSLUTE_PATH_resolved

./.../test.js
/home/... /project/.../test.js
a, b
./.../tester.js
/home/... /project//.../tester.js

We do not really need it, too! You may keep it as a low priority feature in future when all other high priorities will have been settled down and you'll wonder what else small features can be added to "improve/develop" the project.


Add LibMan CLI doc

Fixes https://github.com/aspnet/Docs/issues/7246
For consistency, this doc was heavily influenced by the .NET Core CLI doc pages. For example: https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-test?tabs=netcore21
Internal Review Page

@justcla please review.


docs: update device type names for Raspberry Pi 4

Change-type: patch
Thanks!

Hey @peterblazejewicz ! Thanks so much for the contribution. There's a small mistake in that the machine name for the Pi 4 is actually raspberrypi4-64. I was in the process of adding this and the Pi 3 one anyway, so this is superseded by https://github.com/balena-io/docs/pull/1179

@chrisys thanks for update! Appreciate you're working on the PIs!


Back button appears on root template if it's a list

If you set your root template as list template, you will see a "Back" button at the top, even though there is no where to go back to. Pressing the button does nothing.
This is caused by these lines in RNCarPlay.m, specifically adding a back button to list templates:
CPBarButton *backButton = [[CPBarButton alloc] initWithTitle:@" Back" handler:^(CPBarButton * _Nonnull barButton) {
    [self sendEventWithName:@"backButtonPressed" body:@{@"templateId":templateId}];
    [self popTemplate:false];
}];
[listTemplate setBackButton:backButton];

If you comment these lines out, the back button disappears.
It would make sense either for the back button to be an option for the template, or to be removed when the template is mounted as the root.

You can now pass backButtonHidden flag to disable the back button.


choco package?

Hello!
I recently found this plugin. So there are two docker-machine driver plugins for Windows VMware Workstation.
This one is great as it has Linux support which I'm looking for to have a Linux driver for WSL (but that' probably another issue/pull request).
A cool start would be a Chocolatey package so Windows users can easily install it.
As I've made the choco package for the other driver I adjusted the package code and it already works:
PS C:\> choco install -y vmwareworkstation docker docker-machine
PS C:\> choco install docker-machine-vmware -pre -source .
Chocolatey v0.10.11
Installing the following packages:
docker-machine-vmware
By installing you accept licenses for the packages.

docker-machine-vmware v0.1.0
docker-machine-vmware package files install completed. Performing other installation steps.
The package docker-machine-vmware wants to run 'chocolateyinstall.ps1'.
Note: If you don't run this script, the installation will fail.
Note: To confirm automatically next time, use '-y' or consider:
choco feature enable -n allowGlobalConfirmation
Do you want to run the script?([Y]es/[N]o/[P]rint): y

C:\ProgramData\chocolatey\lib\docker-machine-vmware\bin
Downloading docker-machine-vmware 64 bit
  from 'https://github.com/machine-drivers/docker-machine-driver-vmware/releases/download/v0.1.0/docker-machine-driver-vmware_windows_amd64.exe'
Progress: 100% - Completed download of C:\ProgramData\chocolatey\lib\docker-machine-vmware\bin\docker-machine-driver-vmware.exe (6.87 MB).
Download of docker-machine-driver-vmware.exe (6.87 MB) completed.
Hashes match.
C:\ProgramData\chocolatey\lib\docker-machine-vmware\bin\docker-machine-driver-vmware.exe
 ShimGen has successfully created a shim for docker-machine-driver-vmware.exe
 The install of docker-machine-vmware was successful.
  Software install location not explicitly set, could be in package or
  default install location if installer.

Chocolatey installed 1/1 packages.
 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).

Did you know the proceeds of Pro (and some proceeds from other
 licensed editions) go into bettering the community infrastructure?
 Your support ensures an active community, keeps Chocolatey tip top,
 plus it nets you some awesome features!
 https://chocolatey.org/compare
PS C:\vagrant\choco-docker-machine-vmware> docker-machine create -d vmware default
Creating CA: C:\Users\vagrant\.docker\machine\certs\ca.pem
Creating client certificate: C:\Users\vagrant\.docker\machine\certs\cert.pem
Running pre-create checks...
(default) Image cache directory does not exist, creating it at C:\Users\vagrant\.docker\machine\cache...
(default) No default Boot2Docker ISO found locally, downloading the latest release...
(default) Latest release for github.com/boot2docker/boot2docker is v18.06.0-ce
(default) Downloading C:\Users\vagrant\.docker\machine\cache\boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v18.06.0-ce/boot2docker.iso...
(default) 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%
Creating machine...
(default) Copying C:\Users\vagrant\.docker\machine\cache\boot2docker.iso to C:\Users\vagrant\.docker\machine\machines\default\boot2docker.iso...
(default) Creating SSH key...
(default) Creating VM...
(default) Starting default...
(default) Waiting for VM to come online...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: C:\ProgramData\chocolatey\lib\docker-machine\bin\docker-machine.exe env default

PS C:\> docker-machine env | iex
PS C:\> docker version
Client:
 Version:      17.10.0-ce
 API version:  1.33
 Go version:   go1.8.3
 Git commit:   f4ffd25
 Built:        Tue Oct 17 19:00:02 2017
 OS/Arch:      windows/amd64

Server:
 Version:      18.06.0-ce
 API version:  1.38 (minimum version 1.12)
 Go version:   go1.10.3
 Git commit:   0ffa825
 Built:        Wed Jul 18 19:13:39 2018
 OS/Arch:      linux/amd64
 Experimental: false

Do you want to take over the choco package sources into this repo so it can be added to a release step to build and push the choco package eg. from an AppVeyor CI build.
The choco package sources are at https://github.com/StefanScherer/choco-docker-machine-vmware and you can find a first successful build of the choco package and a small test if the driver works theoretically.
https://ci.appveyor.com/project/StefanScherer/choco-docker-machine-vmware/build/<IP_ADDRESS>
AppVeyor can't run VMware VM's, but the driver at least creates the machine folder.
So it's some kind of integration test.

I've pushed the first choco package https://chocolatey.org/packages/docker-machine-vmware - it's pending the automatic tests.
For now users can run
choco install -y docker-machine-vmware -pre

to install the driver plugin.

Choco package got released :-)


Class 'codeception\fixtures\XxxFixture' not found

I got the following error while I was running the test method:
PHP Fatal error:  Class 'codeception\fixtures\XxxFixture' not found in D:\PhpProjects\example\tests\codeception\unit\models\XxxTest.php on line 14
PHP Stack trace:
PHP   1. {main}() C:\Users\Administrator\AppData\Roaming\Composer\vendor\codeception\codeception\codecept:0
PHP   2. Codeception\Application->run() C:\Users\Administrator\AppData\Roaming\Composer\vendor\codeception\codeception\codecept:33
PHP   3. Symfony\Component\Console\Application->run() C:\Users\Administrator\AppData\Roaming\Composer\vendor\codeception\codeception\src\Codeception\Application.php:103
PHP   4. Symfony\Component\Console\Application->doRun() C:\Users\Administrator\AppData\Roaming\Composer\vendor\symfony\console\Application.php:118
PHP   5. Symfony\Component\Console\Application->doRunCommand() C:\Users\Administrator\AppData\Roaming\Composer\vendor\symfony\console\Application.php:187
PHP   6. Symfony\Component\Console\Command\Command->run() C:\Users\Administrator\AppData\Roaming\Composer\vendor\symfony\console\Application.php:820
PHP   7. Codeception\Command\Run->execute() C:\Users\Administrator\AppData\Roaming\Composer\vendor\symfony\console\Command\Command.php:256

<?php

namespace codeception\fixtures;

use yii\test\ActiveFixture;

class XxxFixture extends ActiveFixture
{
    public $modelClass = 'app\models\Xxx';
}

<?php

namespace tests\codeception\unit\models;

use app\models\Xxx;
use codeception\fixtures\XxxFixture;
use yii\codeception\TestCase;

class XxxTest extends TestCase
{
    public function fixtures()
    {
        return [
            'profiles' => XxxFixture::className(),
        ];
    }
}

Hello xiaoxing598,
wich version of codeception do you have installed?

@Julian-B90
Yes, I'm sure.
>codecept --version
Codeception version 2.2.5

the codeception namespace seems to be C:\Users\Administrator\AppData\Roaming\Composer\vendor\codeception
shouldnt you change the namespace to that one of you app.

@dynasource I use the overall installation codeception, In the direction that you put forward, how should I change?

Sorry i have forget this.
Please note, that the GitHub Issue Tracker is for bug reports and feature requests only.
Can you add you Question to the Forum?

what is the path of XxxFixture and how did you generate it?

@dynasource
I created this class in IDE, in accordance with the document requirement inherited from ActiveFixture

what is the filepath of XxxFixture

@dynasource
D:\PhpProjects\example\tests\codeception\fixtures\XxxFixture.php
D:\PhpProjects\example\tests\codeception\unit\fixtures\data\xxx.php

<?php

namespace tests\codeception\fixtures\;

use yii\test\ActiveFixture;

class XxxFixture extends ActiveFixture
{
    public $modelClass = 'app\models\Xxx';
}

as you can see, your IDE has created your fixture inside your Application. You should update the configuration of your IDE to match with the paths in your Application. @Julian-B90 shows in his answer the namespace which should be working.

@Julian-B90 @dynasource
Thank you very much for two big bull help, really because of the namespace problem, I follow the example of Julian-B90 to do, found that the problem is solved. Thank you very much.


Enable optional Parallel runs

at the moment all prs commits etc are sequential.
For large numbers, adding parallel processing could improve the user experience by accelerating the feedback loop.

Started working on this, just to validate the proposed workflow:

new flag incremental for commit, toggled off by default
if activated:

it will start by printing the git diff (I suggest running -U1 which will only print a single line above and below the change), then
then it will print the files that are untracked and will be added as part of the commit
ask for user confirmation (there's already a prompt module in the project)
if green light, go ahead with the commit
if not, add to skip

Does this workflow look alright?


Class does not exist error 0

Hi,
I am using https://github.com/ThingEngineer/PHP-MySQLi-Database-Class to interact with MySql DB.
Below one is my /core/Model.php
<?php

namespace Core;
use App\Config;
use MysqliDb;

/**
* Base model
*
* PHP version 7.0
*/

abstract class Model
{
    /**
     * Get the database connection
     *
     * @return mixed
     */

    public static function getDB()
    {

        static $db = null;
        if ($db === null) {
            $db = new MysqliDb(Config::DB_HOST, Config::DB_USER, Config::DB_PASSWORD, Config::DB_NAME);
        }
        return $db;
    }
}

I am fetching the history from DB like below App/Models/History.php
<?php

namespace App\Models;

use \Core\View;

/**

* Example user model

*
* PHP version 7.0
*/

class History extends \Core\Model
{

    /**
     * Get all the users as an associative array
     *
     * @return array
     */

    public static function getHistory()
    {
        if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
            echo "0.0 We don\'t have mysqli!!! \n";
        } else {
            echo "0.1 Phew we have it! \n";
        }

        // Get result of the query.
        try {
             $db = static::getDB();
            $db->join("bet_info bi", "bui.betid=bi.id", "INNER");
             $db->where('userid', 1);
             return $db->get ("bet_users_info bui", null, "bui.userid, bi.sha256, bi.md5, bi.crash_value, bui.cashout, bui.bet_amount, bui.profit_amount");
        } catch (\Exception $e) {
            echo $e->getMessage();
        }
    }
}

Everything working fine I am able to get the Data and display in the UI.
**$history = History::getHistory();**

        View::renderTemplate('Home/index.html',[

            'busting_values' => $history

        ]);

But when I call same getHistory() from my websocket's Socket.php I am getting below error
Class mysqli does not exist
Here is my websoket's code
<?php

namespace App\Controllers;

use App\Models\History;

use Ratchet\MessageComponentInterface;

use Ratchet\ConnectionInterface;

class Socket implements MessageComponentInterface {

    protected $clients;

    public function __construct()

    {

        $this->clients = new \SplObjectStorage;

    }

    public function onOpen(ConnectionInterface $conn) {

        // Store the new connection in $this->clients

        $this->clients->attach($conn);

        echo "New connection! ({$conn->resourceId})\n";

    }

    public function onMessage(ConnectionInterface $from, $msg) {

        foreach ( $this->clients as $client ) {

            if ( $from->resourceId == $client->resourceId ) {

                continue;

            }

            $obj = json_decode($msg, false);

            $bet_request = $obj -> bet_request;

            $bet_id = $bet_request -> bet_id;

            **$history = History::getHistory();**

            $historyJson = json_encode($history);

            echo "history json is:";

            echo $historyJson;

            $client->send("<b style='color: darkgreen;'>$bet_id :</b> $historyJson");

        }

    }

    public function onClose(ConnectionInterface $conn) {

    }

    public function onError(ConnectionInterface $conn, \Exception $e) {

    }

}

I am struggling to resolve this issue. Could you please help me why it is working fine when I call getHistory() from Controller. Why it is not working when I call from Socket.php.

Hi Siva, I just replied to this in the same question you posted in the Q&A section in Udemy. Please just post your questions there as the discussion will benefit other students on the same course. Thanks

The issue is an extension not enabled inside the php.ini file. After uncommenting mysqli, found no issues.


[TOB-OUSD-022] Add test

@tomlinton @DanielVF Don't think it's reproducible after pulling changes from PR #375. Closing this for now.


Dynamic Dependencies doesn't support Elevation

Dynamic Dependencies relies on PackagedCOM, but PackagedCOM types are not visible to elevated processes. Thus the Dynamic Depednencies and Bootstrapper APIs fail when called by an elevated process.
Elevated processes need to be supported.
DynDep uses of PackagedCOM:

DataStore - DynamicDependencies  API uses a PackagedCOM OOP Server to store persisted package dependency definitions in Project Reunion's Main (PRmain) package's ApplicationData if MddCreatePackageDependencyOptions::ScopeIsSystem is not specified (definitions are directly written to a location under Program Data if ScopeIsSystem is specified, and nothing's persisted if MddPackageDependencyLifetimeKind::Process is specified).
LifetimeManager - the LifetimeManager is a PackagedCOM OOP Server to indicate to the Deployment pipeline a specific framework package is in use (and thus do not remove it).

MddCore::DataStore::GetDataStorePathForUser() can be changed to get the path to PRmain's ApplicationData via Windows.ApplicationModel.ApplicationDataManager rather than asking the PackagedCOM if the process is elevated (or possibly in all cases).
The LifetimeManager isn't so easily solved. DynDep needs a process running with PRddlm's identity from the call to MddBootstrapInitialize until MddBootstrapShutdown (or process death). PackagedCOM provides a convenient solution to reliable lifetime management e.g. what if someone doesn't call MddBootstrapShutdown. An alternative mechanism is needed.
One option is a defining the DDLM process as an application with full-trust RuntimeBehavior=packagedClassicApp. ActivateApplication would be needed with a parameter (e.g. process id) so the process can WaitOnSingleObject(OpenProcess(ProcessIdToHandle(args.pid)), INFINITE) to detect if the MddBootstrapInitialize caller terminates without calling MddBootstrapShutdown and self-terminate.
ProcessId isn't a great answer as Windows can reuse them e.g. caller terminates and a new process created between CreateProcess(ddlm) and OpenProcess(ProcesIdToHandle(args.pid)). A better answer is a uniquely named IPC mechanism e.g. CreateNamedPipe(name); CreateProcess(ddlm.exe, cmdline=name);.
It's possible for Deployment to terminate the DDLM process (if a DeploymentOptions 'Force' option is specified). The termination semantics have changed over the years so we'd need to make sure our PackagedCOM replacement provides the expected outcome regardless the Windows version we run on.
It seems plausible an alternative to PackagedCOM can be found. Further investigation into the fine print is needed.

when will this bug be fixed?

Elevation support is on the roadmap for 1.1


Ensure we error on warnings from distributed

There's an extra ] character which is causing warnings coming from distributed to not be elevated to errors. This PR removes the extra ].

yikes!

Whoops, it looks like the warning / error in test_map_partitions_df_input could have been genuine. Testing over in https://github.com/dask/dask/pull/8025


Lecture options UI, add settings, remove hover

This PR adjusts lecture options to match DataScience UI.

Hover actions removed
Clicking "View Source" opens popup with GitHub options
Clicking settings cog displays popup with launcher options
Clicking "Launch Notebook" opens notebook in new window

OK, sounds good to me. We'll stick with preview for now


Disable Rails/PluckId cop by default

This cop was originally disabled with the original rubocop import: https://github.com/standardrb/standard-rails/commit/71e48d5e0af91061b3097a4ac8796776e831c908#diff-da3213a24b350fa386ff3bab0d6b239112408c3fe4f986cbd9d5236f7e0b61e4R458-R463
It was subsequently enabled during a mass enable commit: https://github.com/standardrb/standard-rails/commit/24bc50f5228015b806aa46fff9a5b33bfd8f3558#diff-da3213a24b350fa386ff3bab0d6b239112408c3fe4f986cbd9d5236f7e0b61e4R248-R249
As discussed on this issue, the cop is unsafe by default and frequently gets false positives: https://github.com/rubocop/rubocop-rails/issues/301
It is disabled by default in most recent rubocop release, for same reasons: https://github.com/rubocop/rubocop-rails/blob/v2.25.0/config/default.yml#L746-L751
Discussion of why to disable on: https://github.com/standardrb/standard-rails/issues/31

@mjankowski if you have a moment -- could you scan thru the rubocop-rails to make sure we're not enabling anything that's disabled-by-default over there?

Sure thing, quick summary here. Here are the cops which have Enabled: false in rubocop-rails (as of their main branch today), and their corresponding values in standard-rails…

ActionFilter — true
DefaultScope — false
EnvironmentVariableAccess — true
OrderById — true
PluckId — false (as of this PR)
RequireDependency — false
ReversibleMigrationMethodDefinition — true
SaveBang — true
SchemaComment — false
TableNameAssignment — false
UnusedIgnoredColumns — true

That’s more than I expected that are disabled in the rubocop-rails default config, but enabled in standard-rails. Let me know if any of the following would be useful:

If you want a sort of default policy that anything which is disabled in rubocop-rails should also be disabled in standard-rails (ie, s-r is a subset of rc-r, or at most the same) I could do a PR to disable more of these … and maybe add test coverage that would help identify any disabled-there-enabled-here gaps that show up during version bumps?
If it should be more case by case, I could open one issue per cop (looks like 6 cases to consider) with the history of it being enabled in s-r, why it's disabled in rc-r (if I can figure that out quickly) and sort through them all that way?

Originally discussed here - https://github.com/standardrb/standard-rails/pull/36#issuecomment-2131229240
I did a little more digging through the cops referenced in that previous comment RE: the cops which are disabled by default in rubocop-rails but current enabled in standard-rails. Summary...
Rails/SaveBang
Discussed elsewhere, PR open to disable - https://github.com/standardrb/standard-rails/pull/37
Rails/ActionFilter
Standard Rails history: was false in original import, enabled in the bulk enable commit.
This cop is actually deprecated since it detects something from older versions of Rails no longer supported by rubocop - https://github.com/rubocop/rubocop-rails/pull/1149 ... probably makes sense to also disable in S-R?
Rails/EnvironmentVariableAccess
Voted yes during railsconf talk, enabled after that. Upon further review, there is a rubocop-rails side TODO that this will switch to pending in future release. Probably makes sense to keep enabled.
Rails/OrderById
Standard-Rails history: false in original import, enabled in bulk enable commit.
Disabled in rubocop-rails since introduction - https://github.com/rubocop/rubocop-rails/pull/323 - concerns about legitimate cases of wanting to order by ID. Might make sense to disable.
Rails/ReversibleMigrationMethodDefinition
S-R history: false in original import, enabled in bulk enable
Disabled on rubocop-rails side since introduction - https://github.com/rubocop/rubocop-rails/pull/457 - no real explanation/discussion about why.
Rails/UnusedIgnoredColumns
Voted yes during railsconf talk
The rubocop-rails disable was only ~2 months ago, explanation in https://github.com/rubocop/rubocop-rails/pull/1252 - gist of it is possible diffs between dev/prod DBs creating issues.

Wow thanks @mjankowski! I'd support disabling all these but Rails/EnvironmentVariableAccess, I guess, then

Cool - I'll do individual PRs and try to include full rationale/context.

From that original list, these have all been disabled in merged PRs -- SaveBang, ActionFilter, UnusedIgnoredColumns -- with links to rationable of why they were disabled on rubocop-rails side.
There's also an open PR to disable OrderById
We decided to leave EnvironmentVariableAccess enabled.
That leaves ReversibleMigrationDefinition as the last remaining "disabled by default in rubocop-rails but currently enabled in standard-rails" cop. I haven't opened PR for that one because I can't really find an explanation of why it's disabled by default (other than maybe a convention of doing that in initial PR when first proposing a new cop) ... and what it does (check for either a change method or up+down methods in migrations) seems mostly useful to me.

I agree on ReversibleMigrationDefinition, it seems like a smart thing to include until/unless we know anyone has been burned by it. @koic, do you think Rails/ReversibleMigrationDefinition should be on-by-default in rubocop-rails?


passing empty struct to .Updates updates ALL rows data (which is bad)

eg. from your docs db.Model(&user).Updates(User{Name: "hello", Age: 18})
If you pass in a nil &user, gorm updates all rows in DB, instead of producing an error.  Is that the desired behavior?  To me I would rather it throw an error, as it has burned me a few times.  Or a flag to enable such more strict behavior.
Thanks!

I'll had that while trying to test error on Update, I can't generate error if

The object I want to update does not exist (but that's not an issue as I think it create it instead)
Old AND/OR new object DOES NOT MEET Database definition.

The second case is quite an issue. I have an error if I try to create data that does not fit the database model declaration but not on the update ?

I had some more thoughts on this too, how a solution might look in gorm to prevent this.  I am not sure if it is idiomatic gorm/golang but I will put it out here.  Add something like ErrorOnNilObject to the gorm api.  Eg.
db.Model(&a).ErrorOnNilObject().Updates(User{SetupCompletedAt: now})

Similar to how .Debug() works, there could also be an option to enable it globally.  If enabled, it would throw a nil object error if any value passed in to the query builder is nil.  Thoughts?

Ben stung by this also, if nil object then tantrum maybe

db.BlockGlobalUpdate(true)


fix: Print schema with directives

Fixes https://github.com/aerogear/graphback/issues/1089
This fix prints custom directives to the final schema

@craicoverflow Strange that we do not have any snapshot for verifying this schema. Would it be possible to add one (SDL string) to see outputs for example model

@craicoverflow Strange that we do not have any snapshot for verifying this schema. Would it be possible to add one (SDL string) to see outputs for example model

Yeah it seems like an important one to have! Of course!

@wtrocki there is a snapshot but it did not have any custom directives - and it used printSchema this stripping out custom directives. Added in https://github.com/aerogear/graphback/pull/1147/commits/981da21886503f3b11131b303fe2a65c1f61d974

Perfect


[Thermal Expansion 4.1.2-240 & Mekanism-1.7.10-<IP_ADDRESS>0] Tesseract connection issue

When i use an universal elite cable to pump rf into a tesseract, no energy gets delivered to the destination tesseract.
If i change the last cable with an Thermal Expansion Energyduct all works fine as expected.
here is a picture:
http://imgur.com/NrDFxyU

A TE interaction issue has already been posted, rest assured that I'll take a look as soon as I can :)


bypassable safe mode by final user

Using "/search?q=${searchQuery}${this.safe}" gives the window for the final user to add "&safe=off" to the searchQuery disabling the google safe search feature, given that the google engine looks for the first defined criteria and ignores subsequent definitions of the same criteria.
I have tried to use "safe=active" before "search?q=" without success as it return a 404 error page or to the main google search page.
If anyone finds a good and reasonable clue of how to avoid this behavior, please reply to this issue.

I used a replace() function as a temporary fix that could avoid the recognition of the "&safe=".
const result = await google.scrape(query.replace(/&safe=/g, ""), 20)

This is just temporary tho, it's still recomended to find a definitive solution.

I feel ashamed to notice just now how easy the fix was -_- https://github.com/pevers/images-scraper/pull/67


Use military 24H clock or display AM/PM

The component looks great but doesn't differentiate between AM/PM. or show 24 hour clock
This example
<Timeline items={[
          {ts: new Date(), text: 'date obj'},
          {ts: `${new Date()}`, text: 'interpolated'},
          {ts: new Date().toISOString(), text: 'iso'},
          {ts: new Date().toGMTString(), text: 'gmt'},
          {ts: new Date().toDateString(), text: 'date'}
        ]} />

Outputs the times
date obj = 03:15
interpolated = 03:15
iso = 03:15
gmt = 03:15
date = 12:00

Regardless of morning or afternoon/evening (Tested this at separate times from 8 am to 3pm)

Request to fix is in the Timeline.js, line 13: change date.format('hh:mm'), to date.format('HH:mm'), or date.format('hh:mm a').
Alternatively, allow users option to pass time format specified in module docs or by referring user to Moment.js docs.

I have the same requirement.

Same

v3.0.0 has format property.  For formatting options check momentjs format docs.
// default format is "hh:mm"
<Timeline items={events} format="hh:mm a" />

@matt6frey Sorry for the delay. Thank you for your suggestions it helped to make the changes easily.

I think the version you meant is v0.3.0.

v3.0.0 has format property. For formatting options check momentjs format docs.
// default format is "hh:mm"
<Timeline items={events} format="hh:mm a" />

@matt6frey Sorry for the delay. Thank you for your suggestions it helped to make the changes easily.

@sahilpaudel-pe Sorry. The version is as you mentioned v0.3.0.

@arunghosh My pleasure! It's a really helpful package. Thanks for looking into this


get multiple quality

what i think now is  it grab link highest quality can you get link all of them since 240p -> 1080p ?

im trying to do the same thing have you found a solution yet ?

#7


We should do a safer default configuration for launched instances

https://github.com/jnsgruk/zinc-k8s-operator/blob/9cd0ae62b3f970bb04042f4314d02fec74833033/tests/spread/cloud-config.yaml#L7-L10
I realize it matters a little bit less for containers that you launch on your lxd instances, but this seems like a bad default for anything that we are running on external infrastructure (and hygiene says we shouldn't really do it locally, either).
I don't understand the options and tools sufficiently at this point to know how to do better here, but as we are establishing patterns this seems like an important want to avoid other teams cribbing.

In reality, the machines allocated by spread are often local to the test machine (in the case of LXD VMs), though that can vary. In the case of the Github Actions backend github-ci, the machines are not publicly routable.
That said, I agree that we can do better. #297 addresses this by using a randomly generated password for each invocation. Sadly no ability to specify an SSH key for spread to use at this stage (my initial prototype was generating a new key each time, but that didn't work out).


[zh] sync flow-control.md

Sync with en #38017
content/zh-cn/docs/concepts/cluster-administration/flow-control.md

Preview: https://deploy-preview-38310--kubernetes-io-main-staging.netlify.app/zh-cn/docs/concepts/cluster-administration/flow-control/

/lgtm
/approve


Add support for match_lists and using them in logging policy

Change Summary

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[X] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes)
[ ] Documentation content changes
[ ] Other (please describe):

Related Issue(s)
Related to #979
Component(s) name
arista.avd.eos_cli_config_gen
Proposed changes

Add supports for specifying match-lists and using them with the logging policy

How to test

Checklist:

[X] My code has been rebased from devel before I start
[X] I have read the CONTRIBUTING document.
[X] My change requires a change to the documentation.
[X] I have updated the documentation accordingly.
[X] I have updated molecule CI testing accordingly
[X] All new and existing tests passed (pre-commit, make linting and make sanity-lint).

Rebased on current devel and pushed the Molecule tests for this.
I have added a check to the logging part that checks whether the match-list exists. I'm second guessing my decision here, any thoughts on that?
Might be simpler without it and you could add match-list via other configlets potentially.

A few requested changes. Let us agree on data model before you change anything

All of these should now be done. I also rebased to current devel and added the generated documentation for match_list_input.


increase muffet url timeout

Unified timeout duration in checklink.sh and increased it to 80.
This may increase the overall time of the docs build phase if an URL is broken but is worth it because it helps avoid random failure of the build process.
Duplicated PR due to requirement that all commit are signed

@ichbinfrog : Right now, the job fails due to timeouts for http://www.apache.org/licenses/LICENSE-2.0 and https://logging.apache.org/log4j/2.0/manual/migration.html. Would it make sense to broaden the existing regex for Apache as follows:
-e .*\.apache\.org.* \


BUG: enums assigned to constants are not being evaluated correctly

When window.gd is obfuscated, you will see something like this:
const __w7HZ = Tracer.__1Gf0;

var __QSTr = __w7HZ.Info | __w7HZ.Warn | __w7HZ.Error;

Wth inline enums turned on, there is no longer a enum so cannot reference by constant, so I turned it off. After that the INFO/WARN/ERROR are still not replaced with the renamed enums.

I'm gonna take a look at it in a short while, just want to finish something first.

Line breaks before functions seem to have gotten fixed by one of the lambda changes I made.
I see now why those enum values values do not get renamed; enum values only work when they are getting accessed directly. Since constants are being evaluated before obfuscation anyways, "loading" all the enum values into constants like that should be fairly trivial.
Thanks for all the help!

Changed the description to better match the issue. Hope you don't mind!
Anyway, I'm going to stop here for today and continue working on it tomorrow.

Fixed by b852b4dfd3c50b3ed5b1ef5931e8fa29a2bc6337

I changed const to var today and the problem persists, so it is not limited to const.

Not being able to assign inlined enums to variables is unfortunately an expected limitation. And honestly, I don't see why you would ever assign an enum to a variable instead of a constant, so I don't really want to spend time on that right now.

Thanks for the report! This ended up being way more convoluted than I thought it would be. I hope the fix didn't break anything else, though it still works fine on my game.