Can't use in ES6 - SVG Plugin

Hi,
I encounter issues in my ES6 project. When I require Kute.js and then the SVG plugin, here what the console outputs (without calling Kute):
kute-svg.js:26 - Uncaught TypeError: Cannot read property 'selector' of undefined
(the plugin does not know Kute).
And when I fix that, this happens:
kute.js:37 - Uncaught TypeError: Element not found or incorrect selector: path
(still without calling Kute, just requiring it).
Am i missing something?

I don't think it's an ES6 standards issue, the UMD have been implemented by a friend of mine @IngwiePhoenix, and he isn't available at the moment to have a look at it, so I'm open to any contribution of any kind for this.
Still, is the path an actual selector? The second error triggers when KUTE.js cannot find your element. Perhaps moving your code to your site's body would fix this. Please try and let me know.


decap_cms missing field_authors

decap_cms missing field_authors in hugo.toml

Yeah, this issue is related to hugomods/decap-cms#102, will add after fixing that issue.


install on docker error

and also cannot open https://<IP_ADDRESS>:7862/ in browser

It seems you access the wrong port. You can try https://<IP_ADDRESS>:7860 because we have mapped the port in InternGPT/docker/InternGPT_CN/docker-compose.yml
@G-z-w please take a look for this issue.


Fix empty password issue in upgrade from 6x to 7x

Issue #, if available:
Description of changes:
Unrecognized field "password" exception gets thrown out during migrating from 6.x to 7.x.
This PR is to fix the logic handling empty password in migration.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

It should be sufficient to introduce setPassword(String password) setter to InternalUserV6. Optionally setter can assert that password is an empty string.

It should be sufficient to introduce setPassword(String password) setter to InternalUserV6. Optionally setter can assert that password is an empty string.

But Optional.isEmpty() asserts Optional.value==null instead of empty string. Using optional setter could require more changes in other places?

Wondering if any change can be directly done in https://github.com/opendistro-for-elasticsearch/security/blob/master/src/main/java/com/amazon/opendistroforelasticsearch/security/securityconf/Migration.java#L160 ?

It should be sufficient to introduce setPassword(String password) setter to InternalUserV6. Optionally setter can assert that password is an empty string.

But Optional.isEmpty() asserts Optional.value==null instead of empty string. Introducing optional setter could require more changes?

It is not optional setter, setter will be called only when "password" field is present in serialized json. I don't think that any other changes will be necessary. When I say "optionally", I mean that it is up to you to decide whether it is necessary to check that "password" is empty (it can't be anything else).

It should be sufficient to introduce setPassword(String password) setter to InternalUserV6. Optionally setter can assert that password is an empty string.

But Optional.isEmpty() asserts Optional.value==null instead of empty string. Introducing optional setter could require more changes?

It is not optional setter, setter will be called only when "password" field is present in serialized json. I don't think that any other changes will be necessary. When I say "optionally", I mean that it is up to you to decide whether it is necessary to check that "password" is empty (it can't be anything else).

Yeah, this is a much simpler solution and it perfectly keeps the consistency with the way how other fields get populated in Internal User object. Thanks for pointing this out, Vlad!


ACS-5201: ARM64 ACS Packaging CI failure

Added new action docker-dump-containers-logs allowing to store Docker containers logs.

I've tested it and used this action in 2 steps within one job. In result 2 files were created: containers-logs-arm64_health_check-1-20230531094611.tar.gz and containers-logs-arm64_health_check-1-20230531094615.tar.gz.  After re-run attempts counter increased. Test workflow: https://github.com/Alfresco/acs-packaging/actions/runs/5131238912


RimThreaded and Android Tiers Completely Breaking Game, Not Even Main Menus Loading on Launch

Hi, I have a major issue! Android Tiers with RimThreaded is causing Rimworld to not load properly at all, on game launch it freezes on the menu background with no menus loaded and prevents any actions.
I just get the background with no text, menus, options or anything. The log shows an error spamming on repeat. The error is repeated over and over until I force close and the log file gets HUGE; I left this for a while and got a 7GB log file of 99.99% the same error
My main mod list gives the same results. I resorted to deleting EVERYTHING (mods, config, uninstall rimworld, reinstall from scratch and use only core, rotalty and Android Tiers) still the same issue.
I'm running 1.2 latest. This started happening after getting a latest game and mod update on 13th August.
Please please help! I consider Adroid Tiers one of my core mods, yet Rimhtreaded is essential to making the game playable. So I'm basically prevented from playing until this is fixed as any game without Android Tiers will make make me not want to play... I'm in Rimwithdrawals! Help!
I got a HugsLib Trace which included a couple of Android Tiers dependancies, but the same behaviour happens if those are removed.
Hugslib and Player.log for the issue:
https://gist.github.com/HugsLibRecordKeeper/322e2c2d6842d9c068f4ec4e0dafddc0
Player.log
Here is the error on repeat:

Root level exception in Update(): System.NullReferenceException: Object reference not set to an instance of an object
at (wrapper dynamic-method) RimWorld.Pawn_MeleeVerbs.RimWorld.Pawn_MeleeVerbs.PawnMeleeVerbsStaticUpdate_Patch0()
at (wrapper dynamic-method) Verse.Root.Verse.Root.Update_Patch1(Verse.Root)
(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 35)
Root level exception in OnGUI(): System.NullReferenceException: Object reference not set to an instance of an object
at (wrapper dynamic-method) Verse.GrammarResolverSimpleStringExtensions.Verse.GrammarResolverSimpleStringExtensions.Formatted_Patch0(string,Verse.NamedArgument)
at Verse.GrammarResolverSimpleStringExtensions.Formatted (Verse.TaggedString str, Verse.NamedArgument arg1) [0x00007] in <12a8d1a0a5a64eae86579edb3a3b30c7>:0
at Verse.TranslatorFormattedStringExtensions.Translate (System.String key, Verse.NamedArgument arg1) [0x00006] in <12a8d1a0a5a64eae86579edb3a3b30c7>:0
at (wrapper dynamic-method) RimWorld.VersionControl.RimWorld.VersionControl.DrawInfoInCorner_Patch1()
at RimWorld.MainMenuDrawer.MainMenuOnGUI () [0x00000] in <12a8d1a0a5a64eae86579edb3a3b30c7>:0
at Verse.UIRoot_Entry.DoMainMenu () [0x0001f] in <12a8d1a0a5a64eae86579edb3a3b30c7>:0
at (wrapper dynamic-method) Verse.UIRoot_Entry.Verse.UIRoot_Entry.UIRootOnGUI_Patch1(Verse.UIRoot_Entry)
at (wrapper dynamic-method) Verse.Root.Verse.Root.OnGUI_Patch1(Verse.Root)

I cant produce a save file as I cant load the game menus to do ANYTHING!
Screenshot of Rimworld not loading at all. It stayed like this all last night giving me a 7.3GB log file of the same errors on repeat:

Mod list (For vanilla report, it has to be same as below list.)
Described above.
Let me know if I missed anything, thanks guys. I've been meaning to give a small donation as appreciation of your work, can I be cheeky, make it a bit larger and associate it ot this?? :)
p.s. I LOVE the work you do and am so impressed with what you've pulled off! Keep up the good work :)

It seems you are using the release for 1.3 version of rw as the patch that is causing your error is not meant do be done on 1.2.
I strongly suggest you start playing on 1.3 as every mod author us included is focussing at the moment on 1.3.
Android tiers in particular has been patched heavily by kiwi and made a lot more performant in 1.3 and we already patched it to be compatible... it is this 1.3 patch infact that is causing you this crash. The next steam release will fix you this problem sorry I am having toubles at the moment to compile a 1.2 version. Surely Hoff can compile one for you without that patch easily... sorry again it was me infact who wrote that patch.

I think this was fixed in 2.5.12. If it is still an issue, please reopen the ticket or message me on discord


Move GCRCatalogs install to PyPI

Installing rail_astro_tools from PyPI is not working because the GCRCatalogs install uses the Github repo.

#28

closed with #28


Could not load file or assembly 'Google.OrTools, Version=7.4.7247.0, Culture=neutral, PublicKeyToken=455995ef9a0b90f9' or one of its dependencies. An attempt was made to load a program with an incorrect format.

I'm trying to use the latest version of OrTools, but I always get this exception when I try to run the code. I have tried referencing the Nuget package from LinqPad and from a console app in VS2019, but the same thing happens. The code compiles fine, but throws this exception when I try to run it.
If I look in the References section of VS, I see the reference fine...

Any ideas?

Ah, turns out that the problem was that I was using a 32-bit version of LinqPad, and the default "Any CPU" setting in VS, which seems to mean 32-bit.
By installing the 64-bit version of LinqPad and changing the VS project settings to target 64-bit, both worked.
Hope this helps someone else.


Out of date

This documentation refers to features that were removed from Visual Studio years ago...

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

ID: 02bb2607-4589-179e-55c1-0749dd134ed5
Version Independent ID: a8dc7f55-6bff-cf9e-9fa5-8c74df09f3b6
Content: Walkthrough: Using Client Application Services
Content Source: docs/framework/common-client-technologies/walkthrough-using-client-application-services.md
Product: dotnet-framework
GitHub Login: @dotnet-bot
Microsoft Alias: dotnetcontent

Thank you for bringing this to our attention @GeekAndProud. I think we should remove this topic from the current documentation set.


Upgrade from 0.1.2 to 0.1.4 causes hang

A change in 1f2137bb31914622eb6db1c93f92d8f10c3312db caused a hang in our application that did not exist in version 0.1.2.
Here's a reproduction of the issue.
[dependencies]
futures = { version = "0.3", features = ["compat"] }
reqwest = { version = "0.9", default_features = false }
tokio = "0.2.9"
tokio-compat = "=0.1.2"

use futures::compat::Future01CompatExt as _;
use reqwest::r#async::Client;

fn main() {
    tokio_compat::run_std(async {
        futures::executor::block_on(async {
            let client = Client::new();
            let response = client.get("http://www.google.com")
                .send()
                .compat()
                .await;

            match response {
                Ok(response) => println!("status={:?}", response.status()),
                Err(e) => println!("{}", e),
            }
        });
    });

    println!("done.");
}

Using<EMAIL_ADDRESS>this outputs
status=200
done.

Using<EMAIL_ADDRESS>this hangs indefinitely.

Notes:

I knowingly used an old version of reqwest in this reproduction. Our actual code uses rusoto which doesn't have an async/await-native version yet. Using rusoto in a reproduction is a pain because you need AWS credentials, though.

The run_std then block_on seems funny. Our actual code goes through both lambda_runtime and juniper, so run_std and block_on are quite far apart in our actual code, but are still necessary until more of the ecosystem catches up with async/await.

If we replace
tokio_compat::run_std(async {

with
let mut runtime = tokio_compat::runtime::Runtime::new().unwrap();
runtime.block_on_std(async {

we see the correct and expected behavior in both tokio-compat versions.

Thanks for the report. I'll take a look!

This is definitely related to the futures::executor::block_on call. When that's removed, the code no longer hangs. My guess is that because the future is run on the futures::executor executor and not on the tokio-compat runtime, it isn't able to participate in the runtime's idleness tracking, so the runtime fails to shut down. When run_std used block_on, the code is run to completion before we wait for idleness to shut down, so it doesn't keep the runtime running, and reqwest's background task(s?) completing is sufficient for the executor to shut down.

I am honestly pretty surprised that code that calls futures::executor::block_on inside of a future run by the tokio runtime has ever worked on the compatibility runtime...

@hawkw we are surprised too!

As far as a solution to this issue goes, I'm not really sure what to say. I'd be willing to change run/run_std back to calling block_on rather than spawn to fix this code, but I don't think calling futures::executor::block_on inside of a future running on any tokio runtime is really a good idea.
When executor::block_on is called, the futures crate's LocalPool executor will try to run the passed in future to completion. When that future yields, it will try to  run any tasks spawned on the LocalPool instance (e.g., using the LocalSpawner returned by this method), but if there are no such futures, or they are all waiting on something, it essentially blocks the thread. This means that if it's run inside a future on a Tokio runtime, that future will prevent the worker thread from progressing, blocking any tasks spawned using tokio::spawn (such as reqwest's background tasks) that are running on that worker.
If it's absolutely necessary to use futures::executor::block_on in code that also sues the Tokio runtime, for compatibly reasons, I think you want to treat it as a blocking call, and put the block_on inside of tokio::task::block_in_place or tokio::task::spawn_blocking. That way, the block_on call won't block a thread that's trying to run other tasks. I think this should also fix the issue caused by upgrading to tokio-compat 0.1.4 at the same time.
Hopefully that makes sense, and, again, sorry for the breakage!

@hawkw Thanks for looking into this!
I'll be honest. I had glossed over our futures::executor::block_on call many times, and never did it actually occur to me that it was using a different executor. I think I must have assumed it used whatever the current local thread executor was or something, but in retrospect it should have been obvious that it was using a different executor.

I'd be willing to change...

If it's absolutely necessary to use futures::executor::block_on...

I guess at this point, it seems like this isn't really tokio-compat's problem, and it's be pretty presumptuous of me to ask you go backward to fix this issue for us. We already have a workaround in place in production (using tokio_compat::runtime::Runtime::block_on_std). And it seems to be more of an oversight than a necessity that we're using the second executor – or maybe it was a necessity once but no longer is – so sometime in the near future I'll look into replacing our futures::executor::block_on call with one that uses the tokio executor so we don't have two executors running.
Again, thanks for diving in! And thanks for tokio-compat! Like probably many others in the ecosystem right now, we're living in a split ecosystem, and tokio-compat is helping us navigate it just a little bit better while everyone works hard to make progress.

I had glossed over our futures::executor::block_on call many times, and never did it actually occur to me that it was using a different executor.

Yeah, I think the documentation in the futures crate for this function could really use some work — the behavior of executor::block_oncould probably be a bit more obvious...

I think I must have assumed it used whatever the current local thread executor was or something, but in retrospect it should have been obvious that it was using a different executor.

Yeah, unfortunately, there's no runtime-agnostic concept of a "current executor" — tokio has a notion of a current runtime, async-std has a single global runtime, and the futures crate basically relies on passing around spawn handles (it doesn't have an ambiently-available free function spawn à la tokio/async-std). There isn't currently a way to abstract over these different runtime APIs, which I think would currently require buy-in from all of those executor implementations. Hopefully that changes in the future.
My guess is that you should just be able to remove executor::block_on calls in your code, unless you're relying on them to drive code that spawns on the futures crate's LocalPool. I doubt that's the case, because, as far as I can tell, there isn't a way to spawn on a LocalPool without a LocalSpawner handle, which you don't get when using executor::block_on. So I'd be pretty surprised if taking them out did anything other than making your app run faster :)

Again, thanks for diving in! And thanks for tokio-compat! Like probably many others in the ecosystem right now, we're living in a split ecosystem, and tokio-compat is helping us navigate it just a little bit better while everyone works hard to make progress.

Glad to help! If you have any more issues, please me us know, either by opening a new issue, or on the Tokio Discord server.


Add support for sequence annotations

We would like to request prioritizing support for the sequence annotation API.  The variant API plus the sequence annotation API will enable us to demonstrate the usefulness of the GA4GH APIs in the BRCA challenge.  We would like to be able to report on this at the Paris meeting.
The sequence annotations methods will probably need revamped.

It might not be a bad idea to start discussing ways of having the server team work on a standardized, scalable development environment on something like AWS (Amazon), Google or another cluster.  Maybe there is a way this can be provided via GA4GH, similarly as initiated here.  I think it will provide the opportunity not only to ensure that everyone is using the same setup environment - especially for deployment activities - but more importantly the exposure to experiment with services such as Elastic MapReduce, Amazon Redshift, Amazon S3, Google Cloud Storage, Google BigQuery, Google Cloud Dataflow, Google Compute Engine, as well as adding and customizing open-source software tools.
I feel this will be necessary for large-scale coordinated initiatives such as the BRCA Challenge, and as well as tackling and integrating the different annotation APIs.
Paul

@pgrosu, @diekhans has requested that support for the sequence-annotation API is prioritised for the reference implementation.  I think your comments on deployment environments should be moved out to separate issue.

@skeenan, I would be glad to.  I was wondering what might be the best way to join the DWG mailing list and conference calls.  It might help me with being better in sync with the discussions regarding the APIs, besides just through the Issues/PRs on GitHub.
Thank you,
Paul

@pgrosu - the team is developing S3 support and we at UCSC plan to put up a public test server on S3. I believe there are a couple of outstanding technical issues that are in the process of being solved. I agree with @skeenan - this is off topic for this thread.

@benedictpaten, so may I open up another issue that expands on this?  S3 is optimized for storage, but the server team I think would find great benefits of trying out the other services with other parts of this project - especially for indexing and searching.

@diekhans: enthusiastically agree!

While the reference server should run in AWS, it will not be
optimized for AWS.  That would be counter to the reference
server goals of simplicity.  There is a need for servers highly
optimized for the cloud.
Paul Grosu<EMAIL_ADDRESS>writes:

@benedictpaten, so may I open up another issue that expands on this? S3 is
optimized for storage, but the server team I think would find great benefits of
trying out the other services with other parts of this project - especially for
indexing and searching.

I've created an annotations branch in both the schemas and the server repositories.  We can work off of those.  (Just don't force push to them, or else you'll confuse everyone!)
https://github.com/ga4gh/schemas/tree/annotations
https://github.com/ga4gh/server/tree/annotations

Okay, we'll we've hit our first schema bug!  There's some problem with ReadAlignment.duplicateFragment: https://gist.github.com/dcolligan/45af0974aeaeb1396b6a

@macieksmuga do you have a branch open where a lot of these schema bugs are fixed?

We need to setup CI for schemas!
Danny Colligan<EMAIL_ADDRESS>writes:

Okay, we'll we've hit our first schema bug! There's some problem with
ReadAlignment.duplicateFragment: https://gist.github.com/dcolligan/
45af0974aeaeb1396b6a
—
Reply to this email directly or view it on GitHub.*

Not a bad idea, but I think in this instance schemas is fine.  So by looking under the Avro specs for unions, you'll notice the following:
(Note that when a default value is specified for a record field whose type is a union, the type of the default value must match the first element of the union. Thus, for unions containing "null", the "null" is usually listed first, since the default value of such unions is typically null.)
So you have two options for the server implementation:

Make this check order-independent, by first pre-processing the schema on-the-fly and moving null at the beginning of all union instances, so this step will always work:

   if (isinstance(t0, avro.schema.PrimitiveSchema) and
                            t0.type == "null"):

or,

Implementing the Avro interpretation for unions where the default value matches the first element-type of the union.

Hope it helps,
Paul

Plan is to write a program to convert GFF3 to the GA4GH sequence annotation JSON and a second program to load this into a sqlite3 database.
Q: how is the best way to structure this in the tree, as each of these programs will have command line tests with data?

Since annotation will become very broad, it probably should have its own directory under:
https://github.com/ga4gh/server/tree/develop/ga4gh
With time we probably want several categorized directories encompassing the large general functionalities being provided (i.e. Data Processing, Annotation, Analysis, Import_Export, etc.) - it will make it more naturally to navigate hierarchically and interface among them (both visually and via code).
Paul

I'm assuming that if null is the second element of a union, this is explicitly done to force the default value of the union to be something other than null. Pre-processing the schemas to change this order would thus be going against the spec. Unless there's a mistake in the schemas, and should be corrected there - per @dcolligan's hunch (I don't know enough about SAM flags to tell if the union { boolean, null } is intentional or not).

@dcolligan I'm formulating several pull requests against the schemas repo to correct various minor issues that I've found. The specific one you encountered here, however, isn't among them (I was assuming this union order was intentional on the part of the schema authors, and that we should change the null-as-first assumption on our end). Here's a fairly well documented example of a non-null first element of a union from the SearchReadsRequest record in readmethods.avdl:
  /**
  The start position (0-based) of this query.
  If a reference is specified, this defaults to 0.
  Genomic positions are non-negative integers less than reference length.
  Requests spanning the join of circular genomes are represented as
  two requests one on each side of the join (position 0).
  */
  union { long, null } start = 0;

On the other hand, thinking about it some more I'm now kind of wondering why null isn't the default here (since referenceId defaults to null, in which case start should be null as well). So... yeah, maybe I should add it to my growing list of schemas PR's.

Yes, the package structure needs to evolve.
However, right now I am concerned about how I organize the
command line program and tests that are completely independent
of the server.
Paul Grosu<EMAIL_ADDRESS>writes:

Since annotation will become very broad, it probably should have its own
directory under:
https://github.com/ga4gh/server/tree/develop/ga4gh
With time we probably want several categorized directories encompassing the
large general functionalities being provided (i.e. Data Processing, Annotation,
Analysis, Import_Export, etc.) - it will make it more naturally to navigate
hierarchically and interface among them (both visually and via code).
Paul
—
Reply to this email directly or view it on GitHub.*

@macieksmuga, don't change the schemas yet, it works fine according to the Avro definitions.  The server processing of Avro has to change.  As this definition from Avro for unions suggests, null does not need to be first:
(Note that when a default value is specified for a record field whose type is a union, the type of the default value must match the first element of the union. Thus, for unions containing "null", the "null" is usually listed first, since the default value of such unions is typically null.)
You can find this definition here:
https://avro.apache.org/docs/1.7.7/spec.html#Unions
Paul

@macieksmuga, don't change the schemas yet, it works fine according to the Avro definitions. The server processing of Avro has to change. As this definition from Avro for unions suggests, null does not need to be first:

No, this is a known issue in the schemas that should be fixed in the schemas repository. Null doesn't need to be first, but the default value must match the type listed first in the union.

@fnothaft, so if the default is false and boolean is the first element, why do we need change the schemas if this is requirement is followed?  The server team is not seeing null when processing it with the file below, and wants to change all the unions where null is not the first element to be the first element, because it fails here:
https://github.com/ga4gh/server/blob/develop/scripts/process_schemas.py#L99-104
                    if (isinstance(t0, avro.schema.PrimitiveSchema) and
                            t0.type == "null"):
                        if isinstance(t1, avro.schema.RecordSchema):
                            ret.append((field.name, t1.name))
                    else:
                        raise Exception("Schema union assumptions violated")

I feel the server code would need to be updated to be Avro-compliant, instead of changing the schema or data because it does not fit the code.
~p

@pgrosu there are multiple fields in the schemas repository that do not follow the correct conventions and that need to be fixed.

@diekhans If this will be initially an independent endeavor, just create a Projects folder under https://github.com/ga4gh/server.  Then you can have it look something like this:
Projects /
  Annotation/
    GFF3_to_GA4GH-JSON
    GA4GH-JSON_to_sqlite3

Then within each one (starting under the Annotation-grouped projects level) you can go with something like this:
  Annotation /
     GFF3_to_GA4GH-JSON /

		Main /
			 build (or compiled) /
			 config /
			 data /
			 docs /
			 libs /
			 src /
			 tests /

		Development /
		     FeatureBranch1 /
			     build /
			     config /
				 data /
				 docs /
			     lib /
				 src /
				 tests /

			 FeatureBranch2 /
			     build /
			     config /
				 data /
				 docs /
			     lib /
				 src /
				 tests /

		Releases /
		     Release1.1 /
				 build /
				 config /
				 data /
				 docs /
				 lib /
				 src /

			 Release1.2 /
				 build /
			     src /

It doesn't have to be too structured as above, but it helps.  Maybe starting from a Maven-type directory structure might be the easiest to begin.  Over time I'm sure it'll evolve.  Once it's ready for staging, then options for integration with the rest of server can also explored.  Thus deployment would be most natural.
Hope it helps,
Paul

@fnothaft Agreed and I'm all for Continuous Integration (CI), but for places where the schema is designed correctly, it would be nice to make the code adapt to the data, rather the other way around.  This way consistency in following the standard is preserved across all project components.

In the case of ReadAlignment.duplicateFragment I'm unsure why this is a union type at all; a boolean type would seem more appropriate.  It's supposed to map to a SAM flag.  If duplicateFragment is false the flag is unset and if it is true the flag is set... but what is null supposed to mean?  I would have the same question for all other ternary flag attributes.
The process_schemas.py code in the same method where the exception is thrown does have this comment:
        # TODO need to clarify how we operate on Unions here. The current
        # code will break when we move to schema version 0.6 as we are
        # no longer assured that the first element of the union is null.
        # This would be a good opportunity to tidy this up.

How should we correctly process union types here?  I'm unsure what the intention was supposed to be.

@pgrosu I don't think anyone is saying to make the server code "override" the schemas. If I read the thread correctly, people are saying two things:

There are fields in the schemas that do not correctly follow avro rules for default typing, which I can confirm is a bug in the schema repository. To avoid these issues in the future, we should have better CI testing.
Some of the fields define non-null default values that are semantically incongruent with other default values in the same schema, or the fields should not be nullable. E.g., my reading of @macieksmuga's comment RE: union { long, null } start = 0, is that a default value of 0 for start doesn't make sense since the default value for referenceId is null, and that start is not meaningful unless referenceId is defined.

Thank you @fnothaft for the clarification! I'm still predisposed to believe that things that puzzle me about the schemas have more to do with my lack of understanding, so it's nice to know that sometimes they're just simple mistakes.

@jeromekelleher wrote that comment in process_schemas.py so perhaps he could shed some light on what the correct thing to do is wrt union types?

I second @dcolligan's question about unions with booleans, such as in ReadAlignment.duplicateFragment. Perhaps somebody well versed in SAM flag semantics could chime in on the design intent?

@fnothaft Depends on how it is interpreted.  So there are two scenarios in @macieksmuga example:

If referenceId is empty or null, then all the reads are returned from all references.  If one returns all reads from all references, then by default the list of references defines at least one reference.  If one defines at least one reference, then it satisfies "If a reference is specified, this defaults to 0.", thus setting start to 0.

If one provides a referenceId, then it satisfies "If a reference is specified, this defaults to 0.", thus setting start to 0.

So I'm fine either way with @macieksmuga changing it, but we need to implement a rule-based checker that is based on the interpretation of the comments in the schemas - as well as their definitions for each implemented record/type - which will run and validate all the scenarios we construct.  This would need to be updated with each PR in schemas.  This can involve multiple combinations of records and types as designed in the schemas.
Usually when I construct programs, I follow a consistent design recipe where I first start with the test cases of how I expect the outputs to be based on the inputs, while using only the function names.  This takes up the majority of the time.  Then I add the function contracts to the functions (i.e. the defined arguments/parameters) in terms of inputs and outputs based on the tests.  I do that first to the tests and then the defined functions.  Then these define the commented definition for each function and its types - the interpretation was previously defined via the test cases.  It's only the last 10% that I actually code, which becomes a very mechanical process, since the plan is already written for me by me, having gone through the process of analyzing the complete problem and breaking it into its succinct components.  I feel that if we follow something along these lines of working on these problems and coding - especially for the rule-based checker - then it would be seldom that we become surprised later on.
Paul

@pgrosu that sounds ambitious. Could you put that together and submit it as a follow on PR after https://github.com/ga4gh/schemas/pull/291 merges?

@dcolligan the fixes you made to the annotations branch aren't hacks but rather worthy of a PR against the schemas master, if I understand @fnothaft correctly.

Maciek Smuga-Otto<EMAIL_ADDRESS>writes:

@dcolligan the fixes you made to the annotations branch aren't hacks but rather
worthy of a PR against the schemas master, if I understand @fnothaft correctly.

Agreed. a branch off of this and a pull request is in order.

@dcolligan the fixes you made to the annotations branch aren't hacks but rather worthy of a PR against the schemas master, if I understand @fnothaft correctly.

+1

@macieksmuga, @dcolligan Regrading the ReadAlignment.duplicateFragment setting, that identification and marking of duplicates is decided by a program after alignment was performed, and it is difficult to decide this sometimes if it should be true or false for an unmapped read, and sometimes for a RNA-Seq read.  It thus provides flexibility when the call cannot be made confidently.
@fnothaft So in industry usually there is something like a validation environment in terms of setting up the rule-checker/tests/etc, and to set something like that here we would need to expand on the current setup.  This is not an overnight thing, but will provide the framework of checks-and-balances you sometimes see in @dglazer's posts regarding definitions and interpretations.
As a small example, here is a test-driven process one would go through for just the Dataset definition for just the ID generation, given a set of BAM file(s).  This is just an illustrative, simplistic example since the real tests would be more extensive, with a central database-driven server that would provide the correct validation criteria and outputs.  So we know that the Dataset definition is the following, and we will just focus on the id:
record Dataset {
  /** The dataset ID. */
  string id;

  /** The dataset description. */
  union { null, string } description = null;
}

NB: The following process assumes automatic generation of dataset ids from raw data, so that the corresponding Reads and/or Variants would be associated to it.  Other approaches would also be welcomed with the goal of finding the optimal approach.
First the user who created the Dataset PR would provide one or more compressed test-files, which would have the following structure - or something very logically similar:
tests/
  Reads /
    Dataset/
      create.dataset-id.USERNAME.3-26-2015
	    Description.txt
	    data/
	      dataset-1/
		    example1.bam
		  dataset-2/
   		    example-1.bam
		    example-2.bam
	    tests/
	      run-test-1.sh
		  run-test-2.sh

The Description.txt file would contain information regarding the description, scope and interpretation of the test(s).  Within the data directory, the example-1.bam file would contain something along the following lines - and in this example the example-2.bam would be the same file:
@HD	VN:1.0	SO:coordinate
@SQ	SN:chr1	LN:101
simple_fits	0	chr1	2	47	100M	*	0	0	TTCATGCTGANGCNCTCTTACGATCGTACAGATGCAAATATTAACANNCNTTNAAGNNCANNNNNNNNNCAATACAATANTAGAGTACGTNAACACTCCA	&/,&-.1/6/&&)&).)/,&0768)&/.,/874,&.4137572)&/&&,&1-&.0/&&*,&&&&&&&&&&18775799,&16:8775-56256/69::;0

The run-test-1.sh script would be something along these lines, with run-test-2.sh pointing to the data/dataset-2 directory:
#!/bin/sh
echo ""
echo "For the following files:"
echo ""
for f in `ls ../data/dataset-1/*.[Bb][Aa][Mm]`; do
  echo "$f"
done
echo ""
echo "The expected md5sum to store as a Dataset id is:"
echo ""
cat ../data/dataset-1/*.[Bb][Aa][Mm] | md5sum
echo

Below would be the test results against which to compare, build, and validate any implemented code:
$ ./run-test-1.sh

For the following files:

../data/dataset-1/example-1.bam

The expected md5sum to store as a Dataset id is:

303b5e4d072a90cb370268341c403dbd  -

$ ./run-test-2.sh

For the following files:

../data/dataset-2/example-1.bam
../data/dataset-2/example-2.bam

The expected md5sum to store as a Dataset id is:

8830b11c3ad3872ad4662828a1ddb1bb  -

$

In this test I utilized md5sum, but this can be updated to anything we want.  Again any PR that adds new functionality will need to provide at least one test for every new addition/significant-change to the schema.  In industry, we would would have hundreds - sometimes thousands - of tests that the APIs and implemented codebases would run validity-checks against - including timing differences.  So this is not a one-person job, and to do this right we would together need to put in the time for it, by drawing upon everyone's expertise.  This would be first done for all parts of schemas before any code is written, and much of the code design will come from this.  I feel that building using this test-driven design first, will allow us to work in lockstep and will prevent us from being surprised by significantly unexpected results, or from accidentally veering off the path because of presumed interpretations and/or assumptions.  The collection of tests will naturally present the connections and flow in the API, including any major areas of concern that would need to be addressed.  I never saw an instance where this approach did not pay off, and in our case it will ensure that every schemas comment - for their respective definition - will always have at least one test behind them.
Let me know what you think.
Thanks,
Paul

Sorry, I'm processing a bit of a backlog here, and trying to figure out what this thread is actually about. WRT to the comments I made in process_schemas.py, this was just to highlight that we'd need to deal with the shortcut I'd taken at some point. Are there any outstanding issues directly germane to us writing software?

@jeromekelleher  Mark wanted to create a branch to develop the annotations feature in.  To do this, we needed to base it off of a schemas commit that included the annotation schemas.  I figured we would just use the latest commit in the schemas repository and pushed a branch, schemas/annotations.  Trying to incorporate those schemas into the server code (via process_schemas.py), I found a number of bugs.  Others in this thread suggested that I file PRs against the schemas repo to fix those bugs, which I have done.  I have done some work in server/annotations and Mark will apparently be pushing some code in that branch soon.  Currently, the server/annotations branch can create a _protocol_definitions.py file successfully, but a lot of tests are failing, and I'm not sure it's worth fixing those tests right now, given the predicted churn in the schemas branch because of iterating on the annotations schemas (but we will need to do that before this branch gets merged into server/develop, of course).  That's where we stand.

Excellent, thanks @dcolligan. I completely agree with the course of action taken.

Closing.


Issue with docker run command working but same implementation in molecule.yml not working

I'm experiencing a strange error where the docker run implementation is working but the same implementation using the molecule.yml file is not.
To have systemd function within a centos container you have to mount in a couple of locations, so for example if you
Throws an error:
docker run centos/systemd
docker exec -it 123123 /bin/bash
systemctl # throws error Failed to get D-Bus connection: Operation not permitted

So the solution is to do it like this:
docker run -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /tmp:/run centos/systemd
docker exec -it 123123 /bin/bash
systemctl # works fine

I am trying to reproduce this configuration in my molecule.yml file but not having much luck. Using the following molecule.yml file:
---
driver:
  driver:
  name: docker
lint:
  name: yamllint
platforms:
  - name: centos
    image: centos/systemd
    volume_mounts:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
      - /tmp:/run
provisioner:
  name: ansible
  config_options:
    ssh_connection:
      pipelining: true
  lint:
    name: ansible-lint
scenario:
  name: default
verifier:
  name: inspec
  lint:
    name: rubocop

When I run:
molecule destroy
molecule create
molecule login
systemctl #throws the same error as the first example Failed to get D-Bus connection: Operation not permitted

What do I need to do to make the molecule.yml configuration work the same as the working docker run command above?

Have a look at the docs.

Specifically, I think volume_mounts was changed to volumes a few versions ago, which is also something I ran into, but changing this option fixed it.

Sorry I missed that section of the docs @retr0h
All working now!


remove parameter validation for advanced test configuration

The limitation to 50 chars and only limited special character is too limited. It prevents use cases like having json or xml as a parameter.

@MahatmaFatalError
Thanks for your comments.
I'll consider applying it to the next version.

PR is always open :)


"Poienarii Burchii", "Cărbunari", "Ologeni", "Piorești", "Podu Văleni", "Poienarii-Rali", "Poienarii Vechi" and "Tătărăi" villages are listed in the drop-down menu.

Description
The villages are listed in the drop-down menu alongside its corresponding county and commune, according to the law
Preconditions : the website (https://peviitor-ro.github.io/ui.orase/) is up and runing. After every step delete the text you typed from the search bar.

Step 1
Write in the search bar "Poienarii Burchii".

Expected results
The location is listed in the drop-down menu as "Sat Poienarii Burchii PRAHOVA (Poienarii Burchii)".

Step 2
Write in the search bar "Cărbunarii".

Expected results
The location is listed in the drop-down menu as "Sat Cărbunari PRAHOVA (Poienarii Burchii)".

Step 3
Write in the search bar "Ologeni".

Expected results
The location is listed in the drop-down menu as "Sat Ologeni PRAHOVA (Poienarii Burchii)".

Step 4
Write in the search bar "Piorești".

Expected results
The location is listed in the drop-down menu as "Sat Piorești PRAHOVA (Poienarii Burchii)".

Step 5
Write in the search bar "Podu Văleni".

Expected results
The location is listed in the drop-down menu as "Sat Podu Văleni PRAHOVA (Poienarii Burchii)".

Step 6
Write in the search bar "Poienarii-Rali".

Expected results
The location is listed in the drop-down menu as "Sat Poienarii-Rali PRAHOVA (Poienarii Burchii)".

Step 7
Write in the search bar "Poienarii Vechi ".

Expected results
The location is listed in the drop-down menu as "Sat Poienarii Vechi  PRAHOVA (Poienarii Burchii)".

Step 8
Write in the search bar "Tătărăi".

Expected results
The location is listed in the drop-down menu as "Sat Tătărăi PRAHOVA (Poienarii Burchii)".

ENVIRONMENT: ui.orase
URL: https://peviitor-ro.github.io/ui.orase/
Browser: Google Chrome
Device: Laptop
OS: Windows 11 PRO
STEPS TO REPRODUCE:
Check TC: "Poienarii Burchii", "Cărbunari", "Ologeni", "Piorești", "Podu Văleni", "Poienarii-Rali", "Poienarii Vechi" and "Tătărăi" villages are listed in the drop-down menu.
#5926 / Step2
Open URL in browser.
Type "Cărbunarii" in the search bar.
EXPECTED RESULTS:
The location appears in the drop-down menu as "Sat Cărbunari PRAHOVA (Poienarii Burchii)".
ACTUAL RESULTS:
"Cărbunarii" is missing in the drop-down menu and the follow message is displayed: "Locatia nu a fost gasita!"

@yonutzu  The bug is fixed. Thank !


This will be released as v2.0 due to changed defaults, requirement for Terraform 1.0, and possible service interruption when upgrading. Migration document TBD.
what

Make create_before_destroy default to true for security groups
Introduce preserve_security_group_id to control replacement of security group when rules change

why

In most cases, replacing a security group with create_before_destroy = false will fail with an error because you cannot destroy a security group while it is associated with a resource
Fixes #34

references

Fixes #34
https://github.com/hashicorp/terraform-provider-aws/issues/25173
https://github.com/hashicorp/terraform/issues/31316

/test all

/test all

/test all

/test all

/test all

Great depiction of the problem at a high-level. This is a great addition to the README.

/test all


add reference tests based on examples in docs

as of now, one has to manually check the preview docs for a PR to see wether everything works
I think it would be good to automate this process (reference testing for all of the plots in the docs)

My current idea for this would be to transform the literate scripts in docs/examples to jl scripts during runtests. For that one could add save commands to the examples which are hidden away in the md export for the documentation. Running the scripts would produce some pngs which could be compared against assets using ReferenceTests.jl or similar.
Additionally, there could be a new literate notebook referencetests.jl where we could put random code snippets to create test files. Even if those examples are not curated nor explained, i think there is value in displaying and testing different features of the package for interested users to scroll through. Stuff like https://github.com/JuliaPlots/GraphMakie.jl/issues/65#issuecomment-1055504439

Currently the test environment is the same as the project environment. I think a first step would be to separate that.
The way I normally do this is with:
cd  test
julia
julia> ]
(@v1.7) pkg> activate .
(test) pkg> dev ..
(test) pkg> add CairoMakie, GLMakie, ...

This way the tester will not need to manually construct the needed environment  every time.
Attention
Doing dev .. in the test folder breaks the possibility of calling (GraphMakie) pkg> test from inside the packet. And one need to manually run julia --project test test/runtests.jl. The relevant issue is https://github.com/JuliaLang/Pkg.jl/issues/1585.

or is there maybe a reason to go against that ?

yeah both the nested envionment and the extras section in project have their pros and cons...  currently i was using the latter with TestEnv.jl to activate the test environment


readthedocs broken

Describe the bug
The docs are broken, the "stable" release did not build after the recent release (missing from changelog), with:
AttributeError: 'HTMLParser' object has no attribute 'unescape'

See https://readthedocs.org/projects/nox/builds/
This should be fixable by setting a minimum version on some of the docs dependencies (why are those mixed with the test dependencies?) - readthedocs installs old versions of things by default, and then it's a no-op if you don't force an upgrade. Why they install a version of (something that uses HTML) that doesn't support Python 3.9+, I'm not sure, but forcing sphinx>=4 or something like that will likely fix the problem. Downgrading to Python 3.8 for the docs would fix it, too, but that's the wrong way to initially try to fix it.
I would highly recommend enabling PR readthedocs builds (in the readthedocs settings), they are very handy for catching bugs in the docs builds.
Also, it looks like "latest" hasn't built in a year or more, I'm guessing it was never changed to main from master, perhaps? It makes "latest" much older than "stable".

PS: I think @dhermes or @theacodes is required for adding PR builds & changing the "latest" target branch.

I can confirm I have admin on the RTD project.

I checked, readthedocs runs pip install ... sphinx<2 ... before installing any project. Sphinx<2 does not support Python 3.9. Have I mentioned I hate version capping? At least it's not an actual requirement. I knew they did that, but even on Python 3.9+, that I was not expecting. Fixing it should be as simple as adding sphinx>=2 (or 3 or 4) in the requirements, which will cause the pre-installed sphinx to be upgraded.

So far I have explicitly set the default branch to main in https://readthedocs.org/dashboard/nox/advanced/ and kicked off a latest build (https://readthedocs.org/projects/nox/builds/15742724/) to ensure it pulls main

If you want to activate PR readthedocs builds I can make a PR with that fix.

Will do (though I'm going to turn it off after it's fixed, it's a big use of resources for not much return IMO).
IMO we should also check in a .readthedocs.yml

PR builds are now enabled

There is one, that's what's setting 3.10. I find PR builds quite helpful, as you can preview the changes to the docs, and it also avoids broken documentation builds (which tend to be be very quiet), and in this case, it takes 32 seconds. But up to you. I'm making the PR.

I see there is a GHA docs build, but you can't preview it, and it doesn't do the 'pre-install' that readthedocs tends to break things with.

#560 didn't fix it, re-opening
"Running Sphinx v4.3.2" https://readthedocs.org/projects/nox/builds/15742871/ still fails
html.parser.HTMLParser().unescape was removed in Python 3.9 IIUC

The stable docs on RTD still point to an old release (2021.10.1) instead of the latest release, 2022.1.7. The cause for the broken docs build has been fixed on main, but we need to rebuild stable on RTD.
The thread at https://github.com/theacodes/nox/pull/561#issuecomment-1011177703 discussed two methods to fix this:

Push a tag 2022.1.7.post1 to GitHub; or
Push a stable branch and configure the RTD project to track this branch for stable docs.

Personally, I'd prefer the first method as it seems less overhead and well within the purpose of post releases. I don't think there's a need to do anything beyond pushing the git tag. The second approach offers flexibility and avoids a release, but it also means we'll need to either maintain the stable branch in the future, or rollback the RTD config after the rebuild.
@theacodes Would you be happy with this approach?

I'm also +1 with pushing a 2022.1.7.post1 tag, since we have only changed docs and deps.

There's a third method: just point rtd stable at main, click rebuild, then put it back to releases only.

Also good :)

Hello all,
Heads up: I'll push the 2022.1.7.post1 tag tomorrow to fix the problem with our docs being outdated.
Please give a shout if you have any objections. I don't have access to Read the Docs, so this is the only viable option right now to get our docs up-to-date.
cc @theacodes @dhermes
OT: pip 22.0 (2022-01-29) officially switched to Nox for automation 🎉

@cjolowicz Let me just add you to the RTD project

Awesome, thank you @dhermes !
In this case I'll go for the option proposed by @henryiii above, to avoid the extra PyPI release.

Unless I'm missing something, you can't actually point stable to the main branch.[^1]
So back to the original plan: Pushing a 2022.1.7.post1 tag tomorrow.
Drop a comment if you have a better idea. Alternatives I've considered:

Pushing a branch for the version instead of a tag (too hacky?)
Pushing a stable branch (overhead of maintaining an extra long-lived branch)
Pushing a stable branch, then removing it after the docs build (too hacky?)

[^1]: See https://docs.readthedocs.io/en/stable/versions.html. They do support a branch named stable, as well as any branch with a name following semantic versioning.

You can push a tag without doing a PyPI release?

Our CI publishes to PyPI when a tag is pushed:
https://github.com/theacodes/nox/blob/17a6a15c0ea1cc056140f5d37a467477ce05f5a5/.github/workflows/ci.yml#L61-L69

@cjolowicz +1 for the post1 release from me

Make sure it doesn’t include #526 ;)

Stable docs are up-to-date now.
2022.1.7.post1 only includes the two docs fixes that came after 2022.1.7.
Interestingly, the PyPI release did not happen. The version number in setup.cfg did not change, so while the tag triggered the deploy job in CI, PyPI rejected the upload with "File already exists". Which is just as well :)

Haha, nice. :)


Training our own data with multi-GPU

Thank you for opening such good codes.
But when I use it, I can only use one GPU for model training. How can I use multiple GPUs to train a model?

How to use multiple GPUs to complete the training of downstream tasks？

I believe you can do it with --multi_gpu.
This will effect this.
We currently don't support multi-gpu downstream training, as downstream models are small.

ok，thanks for your answer


Java JitPack fixes

Currently the java-impl branch won't compile on JitPack due to a number of problems. This PR fixes the following problems:

JitPack uses Java 8 by default, but we need Java 16. To fix this OpenJDK 16 will be explicitly installed before JitPack actually starts the building process.
Building the JavaDoc files fails due to incomplete function descriptions. So JavaDoc will be skipped during the JitPack build process for now.

Once this PR is merged, JitPack will be able to compile the java-impl branch again.

Do you think that this MR could be merged as well, now that #61 has been merged? It's quite small and should be easy to test since only the compiling instructions for JitPack are affected.
Or are there any things you are not happy with? Just tell me and I will try to fix them :)
For what it's worth: I'm using my fork (which includes this PR) with JitPack and everything works without problems.

I am a little surprised the source ~/.sdkman/bin/sdkman-init.sh works as a separate command, but this seems like a much cleaner solution.
I will have to fix the JavaDoc eventually, but for now, I will merge this.

And thank you very much for your help and contributions! :D

I am a little surprised the source ~/.sdkman/bin/sdkman-init.sh works as a separate command, but this seems like a much cleaner solution.

I am not an expert on JitPack or SDKMAN, so there might be better ways to implement this...

And thank you very much for your help and contributions! :D

You are welcome. I actually need the library for a little project of mine, so my contributions were not completely altruistic ;)


Ultimates is missing?

Did I miss something or is the Ultimates (method or attribute) missing from the Chainladder object?  I looked at the code for it and it doesn't seem likes it there in the same form as the documentation.  I'm happy to add it if it needs to be or change the documentation.
Thanks
Matt

Not sure if you are downloading the master branch or running the latest release from pypi.  It appears that the documentation on the readme link is to the master branch (which has substantial changes from the latest release).
Assuming you are using the deterministic module, the ultimates should just be a property of the chainladder object.
for example
`import chainladder as cl
import chainladder.deterministic as cld
tri = cl.Triangle(cl.load_dataset('RAA'))
print(cld.Chainladder(tri).ultimates)
`
works from the master branch

I'll also add that on the stochastic.Chainladder, there is no ultimate, but you could do:
cl.Chainladder(tri).full_triangle.iloc[:,-1] to get them

I had installed mine from pip and not from github.  thanks for working on this it's made my life a ton easier.

Also I figured out the part I was missing was the deterministic import.  I was using the older version


Various enhancements

Factor out a PyCameraBase class that doesn't have the full camera UI etc
Speed up autofocus init by sending the firmware in 254-byte chunks
Allow the display blit to set a different Y-offset
Add an image viewer application -- cycles every 8s, or allows navigation with directional buttons
Avoid deprecation warnings. We can use the 9x-only alternatives since this board doesn't work with 8.x

@brentru with this PR it should be possible to set pycam.display.brightness.


Jump to top of post when I close the picture in lightbox

A post have many pictures, when you open one picture in the middle of the post, Fancybox will work, and you can browse pictures in lightbox.
But if you close the lightbox, it will jump to top of the post. You have to scroll down to find the disconnected location.

I can confirm the behaviour you are referring to, I don't know exactly what is the cause... 🤔


[Logical def] Hippocampal cells use Ammon's horn instead of hippocampal formation

Currently, the following cell types use Ammon's horn when it should really be hippocampal formation (Ammon's horn in Uberon is defined indirectly (there are issues with the definition there too but that's for another day) as not including DG, whereas if we talk about hippocampal cells, we generally think that includes DG too)

hippocampal neuron should use 'neuron' instead of CNS neuron (sens Vertebrata) too


Windows Key hook

Expected: Windows Key brings up Start9 menu
Actual: Windows Key brings up original start menu

We'll look into it when we actually have got something. Right now we don't even have a way to detect key presses (let alone a moderately functional taskbar)


Uncover 3.0 problems

I have the Uncover 3.0 and my iPad 2017 ios 11.4. Why do not many programs and games run: for example - Guitar pro, Monument valley 2, Space Age, Osmos, The Escapists 2 and many more. Very, very few programs and games running on this jailbreak. Why don't they work?

I’m guessing it’s jailbrek detection, you can do nothing about it, just restart and unjailbreak.

I restarted it many times, it shows - Status: Re-Jailbreak. Jailbreak works very well, cydia works. I downloaded another game “the room three” and this game works, I don’t know why other games and programs don’t work, maybe there’s not enough optimization for them, I don’t know.

@1eta are they just crashing when you open them? Or do they just not load & stay on the loading screen?

1

@1eta did they work on previous betas? Maybe you have a tweak that you didn't have when it worked. Post your diagnostics.

This happens on any version of uncover. I did not have tweaks when I  ran these programs. Today, I downloaded the programs/games from "Tongbu", and they work great! Why dont they work when I donwnload them from another resource, and install them manually ? I downloaded 5 programs/games, only 1 of 5 works "The Room three". :(
diagnostics.zip

💯


Keep calling apply_multus_cni until yaml applies cleanly.

multus-daemonset.yaml doesn't always apply successfully on the first try. Resolves an install-time hang.

@naiming-zededa can you review this change


Developer should be able to specify pubKeyCredParams to support.

Currently the library is passing all potential algorithms to pubKeyCredParams in the PublicKeyCredentialCreationOptions but it should be selectable by the RP because some authenticators reject when unsupported algorithm is passed.

generateAttestationOptions()'s optional supportedAlgorithmIDs argument is the current mechanism for specifying a custom array of supported algorithm identifiers for pubKeyCredParams. It's true it defaults to all current algorithms, but if you specify an array of algorithm ID's for supportedAlgorithmIDs those'll get used instead.
Does this work for your needs?

Ah, I overlooked it. Yes, I think this works fine.
This is an API design decision you'd make, but if I'd suggest my idea arrogantly, I would make the API as much as the same as PublicKeyCredentialCreationOptions  and PublicKeyCredentialRequestOptions. In this issue's case, I'd make the API the same way as pubKeyCredParams so developers will have one less new API to learn to adopt this library. Same for other properties. I'd accept even if it will be a breaking change.
Anyway, kudos to your great work!

@agektmr Thank you for the feedback, I sincerely appreciate it. The goal of the library has always been to make implementing WebAuthn as simple as possible, but I'll be the first to admit there'll always be room for improvement.
Based on your comment above, I understand how complex I made things by trying to simplify how you specify algorithm IDs for pubKeyCredParams. I'm going to review the APIs of both generate...Options() methods and try to draw a more distinct line between what I simplify and what I expose more directly. I'm thinking there'll be a clear line between "typical use" and "advanced use" that I'll use to not simplify WebAuthn options that are for more advanced use cases.
Please stay tuned 🙇♂


Introduce improvements to  the  Finalize Build Cache Configuration Build Operation

As a follow up of https://github.com/gradle/gradle/pull/1945

@alkemist @felipefzdz Thanks, this looks good.


Cloud no root cert

Description
Remove trusted root certificate :x:
This is because, as it turns out, this is useless!
We are using let's encrypt certificates, so the trusted root is actually already in the systems certificates. I thought grpc python did couldn't use systems certs, so I hardcoded the full chain (which is very bad if the server burns or anything else) until I found a better way / did our own CA) when i first implemented cloud.
This should be merged & a new version of blindai python client should be released in order for the cloud to switch infrastructure (to swarm).
Related Issue
None
Type of change

[ ] This change requires a documentation update
[x] This change affects the client
[ ] This change affects the server
[ ] This change affects the API
[ ] This change only concerns the documentation

How Has This Been Tested?
N/A
Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my code
[x] I have commented my code, particularly in hard-to-understand areas
[x] My changes generate no new warnings
[x] I have updated the documentation according to my changes

Looks good. I'll test the changes ASAP


Confusing behavior of extension types and iterable extensions

Consider the following example:
// Copied from package:collection
extension _IterableNullableExtension<T extends Object> on Iterable<T?> {
  Iterable<T> whereNotNull() sync* {
    for (var element in this) {
      if (element != null) yield element;
    }
  }
}

extension type ET(String? value) {}

void fn() {
  final et = ET(null);
  final nullableTypes = [et, et] as Iterable<ET>;
  nullableTypes.whereNotNull(); // <-- analyzer error here
}

Produces the following error (tested on dartpad main channel):

I'm not sure how this supposed to work, so here are several approaches I tried so far:

updating the extension T to extend ET instead of Object. This does work, but in the real-world code updating external extensions is not possible.
adding implements Object to ET. This does remove the analyzer error, but it requires the representation type to be non-nullable and shows (implementing Object? is not possible):

But both of them require code change.
Can you advise the correct approach to resolve this error? At this point I'm not sure whether this behavior is by design or a bug.
Sidenote: the idea that both ET and the representation type can be marked as nullable separately (e.g. a function can accept ET with a nullable representation type or ET? with regular representation type) is also somewhat confusing.

The behavior is correct. The type ET is not a subtype of Object, so there is no solution for <T extends Object> on Iterable<T?> on List<ET>.
The solutions are what you already mention:

Change ET to have String as representation type, and implement Object, then use ET? as the element type of them list.
Change the extension to <T extends Object?> on Iterable<T?>. That may give worse typing though.
Or cast before calling, ([et, et] as List<String?>).nonNulls as List<ET>.

The ET type is tricky because it's not non-nullable, and it's not nullable.
That means it may contain null, but it has no subtype where that null is excluded.
The more direct solution would be to use .where((e) => e != null), which does not try to improve the type, because that's what fails.

Thanks!
Do I get it right that at runtime both ET1(String? value) and ET2(String value) (but used as ET2?) represent the same value String??

Thanks! (it's funny how github shows edits in real-time 😁)
One more question, if I may: what's the reason for extension types not to implement Object implicitly? To allow ET(String? value)? Or there is something deeper to that decision?

what's the reason for extension types not to implement Object implicitly

When an extension type E has a non-extension type T as a superinterface, it is considered to be transparent with respect to that type. That is, it is being announced to clients that the representation type of E is some subtype of T, and in particular, expressions of type E can be used where a value of type T is required. (So we can "leave" the extension type silently).
extension type FancyString(String it) implements String {...}

void main() {
  FancyString fs = FancyString('Hello world!');
  String s = fs; // OK!
}

There is a lint proposal which will flag run-time casts into an extension type unless it is transparent with respect to the source type of the cast. Again, the transparent extension type is by convention expected to be an appropriate typing for every object whose type is the representation type, and hence it's OK to obtain an expression of that type by a run-time cast (Object o = ...; if (o is FancyString) ...).
The clause implements Object is just the most extreme case, indicating that it's OK to cast from Object or a top type into this extension type.
At the same time, implements Object does imply that the representation type is non-nullable, which means that a test like e == null on an expression e with static type E? is known to admit every value of type E. If E has representation type int?, say, then an E? could have the value null because this is a possible value of the representation type, and it could have the value null because that's always a possibility for a type of the form T?. So we're avoiding the confusion with the "two reasons for being null" situation, which may be helpful when working with types like E?.
Conversely, if an extension type E does not implement Object (hence, it doesn't implement any other non-extension type, either), then it is (again: by convention) implied that it is inappropriate to obtain a value of type E by a run-time type cast.
There's been a lot of controversy in the language team and in issues about this, but I certainly think it's worthwhile to help developers maintain this distinction.

Thanks for the detailed answer!
I'm currently working on supporting ET in DCM rules and got to the conclusion that we need a lint rule for casting to an extension type when it can be replaced with an invocation. And after seeing your last example (that covers that exact case), looks like this rule would be indeed useful.
I've also supported this:
extension type ET4(int? value) {}

void fn(String str) {
  '1' as ET4; // LINT, mismatching representation type
  if (str is ET4) { } // LINT, mismatching representation type
}

which should help avoiding some of the potential mistakes.
Closing this one.

Thanks for the detailed answer!

Thanks! One more thing, by the way:
extension type ET4(int? value) {}

void fn(String str) {
  '1' as ET4; // Identical to `'1' as int?` at run time.
  if (str is ET4) { } // Identical to `str is int?` at run time.
}

One might say that '1' as ET4 and '1' as int? are similarly dangerous: They are guaranteed to throw at run time.
On the other hand, 1 as ET4 is dangerous for a different reason, even though it will succeed at run time (or perhaps because it will succeed): It creates an expression of type ET4 from an expression of type int, and the type ET4 does not give us any reason to believe that this is an appropriate transition. That's exactly the kind of situation which will be linted by cast_into_extionsion_type.
The conceptual point is that a cast to a type which is reified at run time amounts to a confirmation that the given object has that type, which is something that was chosen when that object was created. For example, every String was born to be a String, and there's nothing wrong in discovering that the value of a given expression of type Object is actually a String.
In contrast, a cast to a type which is not reified (in particular, an extension type) is a claim with no justification that the given object is an appropriate representation object for the given extension type. For example:
extension type Prime._(int it) {
  Prime(this.it) : assert(isPrime(it));
}

void main() {
  var p = 42 as Prime; // Accepted, skips the validation.
}

Extension types give us the opportunity to have certain compile-time checks, introducing distinctions between groups of objects with exactly the same representation at run time (in order words, the compile-time distinction has a zero cost at run time). However, dynamic type tests will eliminate this distinction. That's the reason why we should be careful about performing such dynamic type tests involving extension types.
For some extension types it's not a problem: They have been created under the assumption that any object whose run-time type is a subtype of the representation type of the extension type is appropriate, all of them are good. In that case we can cast up and down, no problem. They are the extension types that I call 'transparent'; by convention, they are characterized by having an implements clause that includes a non-extension type, which is often the representation type (and must in any case be a supertype of the representation type).

One might say that '1' as ET4 and '1' as int? are similarly dangerous:
either both gets a lint

Completely agree.

I don't think there's any particular reason to lint '1' as ET4 because it's going to throw (unless we also want to lint '1' as int?)

Just to clarify, I'm not talking about the analyzer/linter rules, but about a separate tool. And we already provide a rule for the second case https://dcm.dev/docs/rules/common/avoid-unrelated-type-casts/, and this rule now also supports ETs.

but I do think we might want to lint '1' as ET4 because it's a cast into an extension type that isn't transparent.

Did you mean 1 as ET4 (with int and not string)?

because it's a cast into an extension type that isn't transparent.

And looks like even if ET is transparent, linting a cast can be useful (considering the number of ETs in the scope can be more than 1) as now there is no lint for:
extension type ET(String str) implements String {}

void fn() {
  '' as ET;
}

but I do think we might want to lint '1' as ET4 because it's a cast into an extension type that isn't transparent.

Did you mean 1 as ET4 (with int and not string)? If not, I'm a bit confused by I don't think there's any particular reason and then but I do think we might want to lint 🤔

Right, there were some conflicting forces about the same syntax.
I did mean "we might want to lint '1' as ET4 because it's a cast into an extension type that isn't transparent". This kind of cast would be linted by cast_into_extension_type, no matter whether it's going to throw. It's a separate question whether we'd also have a (hypothetical)cast_always_throws lint on the same expression. Of course, we'd also lint 1 as ET4.
As an aside, cast_always_throws is tricky, because most types can include values that are also subtypes of some other given type:
class A {}
class B {}
class C implements A, B {}

void main() {
  B b = C();
  if (b is A) print("Got an A!"); // Cast to unrelated type that succeeds.
}

Hence, it's a very special case when we know that a literal like '1' is definitely not going to have type int? at run time, and we don't have the same kind of guarantee with most user-written types. final classes can provide some exceptions, but in general we can have types like C above and cast_always_throws wouldn't apply.

extension type ET(int number) implements int {}

void fn() {
  '' as ET; // No lint, but throws at runtime
}

That one could be flagged because of some kind of a cast_always_throws lint (if we get something like that). But cast_into_extension_type would not apply, because of the convention that "if you're an int then you're always an appropriate ET".
I think it's important to have the ability to allow transparent extension types to arise because of run-time type checks/tests, promotions, pattern matching, on clauses in a try/catch statement, and whatnot. We know that this isn't going to give us an inappropriate interpretation of the underlying representation object, and it's convenient to have this feature. For example:
extension type FancyString(String it) implements String {
  FancyString get fancify => FancyString('**$it**');
}

void main() {
  var xs = ['Hello', 'world!'];
  if (xs is List<FancyString>) { // Mass-promote all elements in `xs`.
    for (var x in xs) {
      print(x.fancify);
    }
  }
}

This is safer than xs as List<FancyString> exactly because the cast could be arbitrarily wrong (silently), but the promotion will only take us from a given type (like List<String>) to a subtype (like List<FancyString>), and not to an unrelated type.

because most types can include values that are also subtypes of some other given type:

On paper that is true, but we have this rule available for ~2.5 year (maybe even more) and got only a few reports for that particular case. Of course, not all dart users use our tool, but in worst case people can just ignore the lint or rewrite the code, but get a correct warning for other (the majority) cases.

'' as ET;
"if you're an int then you're always an appropriate ET".

How is that appropriate if it throws at runtime? 🤔 I believe no user would want a runtime exception.

I think it's important to have the ability to allow transparent extension types to arise because ...

Sure, but I still don't understand what practical difference does the transparency bring (sorry).
We can get the representation type either way and if it differs from the implements T, it's still related to it.
And I assume no user want to have code like that:
extension type FancyInt(int it) implements int {
  String get fancify => it.toString();
}

void main() {
  var xs = ['Hello', 'world!'];
  if (xs is List<FancyInt>) { // Never true
    for (var x in xs) {
      print(x.fancify);
    }
  }
}

as it simply never works (though in that particular case fancify is highlighted, but we can find another example).

How is that appropriate if it throws at runtime?

The property which is satisfied is that you can trust the run-time type test/check: If it succeeds then you have an appropriate value of a transparent extension type ET, and if it fails then you don't (and the soundness property of the language ensures that you don't get the opportunity to access that inappropriate value with that typing at all).
With a non-transparent extension type like Prime you can perform the test, and it might succeed, and it might still be an inappropriate value of type Prime (like 4 as Prime). In this case you cannot trust the run-time type test/check. It is still OK that it fails when it fails, but it may or may not be OK to use the value when the cast succeeds.
So you shouldn't cast or promote into the non-transparent type, you should call a constructor of Prime. The owners of the declaration of Prime are then able to write some code in the constructors of Prime that validates whatever they want (such that every expression of type Prime which has been obtained via a constructor invocation will be appropriate in the sense that the owners of this declaration have defined).
The practical difference that transparency offers is that it serves as a marker:

This (transparent) extension type is appropriate for every object whose type is the representation type so we can rely on run-time type operations, vs.
This (non-transparent) extension type should be established by running a constructor.

it simply never works (though in that particular case fancify is highlighted, but we can find another example).

Well, fancify is highlighted (and the invocation is a compile-time error) because there is no promotion, because List<FancyInt> is not a subtype of List<String>, because FancyInt isn't a subtype of String.
So that's working as intended: You don't get the type FancyInt for each element of xs because the run-time type test doesn't satisfy the requirements associated with promotions.
In both cases, we want to avoid the plain cast e as ET because it's dangerous. In the first case we promote a List<String> to a List<FancyString>, and it works fine because FancyString is transparent (and, in particular, a subtype of String), and in the second case we get a compile-time error because there is no promotion. All good. And the next thing we do is to fix the code where there is no promotion because missing promotions is rather often a hint that something is wrong. ;-)


The cursor gets stuck in the collapsed YAML zone

Thanks for providing this functionality - its been wished for many many times!
I noticed one strange thing though - if you use the cursor keys to move around, then when the cursor gets to where the collapsed header is you can't use the down arrow to escape out of it. You must go to the mouse and click out of the collapsed area.
Given that it is at the top, I constant find myself going to the top of the document with a keyboard command and then getting stuck there.

By the way, this css solution manages to keep the cursor from not getting stuck. But then, it doesnt exactly hide the yaml either.
.is-live-preview .cm-line .cm-hmd-frontmatter {
  color: var(--text-muted);
}
.is-live-preview .cm-line:not(.cm-active) > .cm-hmd-frontmatter:not(.cm-meta) {
  font-size: 0.8em;
  color: inherit;
  font-weight: 600;
  border-radius: 0.8em;
  padding: 0.2em 0.8em;
  background-color: var(--background-secondary-alt);
}
.is-live-preview .cm-line > .cm-hmd-frontmatter:not(.cm-meta) .cm-selection,
.is-live-preview .cm-line > .cm-hmd-frontmatter:not(.cm-meta).cm-selection {
  color: var(--text-muted);
  background-color: var(--text-selection) !important;
  font-weight: initial;
}

.is-live-preview .cm-line:not(.cm-active) .cm-hmd-frontmatter.cm-def {
  visibility: hidden;
}
.is-live-preview .cm-line .cm-hmd-frontmatter.cm-def .cm-selection {
  visibility: visible;
}

I had noticed this problem, but didn't have a good idea to deal with it at that time because the plugin will not change the rendering process of markdown.
I'll try it you provide way.

Awesome - I'll try it out. My YAML frontmatter is some 30 lines long, so it is a miracle to have this..

Sorry, it seems has some problems. I'll see how to solve it at the weekend.


Add ChangeLog

ChangeLog is very important for utility package. When developer will see picocolors updates in yarn upgrade-interactive (especially major update), they will need a quick and simple way to find differences and update safety.

CHANGELOG.md has been added in https://github.com/alexeyraspopov/picocolors/commit/7e22ad1ee90845d82a3b99cc1cd9e4ff2fa9aefd


Login button missing styling

On register page, login button is not styled appropriately. Should be styled like the others, with a different color (like green).

Closed, not sure by which issue though


Fix disable ut compare

不同dtype的paddle.static.data不会引发paddle.equal(以及其他compare方法)的TypeError。
单测通过：

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Update Notice-Binary

Update NOTICE-Binary file for 1.0 release

Codecov Report

Merging #11294 (b1167b0) into master (1b0199e) will increase coverage by 0.00%.
Report is 8 commits behind head on master.
The diff coverage is n/a.

@@            Coverage Diff            @@
##           master   #11294     +/-   ##
=========================================
  Coverage    0.11%    0.11%
=========================================
  Files        2229     2156     -73
  Lines      119969   116983   -2986
  Branches    18186    17772    -414
=========================================
  Hits          137      137
+ Misses     119812   116826   -2986
  Partials       20       20

Flag
Coverage Δ

integration1temurin11
?

integration1temurin17
?

integration1temurin20
?

integration2temurin11
?

integration2temurin17
?

integration2temurin20
?

unittests1temurin11
?

unittests1temurin17
?

unittests1temurin20
?

unittests2temurin11
?

unittests2temurin17
?

unittests2temurin20
0.11% <ø> (-0.01%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.
see 83 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


feat(material/select): add input to control the panel width

Adds an input that allows users to control the width of the panel.
Fixes #26000.

I need this feature  !
Hope this will be merged soon  ;)

Thx !!


Atomic operations support

Hi,
May I check with you if ardb supports the redis commands multi, exec and guarantee that all the keys in the transaction block will be operated upon only by the current client's request?
Thanks in advance.

Hi yinqiwen,
I dont know about performance of transaction/pipeline but as I know, it's not good as expected. I get data by pipelining always slower than I get data sequentially (5-30keys).
I used Jedis 2.6.0, Ardb 0.8.1.
Thanks,

All commands received from one network connection would be executed in only one thread in ardb. Is there only one tcp connection with pipelining in jedis?

Yes, it's only 1 connection with pipelining.
More info: https://github.com/xetorthio/jedis
This is how I use pipeline to multi-get hash data from Ardb with Jedis.
JedisPool jedisPool = new JedisPool(.....);
Jedis jedis = jedisPool.getResource();
Pipeline p = jedis.pipelined();
for (Integer id : ids) {
p.hgetAll("test:" + id);
}
p.syncAndReturnAll();
// return connection
In my test case, If ids.size() == 1, It just takes less than 1ms to get the result. But ids.size() == 2 or more, it's performed in arround 40ms (????)

Can you test with redis-benchamrk with pipeline options?

./redis-benchmark -h  -p  -P 1 -t get -q
GET: 17211.71 requests per second
./redis-benchmark -h  -p  -P 2 -t get -q
GET: 2396.36 requests per second
./redis-benchmark -h  -p  -P 3 -t get -q
GET: 3585.51 requests per second

But from P > 15, it seems better.
./redis-benchmark -h [host] -p [port] -P 15 -t get -q
GET: 18050.54 requests per second
./redis-benchmark -h [host] -p [port] -P 16 -t get -q
GET: 19157.09 requests per second
./redis-benchmark -h [host] -p [port] -P 17 -t get -q
GET: 20449.90 requests per second
./redis-benchmark -h [host] -p [port] -P 20 -t get -q
GET: 24096.39 requests per second
./redis-benchmark -h [host] -p [port] -P 50 -t get -q
GET: 52083.33 requests per second

Can you use latest code to test?
I got different  benchmark result with latest code:
./redis-benchmark  -p 36379 -t get
====== GET ======
100000 requests completed in 1.30 seconds
50 parallel clients
3 bytes payload
keep alive: 1
99.98% <= 1 milliseconds
100.00% <= 1 milliseconds
76628.36 requests per second
./redis-benchmark  -p 36379 -t get  -P 2
====== GET ======
100000 requests completed in 0.68 seconds
50 parallel clients
3 bytes payload
keep alive: 1
100.00% <= 0 milliseconds
146627.56 requests per second
./redis-benchmark  -p 36379 -t get  -P 3
====== GET ======
100000 requests completed in 0.58 seconds
50 parallel clients
3 bytes payload
keep alive: 1
95.51% <= 1 milliseconds
100.00% <= 2 milliseconds
100.00% <= 2 milliseconds
173310.22 requests per second

Sorry for late reply, I just return from my vacation.
I used latest code (both download source from https://github.com/yinqiwen/ardb/archive/v0.8.1.tar.gz or git clone https://github.com/yinqiwen/ardb.git)
Storage engine is lmdb and default config.


Python 3.12 support for Homebrew

Homebrew packaging script update.
az cli now supports Python 3.12, so can this Homebrew bottle build script be updated so it no longer lists Py3.11 as a requirement?
Not sure if https://github.com/Azure/azure-cli/blob/main/scripts/release/homebrew/docker/formula_template.txt also needs to be bumped?
Related:

https://github.com/Homebrew/homebrew-core/pull/180221
https://github.com/Azure/azure-cli/issues/27673
https://github.com/Homebrew/homebrew-core/pull/192912
2.65.0 release notes → Packaging → "Support Python 3.12"

we only allow pull requests to be submitted to the dev branch

ok I will resubmit

We'll bump it in this PR: https://github.com/Azure/azure-cli/pull/29887


Added Sequence.any as complement to Sequence.all

Just a small addition that I think is useful & expected.
A small off-topic question but I thought I'd ask it here. Why does List.addAll return the argument rather than modified list? Returning the modified list would allow chaining while I'm not sure what use the argument would be.

Nice! You'll want to update the list docs to mention this new method as well.

@gsmaverick You're right of course. Added now. :-)

This is swell!

Alright, reworded the documentation a little and added more tests based the ones of any. A small cleanup patch sneaked in as well.
I hope the wording in the documentation is alright like this. Only false and null will "evaluate to false" but I thought it was anyway too verbose to mention both values.

Wonderful, thanks!


Route not found

when generating a new crud on a plural table, the route is created in the singular, but the references are in the plural. There is therefore an error when using the route:  throw new RouteNotFoundException("Route [{$name}] not defined.");.
The error is on line 276 in the command vendor\takielias\tablar-crud-generator\src\Commands\GeneratorCommand.php.
The fix to apply is:  '{{modelRoute}}' => $this->options['route'] ?? Str::kebab(Str::plural($this->name, 1)), instead of  '{{modelRoute}}' => $this->options['route'] ?? Str::kebab(Str::plural($this->name)),

@open-soft-app Could you please make a PR?


Updated CHANGELOG for April

Category

[x] Content fix
[ ] New article

Docs Build status updates of commit 03b54d1:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

CHANGELOG.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


[BUG] @singular for sap.common.CodeList not considered during type generation

Is there an existing issue for this?

[X] I have searched the existing issues

Nature of Your Project
TypeScript
Current Behavior
Within schema.cds there is the following CodeList defined:

After generating the types with cds.typer in the resulting index.ts file the following definition (erroneous) is created:

This leads to errors when building the CAP application.
Expected Behavior
The generated code should have _LabelingOrderStatusAspect insted and not _LabelingOrderStatuAspect
Steps To Reproduce
No response
Environment
- **OS**: Windows 11
- **Node**: 18.15.0
- **npm**: 9.5.0
- **cds-typer**: 0.20.2
- **cds**: 7.9.0

Repository Containing a Minimal Reproducible Example
No response
Anything else?
No response

Duplicate of https://github.com/cap-js/cds-typer/issues/229


Added Yip Yip the kobold bartender

About the PR

Adds a kobold equivalent for Pun Pun.
Why / Balance

WEH
Media

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog

:cl:

add: A kobold might show up in Pun Pun's place.

FYI: There is a freeze on new pets.

New pets. While fluff is nice we have enough cargo-obtainable fluff animals and department mascots, to add new animals they must have something interesting like new AI behaviors or spawn in proc gen maps.

See #8524 for more info. This PR may be closed any time by a maintaner.

At this point it might make sense to create a second parent for the bartender animals to inherit the common components without having to redefine them every time

FYI: There is a freeze on new pets.

New pets. While fluff is nice we have enough cargo-obtainable fluff animals and department mascots, to add new animals they must have something interesting like new AI behaviors or spawn in proc gen maps.

See #8524 for more info. This PR may be closed any time by a maintaner.

It wont be closed but not merged any time soon.

Ah, darn.
Oh well.

I think it's fine and doesn't really fall under the freeze, since it's not adding a new ghost role, but randomizing the appearance of an existing one.

I think it's fine and doesn't really fall under the freeze, since it's not adding a new ghost role, but randomizing the appearance of an existing one.

New pets. While fluff is nice we have enough cargo-obtainable fluff animals and department mascots, to add new animals they must have something interesting like new AI behaviors or spawn in proc gen maps.

I would call this a new department mascot. And it does not add anything interesting

Suggestions:
The name “nup nup” or “nip nip” would be funnier
Splash text saying “engage in a rivalry with pun pun”
Sometimes pun and yip spawn together. Sometimes both are at the bar, or maybe make it so yip spawns in the maints bar.

I would argue that this is cool and yall are using TOO much logic to decide on funny lizard bartender

Suggestions:
The name “nup nup” or “nip nip” would be funnier
Splash text saying “engage in a rivalry with pun pun”
Sometimes pun and yip spawn together. Sometimes both are at the bar, or maybe make it so yip spawns in the maints bar.

i agree with this

no explanation, just closed? This is a sad day

no explanation, just closed? This is a sad day

they got repo banned

no explanation, just closed? This is a sad day

they got repo banned

oh... what for?

ok hear me out

ok hear me out

april 1 pun pun replacement

no explanation, just closed? This is a sad day

they got repo banned

wait why did they get repo banned?

Reopened since the repoban was in error. (The ban was made due to a misunderstood reference to the stonewall riots in an april fools PR)

no explanation, just closed? This is a sad day

they got repo banned

wait why did they get repo banned?

he censort the LGBTQ capes and made a joke about it beeing funny to censoring it or such...then wiggled himself out so like punch then apologize and everything is fine!

no explanation, just closed?

I censored them in the media preview of the april fools PR that was meant to add them to riot gear (since "pride was a riot" and all that).
I very much did not intend to censor them in game.
The censorship was admittedly not a good idea and that's on me.

https://github.com/space-wizards/space-station-14/pull/25982 is a better approach to this.

I don't really agree that it's strictly better, but there's little point in me arguing when it's still frozen anyway.


[voice-tone] fix link

Fix the wrong fragment: 5th -> fifth in voice-tone.md.

Hi @xiaoyinl, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by Microsoft and real humans are currently evaluating your PR.
TTYL, MSBOT;


fix: Replace America-centric text with global name

Change the header image to "Mii Contest Viewing Tool"


fix note formatting

it does not work the way it was written
#3339

cc @mikadumont

@Logerfo : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Yes went ahead and updated!


Problem with protorpc version

When I install gcloud to new environment it downloads the latest version of protorpc, which is 0.11.0
But this version has some changes, which cause error:
>>> from gcloud import storage
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/Solyony/.virtualenvs/tests/lib/python2.7/site-packages/gcloud/storage/__init__.py", line 43, in <module>
    from gcloud.storage.blob import Blob
  File "/Users/Solyony/.virtualenvs/tests/lib/python2.7/site-packages/gcloud/storage/blob.py", line 28, in <module>
    from apitools.base.py import http_wrapper
  File "/Users/Solyony/.virtualenvs/tests/lib/python2.7/site-packages/apitools/base/py/__init__.py", line 10, in <module>
    from apitools.base.py.extra_types import *
  File "/Users/Solyony/.virtualenvs/tests/lib/python2.7/site-packages/apitools/base/py/extra_types.py", line 38, in <module>
    class DateField(messages.Field):
  File "/Users/Solyony/.virtualenvs/tests/lib/python2.7/site-packages/apitools/base/py/extra_types.py", line 50, in DateField
    class __metaclass__(messages.Field.__metaclass__):
AttributeError: type object 'Field' has no attribute '__metaclass__'

pip freeze:
gcloud==0.7.1
google-apitools==0.4.11
httplib2==0.9.1
oauth2client==1.5.0
protobuf==3.0.0a1
protorpc==0.11.0
pyasn1==0.1.8
pyasn1-modules==0.0.7
pycrypto==2.6.1
rsa==3.2
six==1.9.0

Thanks for filing @Solyony!


Game can crash when founding city between two other cities

Reported by deathfry on Civfanatics forums:

I have bought 2 settlers, made the city in a distance of 1 square from previous city, and then, with the help of second settler, made the city between two cities. Game crashes.

Crashes when city is built adjacent to another, including diagonals


Is it possible to add a custom html5 type validator?

I want to add the native "date" html5 type as a validator for my forms on my own implementation, is this possible to do with parsley?
Here's the current implementation, but not working as native html5 type
// Add date validator
window.ParsleyValidator.addValidator('date', function (value) {
    if (/^(?:[0-3]\d)\/(?:0\d|1[0-2])\/(?:\d{4})$/.test( value ))
        return true;
    else
        return false;
}, 32);

Sorry for not responding before.
No, you can't customize how Parsley translates HTML5 attributes to validations.
PR accepted for missing HTML5 validations though...


Update retry.md

Hi, thanks for this document. I just did a small fix I thought it is wrong.
Regards,
Carlos

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

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/patterns/retry.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

@carlosbourque  Thanks - Yes, your fix looks right. We're reviewing the entire code example now, as it was created awhile ago.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/patterns/retry.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.