Delta Prefabs do not resolve other module's components

When using delta prefabs in an extra module (in this case, JoshariasSurvival) it does not seem to resolve any of the components from non-engine modules (like ManualLabor, Machines, Durability, Hunger, etc).  It ends up giving a bunch of these errors:
Prefab contains unknown component '<NameOfTheComponentFromThePrefab>'

In particular PrefabSerializer.componentLibrary.uriLookup did not have any components from any of the activated modules.

Help me @flo Kinobe, you are my only hope! ;)

Just a sanity check: is the delta defined in a module that contains the new component (or its dependencies contain it)?

Both cases exist,  where the module with the delta also has the component java code.  And where the dependency has the java code.  (is that what you are asking?)

Yes, could you try explicitly specifying the module in component name, so for example:
"ModuleName:ComponentName": { ... }

I am currently investigating if 2a37237f6e20ce77c57f697f2e48aab5fcfc9704 caused it. Apparently the ComponentLibrary gets replaced after the PrefabFormat got registered. Maybe the second ComponentLibrary isn't containing components added by modules?

Ok, there were 2 PrefabDeltaFormats registered for the same time. What I didn't realize first is that it isn't a map but a multi map that stores the asset type to prefab relationship.
So the issue is that the old PrefabDeltaFormat gets neither cleaned up nor overriden by the newer version.
There is a method for unregistring delta formats but it requires the exact delta format instance that got registered before. So it is not possible to simply clean up the old prefab delta formats when a new one gets registered.
@immortius Which solution to the issue do you prefer?  Or do you have a better solution?

Is this specific to deltas? I'm seeing a bunch of new errors in Spawning/Portals and nothing is getting spawned. Again references to other modules are coming up broken.
23:06:35.264 [main] ERROR o.t.p.t.e.TextureRegionTypeHandler - Failed to resolve texture region 'Oreons:icons32.oreonguard'
23:06:35.343 [main] ERROR o.t.p.serializers.PrefabSerializer - Prefab contains unknown component 'Animation'
23:06:35.399 [main] ERROR o.t.p.serializers.PrefabSerializer - Prefab contains unknown component 'Spawnable'
23:06:35.402 [main] ERROR o.t.p.serializers.PrefabSerializer - Prefab contains unknown component 'UnbreathableBlock'
23:06:35.458 [main] ERROR o.t.p.t.TypeSerializationLibrary - Unable to register field of type BlockFamily: not a supported type or MappedContainer
23:06:35.458 [main] INFO  o.t.p.t.TypeSerializationLibrary - Unsupported field: 'engine:BlockItem.blockFamily'
23:06:35.600 [main] ERROR o.t.p.t.e.TextureRegionTypeHandler - Failed to resolve texture region 'Oreons:icons32.oreonbuilder'
23:06:35.625 [main] ERROR o.t.p.serializers.PrefabSerializer - Prefab contains unknown component 'Animation'
23:06:35.626 [main] ERROR o.t.p.serializers.PrefabSerializer - Prefab contains unknown component 'Spawnable'
23:06:35.634 [main] ERROR o.t.p.serializers.PrefabSerializer - Prefab contains unknown component 'Portal'
23:06:35.634 [main] ERROR o.t.p.serializers.PrefabSerializer - Prefab contains unknown component 'Holding'
23:06:35.634 [main] ERROR o.t.p.serializers.PrefabSerializer - Prefab contains unknown component 'Spawner'
23:06:35.657 [main] ERROR o.t.p.t.TypeSerializationLibrary - Unable to register field of type Block: not a supported type or MappedContainer
23:06:35.657 [main] INFO  o.t.p.t.TypeSerializationLibrary - Unsupported field: 'engine:BlockType.block'
23:06:35.661 [main] ERROR o.t.p.t.TypeSerializationLibrary - Unable to register field of type BlockFamily: not a supported type or MappedContainer
23:06:35.661 [main] INFO  o.t.p.t.TypeSerializationLibrary - Unsupported field: 'engine:BlockParticleEffect.blockType'
23:06:35.672 [main] WARN  o.t.p.s.ComponentSerializer - Cannot deserialize unknown field 'groundFriction' onto 'engine:CharacterMovement'
23:06:35.672 [main] WARN  o.t.p.s.ComponentSerializer - Cannot deserialize unknown field 'maxGroundSpeed' onto 'engine:CharacterMovement'
23:06:35.672 [main] WARN  o.t.p.s.ComponentSerializer - Cannot deserialize unknown field 'distanceBetweenSwimStrokes' onto 'engine:CharacterMovement'
23:06:35.835 [main] ERROR o.t.p.serializers.PrefabSerializer - Prefab contains unknown component 'Breather'
23:06:35.842 [main] ERROR o.t.p.serializers.PrefabSerializer - Prefab contains unknown component 'Portal'
23:06:35.842 [main] ERROR o.t.p.serializers.PrefabSerializer - Prefab contains unknown component 'Spawner'
23:06:35.878 [main] ERROR o.t.p.serializers.PrefabSerializer - Prefab contains unknown component 'AccessInventoryAction'
23:06:35.878 [main] ERROR o.t.p.serializers.PrefabSerializer - Prefab contains unknown component 'Spawner'
23:06:35.888 [main] ERROR o.t.p.serializers.PrefabSerializer - Prefab contains unknown component 'Door'
23:06:35.888 [main] ERROR o.t.p.serializers.PrefabSerializer - Prefab contains unknown component 'BlockDropGrammar'
23:06:35.888 [main] ERROR o.t.p.t.TypeSerializationLibrary - Unable to register field of type BlockFamily: not a supported type or MappedContainer
23:06:35.888 [main] INFO  o.t.p.t.TypeSerializationLibrary - Unsupported field: 'engine:ActAsBlock.block'
23:06:35.888 [main] ERROR o.t.p.typeHandling.Serializer - No type handler for type interface org.terasology.world.block.family.BlockFamily used by class org.terasology.world.block.regions.ActAsBlockComponent::block
23:06:35.929 [main] ERROR o.t.p.serializers.PrefabSerializer - Prefab contains unknown component 'Animation'
23:06:35.930 [main] ERROR o.t.p.serializers.PrefabSerializer - Prefab contains unknown component 'Spawnable'
23:06:36.307 [main] INFO  o.t.e.m.l.InitialiseWorld - World seed: "aws888Qr0JUpTPfvDbuVin8jZmIZakzI"
23:06:36.768 [main] INFO  o.t.w.b.internal.BlockManagerImpl - Registered BlockFamily[engine:air]
23:06:36.768 [main] INFO  o.t.w.b.internal.BlockManagerImpl - Registered Block engine:air with id 1
23:06:37.389 [main] INFO  o.terasology.spawning.SpawnerSystem - Grabbed all Spawnable entities - got: []
23:06:37.389 [main] INFO  o.terasology.spawning.SpawnerSystem - Full typeLists: {}

Or is it likely something else / am I doing something wrong? Some of the related code is getting kind of old.

@flo
Explicitly registered formats are expected to be eternal unless explicitly unregistered. Formats registered via the annotation are automatically cleaned up and recreated.
Based on that, unless a reference to the old format can be obtained/retained it would probably be easier to use the annotation and set context up to be injected.

@immortius
The only time when you can specify a ClassFactory for the ModuleAwareAssetTypeManager is when it gets constructed. So the only Context I can pass at that time would be the engine Context which does not contains the ComponentLibrary of the loaded game.

#1819 may fix it, I haven't tested it yet as I am unsure how.

I checked out Portals/Spawning.  Those issues had to do with other json problems and have since been fixed and pushed.

Much appreciated :-)


tqdm needs to be added as a dependency

During a fresh install, you have to install tqdm independent.  Should probably be added as a dependency.

Thanks for pointing this out @alexiskattan.

Thanks for pointing this out @alexiskattan.

Hi @jackmoody11 I would like to work on this issue. I'll have tqdm added as a dependency in the requirements.txt file

Hi @jackmoody11 I would like to work on this issue. I'll have tqdm added as a dependency in the requirements.txt file

Thanks @Yugeshaidu


test: add tests for playwright

#140  👈 (View in Graphite)
next

This stack of pull requests is managed by Graphite. Learn more about stacking.


How can I append the datepicker to the specific element ?

Now, the datepicker is appended to the bottom of the page, but i want to append it to the specific element, is it this posible ?

You are probably missing some of the CSS files or the order of Bootstrap and date picker are on the wrong order.


feat(google-tag-manager): refactor, dev option and $gtm.pushEvent

@pi0 @manniL extracted module logic to a dedicated class for better readability and extensibility
Features:

[x] pushing event from $gtm.pushEvent()

[x] enabled option to allow dev debugging

@pi0 Thanks for the quick feedback ! Updated with requested changes.

@syffs Looks good so far. Other the little change if you can confirm current changes works fine in your project i can merge and release it.

@pi0 agreed and updated !

hi there, how do I configure datalayer? It seems after adding the gtm module in nuxt.config I have no access to this.$gtm.pushEvent() <- should I create $gtm object myself? How?

It seems after adding the gtm module in nuxt.config I have no access to this.$gtm.pushEvent() from my layout component <- should I create $gtm object myself or is it 'shipped' with the gtm module?

@shikinen how do you configure it exactly ? here's how I set it up in nuxt.config.js
...
export default {
...
  modules: [
    ['@nuxtjs/google-tag-manager', {
      id: process.env.GTM_ID,
      pageTracking: true, // disabled by default to prevent double events when using alongside with GA
      dev: true // enable dev
    }]
  ]
...
}

then from your nuxt/vue pages/components:
<script>
export default {
  methods: {
    pushSpecificEvent() {
      this.$gtm.pushEvent({...})
    }
  }
}
</script>

@syffs I'm currently having the same problem as shikinen.  Currently have it setup as your examples, but console logging this.$gtm outputs undefined so I can't push custom events.  Is there something I'm missing?

@syffs I'm currently having the same problem as shikinen. Currently have it setup as your examples, but console logging this.$gtm outputs undefined so I can't push custom events. Is there something I'm missing?

I've also battled with this module a bit, but I think that's largely because of my own assumptions.  I still have pageTracking to figure out - which I'm working on right now, seeing as I've deployed a pretty massive site and it's using this module.  I'll put in a pull request for some additional info in the README, to help those that might face similar things.
Having said all that, I managed to push events.  My config is setup as described in the readme and by @syffs.  Then, in my component, I have something like this (altered to be shared here):
await this.$axios
  .$post(process.env.baseUrl + '/api/send-mail', this.form)
  .then(async () => {
    await this.$gtm.pushEvent({
      event: 'racContact',
      formName: 'Vehicle Enquiry'
    })
    this.$router.push({ name: 'thank-you' })
  })

I'm not saying this is the case for you, but I certainly made HUGE assumptions with how GTM works (I thought it was plug & play like Google Analytics).  What I didn't know was that I had to setup the Tags on GTM, and then setup actions on GA for it all to work.  I'm only mentioning this in case it helps someone else:)

Please migrate to https://github.com/nuxt-community/gtm-module


Thumbnail in post header

While modifying the theme for myself I added support for thumbnail in the post header. Looking at #66 and #59, I see that there's some demand for it.
It is a little different than the screenshot, but I tried to make it fit my version of the theme. I don't know if the way I stylized is what you envisioned. Feel free to disregard this PR if you don't think it fits the theme.
To add the thumbnail all you need to do is add thumbnail with the source in the content front-matter. There's also two css variables to control the size and position of the thumbnail.
This is also my first PR so let me know if I did anything wrong.

@LucasVadilho Thanks for your PR. I'll have a look.

Somethings I've noticed is that it's not optimized for mobile, as the image doesn't wrap below the text.

True, I forgot to add the media rules. In my version I hide the thumbnail.
But it is easy enough to get the thumbnail to wrap below the text.

It's also possible to place it on top of the text, like this:

@LucasVadilho Thanks for your contributions. I was also fiddling around for a bit and what I liked best is a simple rectangular post header. What do you think about such an approach?

My reasoning for doing it this way is that there is more space to display something meaningful and it looks a bit slicker.
Please let me know what you think!

@lxndrblz I think it looks great!
Specially with high aspect ratio images. I did some tests with square and lower aspect ratio images and maybe it needs a bit of fine tuning, or the recommendation to use high aspect ratio images.

@LucasVadilho yes, it does need a bit more fine tuning, I wanted to get the layout right first. 😅
The problem with squared images is that we'd need to zoom/crop them to make them fit into a rectangular shape, otherwise the posts get very long.

I've updated the thumbnail container to a fixed height (which can be variable depending on device width) and made it so that the image covers the container, this way the image is cropped or extended while maintaining it's aspect ratio.

@LucasVadilho I've updated the design a bit more. Let me know what you think.
Desktop:

Mobile:

@LucasVadilho I've updated the design a bit more. Let me know what you think.
Desktop:

Mobile:

Looks great to me!

Looks great to me!

There are still a couple of things which I need to fix, liked the loading of a local image rather than a random via url.

There are still a couple of things which I need to fix, liked the loading of a local image rather than a random via url.


Fix Iceberg ORC timestamps

This commit enables Timestamp columns in Iceberg ORC data files,
and fixes two bugs in handling of Iceberg ORC timestamps,
both a consequence of performing conversion from the
Presto representation to/from the ORC representation twice.
Timestamps in Parquet are still handled incorrectly - -
the Presto Parquet writer is attempting to write the timestamp
as a string, but it should be a long.  The proper fix is to
switch to use the Parquet writer.
This uncomments the timestamp test in TestIcebergSmoke.  However,
it leaves timestamps in testCreatePartitionedTable commented out
until writing Parquet timestamps is fixed.

Thanks!


Support raw memory block control over API

Could enable

Hex dump in GUI
Write memblock with CLI.

fixed in #74


samples: mgmt: mcumgr: smp_svr: Add missing base64 selects

Adds missing selects for CONFIG_BASE64 for overlays which use shell/UART transports that were not updated.

@fabiobaltieri can you have a review and merge please?


[Feature Request] Dashboard metrics as data tables

For years I have maintained a similar data structure for manual spreadsheets. One of the outputs I miss with LubeLogger is the ability to see cost breakdowns as simple numbers in a table. Let me provide an example of my old spreadsheet for context:

To adapt the key info from this to LubeLogger I'd suggest a table like this:

The end goal being to capture the true cost of vehicle ownership from the data being collected, both in terms of per km (distance driven) and time (months/years).
We would still be missing some estimate of future scrap value at a certain time to establish estimates for depreciation (you can see this in my spreadsheet example) but I'd consider that a secondary concern.

@alexsaagi will be included in the next release.
Clicking on the pie chart will bring up this data table:

Instead of Monthly cost, I opted for days because it's a lot easier/cheaper to calculate the number of days between two dates than the number of months. The number of days reflects the days of ownership for a specific vehicle. If purchase and sold date are both provided then that is what will be used. If only purchase date is provided then it will calculate the number of days between the current date and the purchase date.
Otherwise, it will fall back to the earliest record(e.g.: first service/repair/upgrade/fuel/odometer/tax records) to establish the initial date of ownership and today's date to establish the length of ownership, this isn't the most ideal way as it's only an approximation of length of ownership so it's highly recommended that users set the purchase date in the Vehicle details itself.
Number of miles driven is based on the min odometer reading and max odometer reading of all records, unless a year is selected from the dropdown instead of All Time, then it will use the min and max odometer reading of records within that year ONLY. This allows the user to narrow down the ownership costs for a particular year instead of over time.
This data table shows the following:
Cost Per Day - The total cost over the ownership length of the vehicle.
Cost Per Mile - The total cost over the miles driven during the life of the vehicle OR the year selected.
Total Cost - self-explanatory


Fix url to Visual Studio Marketplace

the marketplace url had spaces which didn't render in markdown and went to the wrong url.  It looks like the correct url is https://marketplace.visualstudio.com/azuredevops

@reznet Thank you for for reporting this, . I just merged another PR that fixes this issue (you to were the first to notice, thanks for letting us know). Since this was just fixed in https://github.com/MicrosoftDocs/vsts-docs/pull/2138 I'm closing this one. Thank you.


InvalidOperationException on context.Succeed of PendingRequirements in ASP.NET Core 2.0

Found while understanding AuthorizationHandlerContext and IAuthorizationHandler:
I tried to context.Succeed PendingRequirements (which from both name and comment looks like the correct one to use). This leads to the following exception because the succeeded ones are removed from the hashset. https://github.com/aspnet/Security/blob/1867eab2e99d6828dda20e29483a0821de8e9ce9/src/Microsoft.AspNetCore.Authorization/AuthorizationHandlerContext.cs#L92-L96
System.InvalidOperationException occurred
HResult=0x80131509
Message=Collection was modified; enumeration operation may not execute.
Source=System.Core
StackTrace:
at System.Collections.Generic.HashSet`1.Enumerator.MoveNext()
at WebApplication1.TestAuthorizationHandler.HandleAsync(AuthorizationHandlerContext context)
at Microsoft.AspNetCore.Authorization.DefaultAuthorizationService.d__7.MoveNext()
Repro:
WebApplication1.zip
Steps to reproduce:

Create ASP.NET Core 2.0 Web Project (in my case .NET 4.7, but that shouldn't matter)
Add Authorization and change the policy to require Authentication
Add AuthorizationHandler like below
Run and wait for Exception

    public class TestAuthorizationHandler : IAuthorizationHandler
    {
        public Task HandleAsync(AuthorizationHandlerContext context)
        {
            foreach (var contextPendingRequirement in context.PendingRequirements)
            {
                context.Succeed(contextPendingRequirement);
            }
            return Task.CompletedTask;
        }
    }

Workaround:

ToList()
Use Requirements instead of PendingRequirements

We could change this property to return a copy of the collection:
https://github.com/aspnet/Security/blob/1867eab2e99d6828dda20e29483a0821de8e9ce9/src/Microsoft.AspNetCore.Authorization/AuthorizationHandlerContext.cs#L60

In the meantime, please use the workaround. Thanks for the report!


Add GHC, Cabal, and Stack to macOS and Windows

Tool information

Tool name: GHC, Cabal, Stack
Add or update? Add
Desired version: Latest supported GHC versions (8.10.1, 8.8.3, 8.6.5), Latest version of Cabal (<IP_ADDRESS>), Latest version of Stack (2.1.3).
Approximate size: ~250MB per GHC. ~25MB for Cabal. ~9MB for Stack.
If this is an add request:

Brief description of tool: Haskell language (already present on Linux). Stack is a cross-platform program for developing Haskell projects.
URL for tool's homepage: https://www.haskell.org/ https://haskellstack.org

Area for Triage: Haskell
Question, Bug, or Feature?: Feature
Virtual environments affected

[x] macOS 10.15
[ ] Ubuntu 16.04 LTS
[ ] Ubuntu 18.04 LTS
[x] Windows Server 2016 R2
[x] Windows Server 2019

Can this tool be installed during the build?
Yes. Download and install takes approximately 2-3 minutes per GHC version.
Are you willing to submit a PR?
Yes

Further information:
While building cross-platform support for actions/setup-haskell, I've gone through and figured out how to install GHC, Stack and Cabal on Linux, Windows, and macOS as uniformly as possible. It would be really nice to have the most common 3 versions of GHC available on all 3 platforms so that most CI pipelines could shave off 1-3 minutes per run.
For the PR, how would you like GHC to be installed on macOS and Windows? The most reliable way to do so on windows is through chocolatey, and through macOS it's ghcup (which is how I've set it up in the action currently).
I'm happy to split the Stack tool request into a separate issue if desired.

I'm not sure where to put this, but currently for Haskell on Linux, there's a lot more installed than seems to be necessary. Is that something you're interested in changing at all? It seems excessive to have 11 versions of GHC when common projects will only use 1 (or 3 at most).
Culturally, Haskell has a convention of supporting the last 3-4 major compiler releases, so at the time of writing that would suggest only needing GHC 8.10.1, 8.8.3, and 8.6.5. As for Cabal, having only versions <IP_ADDRESS> and <IP_ADDRESS> is sufficient (even then, Cabal <IP_ADDRESS> is only necessary for people who need backwards compatibility with old shell scripts).
Because the revamped actions/setup-haskell supports downloading any available GHC, it seems to me that pre-downloading less common GHC versions could safely be skipped (should you care to save time/space).

I'm 👍 on supporting just the last 3-4 major releases (there are way too many ghc's installed by default here).
I'm also 👍 to add Stack as part of this.

Any update on this?

@jared-w , it is on the our backlog but we don't have updates or ETA for now.

Thanks! Would a PR help speed up the process? (I'd imagine probably not because the mac builder code doesn't seem to be in the repo?); this isn't blocking any work I have either way, but I know many projects would benefit from it.

Hello @jared-w ,
Just a question about Stack. I have found that you are expecting to find Stack in tool-cache dir for all OSs: https://github.com/actions/setup-haskell/blob/master/src/installer.ts#L69
We will put it there for Windows / macOS. But it looks like currently, for Ubuntu we install Stack to different directory. Does it mean that your action downloads it every build?

@maxim-lobanov there's actually a subtle reason for why I did things that way although it ultimately boiled down to a trade-off between code complexity and speed. tl;dr yes it installs stack every time on linux, but it doesn't have to.
On Linux, stack is preinstalled, but not to a versioned directory. As such, the only reliable way of making sure the right version of stack is on the path is checking for the version of stack using something like stack --version-numeric and parsing that to determine if the version specified is already installed. Otherwise the setup action would check if stack existed at the default install path (yes) and then would be done; which means that if you manually specified a different version, it wouldn't actually download it. The lack of a versioned path also makes it difficult to use setup-haskell with multiple versions of stack.
I could've special cased the behavior for stack but it was a wall clock time difference of less than 5 seconds between installing stack and not and I was reluctant to add a complex bit of logic to a rarely used codepath.
With tool-cache, i can version the downloads which avoids the issue. Cabal and ghc both were accessible on all operating systems either through a tool that supported versions (ghcup, chocolatey), or a versioned path (ubuntu), which also avoided the issue.

@jared-w , that sounds good to me.
On Windows and macOS we will install Stack to the tool-cache dir.
If you want us to consider moving stack to tool-cache dir on Ubuntu, feel free to raise separate issue.

https://hub.zhox.com/posts/introducing-haskell-dev/ contains relevant information.
With #919 it seems that even cabal-install and ghc are now preinstalled, msys2 isn't (at least it's not mentioned in included software). Without msys2 the cabal-install and ghc are not so useful (I think you could not compile network package for example).

@phadej , Actually, MSYS2 was added to our images recently too in scope of #30. It should be deployed soon

The failing jobs in #919 both do seem to install msys2. Is it installed with chocolatey or by some other means? Having multiple installations would be a recipe for disaster.
To answer myself: Looks like it's isntalled manually https://github.com/actions/virtual-environments/blob/master/images/win/scripts/Installers/Install-Msys2.ps1 so chocolatey itself won't detect that it's installed. Have to check whether cabal is installed after msys2 and whether cabal scripts have detected msys2. Not today though.

Also I should ask, how your image deployment works. May I assume that once a job in a repository (cabal in this case) gets a new version of an image all other new jobs will get the new image version as well. Or is it arbitrary?
In short, can I already change cabal CI scripts to assume that msys2 is installed? As it seems that (some) jobs run using newer image version.

On 21. May 2020, at 18.08, Maxim Lobanov<EMAIL_ADDRESS>wrote:

@phadej , Actually, MSYS2 was added to our images recently too in scope of #30. It should be deployed soon
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

@phadej , yep, we don't put MSYS2 on PATH for now because it will override some default tools and break existing customers so we just install it to the separate directory.
We deploy images by rings (the whole ring at a time) and your repository is attached to one particular ring. It means that if your job got new image version, all next jobs will consume new image version too.

@maxim-lobanov that clarifies and sounds good. Thanks for the explanations!

I relaying a message from https://github.com/haskell/cabal/pull/6829#issuecomment-632589222

What I don't get is why the image has to have every single version installed at once? Why can't you simply use something like AppVeyor's build matrix? Isn't that simpler? or does github actions not support something like that.
The motivation seems to be that having tools preinstalled would save startup time.
The thing that takes largest amount of time is msys2, which you say will be preinstalled or could be. installing GHC and cabal on appveyor takes 1minute. it's just a download and extract. It'll save bandwidth sure, but highly doubt much in compile time..
You can speed this up by instead of caching the installs, cache the binaries using --cachelocation and --use-download-cache which should drop the time needed down to seconds (just unzip) and make your life a lot easier...

We have added GHC, Cabal, and Stack to macOS and Windows images. Changes were merged and will be delivered to all VMs in a week.


add of project - patternlab webpack ed

Adding the links for: https://github.com/Comcast/patternlab-edition-node-webpack
Made a temporary logo for now.

 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.Bulfair, Matt seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Advice to SBI

The sbi should provide a mechanism for the presence of detection functions. This facilitates error detection with the S-mode program and the expansion of the SBI function.
I recommend adding the following two interfaces.
/*
 * function : int sbi_has_feature(uintptr_t fid);
 * description : this is used to detect whether sbi has a certain function.
 * parameter fid : id of the function to be detected
 * return :
 *		0  - sbi provides this feature
 *		-1 - sbi does not provide this feature
 */
int sbi_has_feature(uintptr_t fid);

/*
 * function : int sbi_errno(void);
 * description : This is used to detect whether sbi has a certain function.
 * return : wrong number(the error number needs to be defined in advance
 *          and consistently backward compatible),0 - no error.
 */
int sbi_errno(void);

@wxjstz : Thanks for the suggestions.
We already have a proposal to extend SBI that has these suggestions.
The discussion around it can be found here.
http://lists.infradead.org/pipermail/linux-riscv/2018-October/001974.html

I am slightly worried that the sbi_errno will complicate things by introducing (more?) global state in the SBI implementation. (Or will it be hart-local state?)
Thus, I'd prefer the complete error code to be returned from the erroring SBI call itself.

Global errno (or even thread-local errno) would be a mistake.
I actually think the Linux approach works OK: return a single value, but values in the range {-511, -1} are considered errors, whereas return values in the range {0, 2^XLEN-512} are considered success.
Failing that, returning a struct seems OK.

@aswaterman Yes, but it can be solved by reference.
E.g:
Int sbi_fxxx(...,type* out);

@aswaterman But you can not return 0 as success, because sib_getchar maybe return 0.

0 implies success. sbi_getchar is OK

I don't think it makes sense to have a global error state. The SBI call should return all of the information needed. Having to probe for error information adds extra state complexity as well as overhead of M-Mode calls.
Setting the SBI error status in a pointer passed via the SBI call sounds like a good approach. It's similar to how other user space applications work and allows us in the future to return valid negative numbers when we don't have an error (as the error is set in the error arg).
Something like this
/* Returns the CPU that was started.
 * @err indicates an error ID if one occurred, otherwise 0.
 * @err can be NULL if no error detection is required.
*/
int start_cpu(int cpu_num,..., Error *err);

We're adding a bunch of error handling and probing stuff in v0.2, so I'm going to close this as it suggests a very specific approach and the current one is slightly different.


Number of treatment cycles for all treatments

From the image below, we only have the number of cycles for the first 2 treatments. The rest are just check box fields without a field to put the number of cycles.

This is how it's portrayed in the form obtained from stakeholders

Resolved in branch ParkerMayIssues. Schistosomiasis, soil-transmitted helminthiasis, and trachoma now display a treatment cycle input field and two checkboxes as outlined by the example of onchocerciasis.


Can't open on the latest Sketch version

Version 3.3.3 (12081) is the latest release, but when opening the sketch file, a error message states that "Unable to open file. This document was created with a newer version of Sketch. Please upgrade to the latest version and try again."

It's made with the Beta version of Sketch. If you download it - it won't overwrite the stable version but exist as a separate app. http://www.sketchapp.com/beta/
I hope they update the official version soon so we're not Beta-only :)

Ok, got it. Thanks :)


Terraform 0.14 upgrade

what

Upgrade to support Terraform 0.14 and bring up to current Cloud Posse standard

why

Support Terraform 0.14

/test all

/test all

/rebuild-readme

/rebuild-readme

/test all

/test all


Upgrade yarn and cleanup npm commands

Upgrade yarn to 1.15.2
Remove references to 'npm install' (causes double-download of node modules) and replace npm commands in package.json with yarn for consistency
Use --mutex on any yarn install command, including those in the scripts section of package.json
Add yarn.lock file for NodeServices (somehow this was missed during first npm->yarn conversion)

CI checks failing on what appears to be 2 flaky tests. @SteveSandersonMS @ryanbrandenburg are these known flaky tests?
Microsoft.AspNetCore.Components.E2ETest.ServerExecutionTests.ServerBindTest.CanBindTextboxDecimal

OpenQA.Selenium.NoSuchElementException : no such element: Unable to locate element: {"method":"id","selector":"textbox-decimal"}
(Session info: headless chrome=74.0.3729.131)
(Driver info: chromedriver=2.43.600210 (68dcf5eebde37173d4027fa8635e332711d2874a),platform=Windows NT 10.0.17763 x86_64)

Templates.Test.SpaTemplateTest.AngularTemplateTest.AngularTemplate_IndividualAuth_Works_LocalDb

System.Threading.Tasks.TaskCanceledException : The operation was canceled.
---- System.IO.IOException : Unable to read data from the transport connection: Operation canceled.
-------- System.Net.Sockets.SocketException : Operation canceled

CI checks failing on what appears to be 2 flaky tests. @SteveSandersonMS @ryanbrandenburg are these known flaky tests?

For the components ones, here's a PR that hopefully makes these robust: https://github.com/aspnet/AspNetCore/pull/10075

Thanks! I'll rerun the tests on this PR.

Looks like the Blazor tests are passing now. Only test failures now are 2 flaky tests in Helix (Kestrel and WebSockets).
I believe this is ready to merge if I can get a :shipit:


Fix typos in README

This PR just fixes a few small typos in the README that may be confusing to students.

Thanks for finding and fixing this.


Fix calculation of shift amount for vector single-width shift instructions

Description
According to the current RISC-V ISA manual, only the lower $log_2(SEW)$ bits of the shift amount are used to determine the actual shift amount for single-width vsll, vsrl, and vsra. Currently, due to an extra loop iteration, one extra bit is included. This PR addresses this issue by simply shifting target_width_bits right by one before the loop.

@danielschloms Sorry, I never got notified for this…
@JoGei Would you also like to take a look? (Should be a trivial change, though)

@danielschloms Seems like CI failed (I am note quite sure if it was fine the last time I worked on the repo, hence it could also be an existing bug). Are you able to run the test locally to verify what is going on?

@PhilippvK Locally most of the unit tests fail, but they also do so when compiling from rvv1.0.

Hi, yes you are correct @danielschloms
This was also already stated in the original rvv0.9 spec so wrong in sofvector.
How did you encounter this, though?  Am I correct with this example:

SRL, SEW=8, shift amount passed as 9=0b1001
[bug impl, current] vd[x] = vs[x] >> 9 which means vd[x] = 0 for all elements x of vs because we would "overshift"
[correct] vd[x] = vs[x] >> (0b1001 & 0b111) = vd[x] =  vs[x] >> 1 for all elements x of vs

@JoGei Seems right to me. I found this when debugging these RISC-V tests with ETISS, where the expected values matched the specification but the tests failed.

@JoGei Seems right to me. I found this when debugging these RISC-V tests with ETISS, where the expected values matched the specification but the tests failed.

Okay, but the test suite seems to be wrong, too?
https://github.com/PhilippvK/riscv-tests/blob/47d33635daf784ab65c488dbfd7103efe8e4e09c/isa/rv32uv/vsll.c#L12-L17
Note the expected result for the element 7 and 15 (0x1 << 32, e8 ). The test expects: 0x80, which is 0x1<<7, however, 32 should result in a shift amount of 0 since SEW=e8 dictates only the first 3 bits (all 0) to be used?

@JoGei I think you have it misaligned:
In: 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
<<:0,    1,    2,    3,    7,    15,   31,   32,   0,    1,    2,    3,    7,    15,   31,   32
Re:0x01, 0x02, 0x04, 0x08, 0x80, 0x80, 0x80, 0x01, 0x01, 0x02, 0x04, 0x08, 0x80, 0x80, 0x80, 0x01


Not specifying --wait shows output of stack when updating

Ran nova --profile root --params ms.yml --verbose deploy dogebox/app and Got:
Fetching outputs of dependent stacks...
Building component...
Found artifact(s) 20150513T113349: dogebox.zip
Generating cloudformation template...
Uploading cloudformation template to S3...
Checking cloudformation stack status...
Deploying cloudformation stack...

Output:

	project: dogebox
	component: app
	deploymentId: ...
	stackId: ...
	apiElbAddress: ...
	apiApplication: ...
        ... blah

Fixed with pull #33


v0.19.0 Release Checklist Due 2018-05-29

Remaining actions:

[x] Review release (product owner)
[x] Approve release (product owner and release manager)
[x] Create binaries (any DRUD maintainer)
[x] Draft release notes (release manager)
[x] Draft additional announcements for blog, newsletter, etc (not applicable at the moment)
[x] Create release (release manager)
[ ] Update Roadmap (TPM/release manager)

For additional background information, please see our Product Release instructions here.

Current diff https://github.com/drud/ddev/compare/v0.18.0...HEAD

Updated issue summary to reflect roadmap updates as part of release checklist.

Here is my working copy so far.
ddev v0.19.0 Review
Executive Summary
Based on the following analysis, ddev v0.19.0 is not ready for release.
Milestone Overview (CMS Specific Functionality)
TODO

UX/DX:
Documentation:
Security:

Additionally, there are...
Testing
Performed by Rick Manelius as of 2018-05-29
Hardware Setup
I’m using a laptop with the following high-level specifications:

MacBook Pro: Retina 15-inch Mid 2015
2.2 Ghz Intel Core i7
16 GB 1600 MHz DDR3 RAM
250 GB Hard Drive
macOS Sierra 10.12.4

Software Setup

Xcode
Docker 18.03.1-ce
Git 2.15.1

Repositories Used

DDEV d4c4590
Drupal 7.59

Preparation

ddev

git checkout d4c4590f
make clean && make darwin
ddev version => v0.18.0-20-gd4c4590f

Results
Working
Needs Work
Decisions
Based on the following analysis, ddev v0.19.0 is not ready for release.
Recommendations

TODO

Found a few things in my initial issue scan that could be updated/improved.

Now that we have the "ddev describe" should show direct ephemeral port/url via localhost, we can/should update our documentation example https://ddev.readthedocs.io/en/latest/users/cli-usage/#listing-project-information. I've updated the OP to include the tag "needs docs" to reflect that it should have had that.

I'm intending to test the following for the release. @rfay, if you have any additional items to callout and test more explicitly, let me know. I'm focusing on end-user changes and new features vs bug fixes, but if there are ones that I should draw more attention to...
Milestone Overview (Reducing WIP and UX/DX Improvements)
There is a significant amount of work being done under the hood in this release in preparation of getting back onto a more formal roadmap schedule (see updates here https://github.com/drud/ddev/wiki/Roadmap). Still, there were several user experience features worth calling out.

UX: Adding Support for Windows 10 Home
DX: Allow environment variables to propogate into php-fpm
DX: "ddev describe" should show direct ephemeral port/url via localhost
DX: Fix issues with duplicated hostnames
DX: Add .mysql to allowable database extensions for import.

In addition there were a considerable amount of bug fixes and optimizations (see https://github.com/drud/ddev/compare/v0.18.0...e5d9c86020). We've addressed regressions on Linux support, moved the docker image definitions into the repo, and performed upgrades to our testing infrastructure.

@rickmanelius I reviewed the list you put there and think it's good. I was quite surprised how many commits/PRs we have in this release.  I think people would just choke on the info if we tried to describe every fixed bug.

@rickmanelius Please test against current master: https://github.com/drud/ddev/commit/4ddabc7c15620842e185476b6dfc15e944e58479, which hopefully will be the hash we tag as v0.19.0

@rfay Yup I checked out that exact commit, so I'm all set there.
BTW, I'm now done testing 3 of 5. I think I have found a regression for the multiple hostname validation. I'm posting it here in case this is how it was intended to work.

DX: Fix issues with duplicated hostnames

Stock Drupal 7.59 site with default answers to ddev config
I open and modify config.yml to specify non-default ports
Complete a basic site install w/standard profile.
Edited .ddev/config.yml and viewed the blank entry for hostnames and the instructions below.

See recommendations. The instructions on how to do this should probably be consistent with the stubbed out entry.

I modified this to read additional_hostnames: [site1, site2]
I re-ran ddev start
I was prompted to get /etc/host modified.
I see output for HTTP/HTTPS versions of all 3 hostnames
The site is now accessible through all 3 sites (primary as project name and site1 and site 2)
I create a new, blank site called "site1" and attempt to run ddev start

This takes a significant amount of time (30s?) before it times out.

The router times out and leave it in an unhealty state.
If I remove the conflict site with ddev rm, the other sites are now available again.
I'm not sure this was fully working in https://github.com/drud/ddev/pull/825.

The conflicting hostname fix did not address identical hostnames across different projects. Only within a project.
The conflicting project name regression should have been fixed.

But that never meant that we solved the possibility of having two projects fighting each other for additional_hostnames. I think this is mentioned in the additional hostname uniqueness issue.

@rfay Excellent. Thanks for the insight on that. I'll move that to a recommendation then and test conflict just within a project.

ddev v0.19.0 Review
Executive Summary
Based on the following analysis, ddev v0.19.0 is ready for release.
Milestone Overview (Reducing WIP and UX/DX Improvements)
There is a significant amount of work being done under the hood in this release in preparation of getting back onto a more formal roadmap schedule (see updates here https://github.com/drud/ddev/wiki/Roadmap). Still, there were several user experience features worth calling out.

UX: Adding Support for Windows 10 Home
DX: Allow environment variables to propogate into php-fpm
DX: "ddev describe" should show direct ephemeral port/url via localhost
DX: Fix issues with duplicated hostnames
DX: Add .mysql to allowable database extensions for import.

In addition there were a considerable amount of bug fixes and optimizations (see https://github.com/drud/ddev/compare/v0.18.0...e5d9c86020). We've addressed regressions on Linux support, moved the docker image definitions into the repo, and performed upgrades to our testing infrastructure.
Testing
Performed by Rick Manelius as of 2018-05-30
Hardware Setup
I’m using a laptop with the following high-level specifications:

MacBook Pro: Retina 15-inch Mid 2015
2.2 Ghz Intel Core i7
16 GB 1600 MHz DDR3 RAM
250 GB Hard Drive
macOS Sierra 10.12.4

Software Setup

Xcode
Docker 18.03.1-ce
Git 2.15.1

Repositories Used

DDEV 4ddabc7c
Drupal 7.59

Preparation

ddev

git checkout 4ddabc7c
make clean && make darwin
ddev version => v0.18.0-26-g4ddabc7c

Results
Working

DX: "ddev describe" should show direct ephemeral port/url via localhost

Stock Drupal-7.59 w/default ddev config
Verified new db, web, dba, and router images pulled tagged with v0.19.0
When ddev start finished, I observe 3 URLs posted: http://PROJECTNAME.ddev.local, http://PROJECTNAME.ddev.local, and http://<IP_ADDRESS>:RANDOMPORT
Running a Drupal site install against one and attempting to resolve both HTTP URLs resolves to the same site.
I ran docker ps -a and located the PROJECTNAME nginx container and confirmed the portnumber routes to the HTTP port.
I modified .ddev/config.yml to include non-standard ports for HTTP/HTTPS and verified this continues to work.
I note that ddev list doesn't show the 3rd URL without the project name. That's fine.
ddev describe -j shows the http://<IP_ADDRESS>:RANDOMPORT value in the "urls" key.
CONFIRMED

DX: Add .mysql to allowable database extensions for import.

Stock Drupal 7.59 site with default configurations.
ddev ssh and drush dl backup_migrate and drush en backup_migrate
Visit http://drupal-7.59.ddev.local:81/admin/config/system/backup_migrate and submit the "Backup Now" button.
Verified a drupal-7.59.ddev.local-2018-05-30T20-00-39.mysql.gz download
exit container and run ddev rm --remove-data then ddev start
Verify no database exists when attempting to reach http://drupal-7.59.ddev.local:81
run ddev import-db --src=~/Downloads/drupal-7.59.ddev.local-2018-05-30T20-00-39.mysql.gz

FAILED. We still have an issue where our nginx container will not properly export gzip.

Renamed the exported db to remove the faulty .gz extension, run gzip
Re-run ddev import-db with the corrected file and it imports!
CONFIRMED

DX: Allow environment variables to propogate into php-fpm

Stock Drupal 7.59 site w/default ddev config before overriding default HTTP/HTTPs ports to 81:444.
ddev start and standard site install.
Created the docker-compose.env.yaml file as per https://stackoverflow.com/questions/50109020/how-can-i-set-environment-variables-inside-ddevs-containers.
ddev restart and ddev ssh
Running "echo $TYPO3_CONTEXT" shows the environment value of "Development"
touch test.php with '<?php $env=getenv("TYPO3_CONTEXT"); echo "TESTVAR=$env";' shows the environment value of "Development"
CONFIRMED

DX: Fix issues with duplicated hostnames

Stock Drupal 7.59 site with default answers to ddev config
I open and modify config.yml to specify non-default ports
Complete a basic site install w/standard profile.
Edited .ddev/config.yml and viewed the blank entry for hostnames and the instructions below.

See recommendations. The instructions on how to do this should probably be consistent with the stubbed out entry.

I modified this to read additional_hostnames: [site1, site2]
I re-ran ddev start
I was prompted to get /etc/host modified.
I see output for HTTP/HTTPS versions of all 3 hostnames
The site is now accessible through all 3 sites (primary as project name and site1 and site 2)
I then add another entry of "drupal-7.59" which matches the projectname of "drupal-7.59"
ddev start
I confirmed that it ignored the duplicate entry.
CONFIRMED

Not Retested

UX: Adding Support for Windows 10 Home

I still need to familiarize myself more with Windows 10 and 10 Pro in a way that is efficient enough for me to perform these tests without holding up the release. To that end, if we've confirmed the Docker Toolbox install, we should get on stack overflow

Decisions
Based on the following analysis, ddev v0.19.0 is ready for release.
Recommendations

HTTPS on <IP_ADDRESS>: I still would like to see HTTPS on the direct localhost:RANDOMPORT webhead connection. It's not mandatory for this release.
Backup Migrate gzip compression library. We should get this installed on the nginx container.
Multiple Hostnames. While this is a nitpick, not everyone understands the multiple ways of inputting .yaml. The uncommented entry is "additional_hostnames: []" whereas the instructions use the syntax of newlines prefaced by a "-". It might be worth making those consistent. Also, we are not validating if other hostnames are actively being used, so it's possible to collide and put the router in an unhealthy status.

Ok... I'm happy with how this turned out. I'm still not happy that I'm not able/willing to give Windows 10 the attention it needs, but I may need to rely more on @andrewfrench in the future to confirm parity when @rfay gets a Windows specific fix in (and vice versa when @andrewfrench submits a PR).
Ready for getting this together as a release. Thanks, everyone!

Yay! @andrewfrench and I will schedule time today to go through the release process and document it in docs/developer.

@rickmanelius responses to your Recommendations:

HTTPS on <IP_ADDRESS>: I still would like to see HTTPS on the direct localhost:RANDOMPORT webhead connection

If you'd like HTTPS on the web container port, it would mean duplicating the cert generation features in the web container or possibly changing the architecture to terminate HTTPS on the web container. It would also mean turning on a separate port for nginx, and exposing 2 different ports from the web container. It's not a small rock, and I'm not sure how it fits architecturally.

Backup Migrate gzip compression library. We should get this installed on the nginx container

I didn't understand this statement. I assume you might be referring to the backup_migrate bug in https://www.drupal.org/project/backup_migrate/issues/2926610, which we don't have any control of. Anyway, when you do a direct download of a backup_migrate db, it doesn't get gzipped.

Multiple Hostnames. While this is a nitpick, not everyone understands the multiple ways of inputting .yaml. The uncommented entry is "additional_hostnames: []" whereas the instructions use the syntax of newlines prefaced by a "-". It might be worth making those consistent

I agree with your concern on that. The reason that the default is the [] array syntax is that's what golang outputs for an empty yaml array. The bulleted yaml approach used in the docs/examples there is easier to read and easier to use. Both work. I don't know any reasonable way to get the golang yaml to output the bulleted version, so we could change the doc to use the array syntax if that's important.

we are not validating if other hostnames are actively being used, so it's possible to collide and put the router in an unhealthy status.

I think we should probably figure out how to solve this one in Make ddev-router more transparent about failures. I added a note about this case in that issue.

Removing this from the v.19 milestone as we close out that release using this checklist.

Release generated. Blog articles and newsletter shipped. Last step on @dclear to update the roadmap to reflect the completed milestone and we can close this out.

I edited the op with a checkbox for "Followup issues spun off if we need them."

Closed Milestone
https://github.com/drud/ddev/milestone/30?closed=1
Closed project board
https://github.com/orgs/drud/projects/12
Updated roadmap
https://github.com/drud/ddev/wiki/Roadmap

Closing, as I believe this is done.


png images are being previewd as if they were jpg

Hi.
Before all, thanks for your awesome work.
I don't know if it something wrong in my implementation but the png files do not actas transparent (I experimented changing the preview background.
Is there any turnaround?

Hi, thanks for the issue, I'll work on it soon. 🤘

Hey ! Some news about this issue ?


feat: refactoring to use typescript

now only twitter and reddit handlers are pending to update

pending modules to update. localPath must be done per url!

[ ] facebook
[ ] imgur
[ ] instagram
[ ] pinterest
[ ] tiktok
[ ] twitter
[ ] youtube


Release new version 0.3.1

Can you release a new version 0.3.1 with latest bugfixes and add 0.3.0 and 0.3.1 to the redmine plugins repository? Your plugin ist still listed with 0.2.0...

Done.  Thanks for contributing.


📃: Quiz App

🔴 Title : Quiz App
🔴 Tech stack : Html, css,js
🔴 Objective :  quiz game that lets users answer multiple-choice questions and get instant feedback
🔴 Summary : Scoring, timer, feedback, and question randomization
📸 Screenshots
N/A

✅ Details to Include When Taking the Issue:
Name : Vivek Kumar Garg
Participant Role (Specify the Open Source Program name, e.g., GSSOC, Hacktoberfest, etc.): GSSOC contributor

Happy Contributing! 🚀
Wishing you all the best on your open source journey. Enjoy! 😎

already have


unable to reach trust server at this time: 500.

i have the ca file   STAR.myrepo.com.crt ,and i do not know what cause the problem,anyone can help?
# export DOCKER_CONTENT_TRUST=1
# export DOCKER_CONTENT_TRUST_SERVER=https://harbor.myrepo.com:4443
# cp /etc/docker/certs.d/harbor.myrepo.com/STAR.myrepo.com.crt $HOME/.docker/tls/harbor.myrepo.com:4443/

# docker push harbor.myrepo.com/library/alpine:v3.0
The push refers to a repository [harbor.myrepo.com/library/alpine]
5bef08742407: Layer already exists
v3.0: digest: sha256:1072e499f3f655a032e88542330cf75b02e7bdf673278f701d7ba61629ee3ebe size: 528
Signing and pushing trust metadata
You are about to create a new root signing key passphrase. This passphrase
will be used to protect the most sensitive key in your signing system. Please
choose a long, complex passphrase and be careful to keep the password and the
key file itself secure and backed up. It is highly recommended that you use a
password manager to generate the passphrase and keep it safe. There will be no
way to recover this key. You can find the key in your config directory.
Enter passphrase for new root key with ID 2ed8e02:
Passphrase is too short. Please use a password manager to generate and store a good random passphrase.
Enter passphrase for new root key with ID 2ed8e02:
Repeat passphrase for new root key with ID 2ed8e02:
Enter passphrase for new repository key with ID 7de8f0e (harbor.myrepo.com/library/alpine):
Repeat passphrase for new repository key with ID 7de8f0e (harbor.myrepo.com/library/alpine):
unable to reach trust server at this time: 500.

@ywk253100
Any thoughts?

@yixingjia
Please help to take a look at this issue.

@justlooks please provide the logs, it can be found /var/log/harbor/.
You should probably package the whole directory and upload it in this issue.

Also are you used a wildcard multicast domain certificate?

i fixed by reinstall harbor


Character following "[]" in scene2d labels has wrong width

I wrote a small reproduction class for this. Tested in libgdx 1.6.5 on OS X 10.10.5.
The basic idea is that when using color markup in scene2d labels, the character immediately following the "pop color" control code, [], either doesn't have its width set correctly, or is not offset the correct amount from the character before the control code. The problem isn't confined to fonts with fixed width glyphs specified, but it does help illustrate it better.
The above code run with the call to font.setFixedWidthGlyphs commented out: Small but noticeable difference. This difference is more pronounced on monospace fonts (even with no fixed width glyphs specified).

With the call uncommented:

Note:

How more pronounced the effect is the more [] controls are in the string, and
The amount of space between the last 't' and the first period on each line.

This may or may not be related to #3239, but my hunch is it's a different subtle bug somewhere else in the glyph width calculation :-)

GlyphLayout parses text into a number of GlyphRuns. A glyph run is a list of Glyphs and their positions. Each glyph run has the same y coordinate and color. GlyphLayout uses BitmapFont#getGlyphs to convert characters from the text into glyphs to store in the GlyphRun. getGlyphs provides a place to "shape" the run. By default this lays out the characters using kerning, but BitmapFont can be subclassed to choose which glyphs are displayed based on surrounding characters (eg, for Punjabi). Rendering a glyph layout means drawing each of the glyph runs.
Because a color change starts a new glyph run, getGlyphs doesn't apply kerning between the characters. This issue and #3166 are the downsides to how GlyphLayout works. Unfortunately this is not easy to fix.

Latest libgdx does kerning between color runs on the same line.


Add block proposer public keys and signature to block header

Current dependencies on/for this PR:

feature/proof-of-stake

PR #570

PR #577   👈

This comment was auto-generated by Graphite.


useFakeTimers breaks with native promise implementation

🐛 Bug Report
Use the native Promise implementation breaks useFakeTimers
To Reproduce
Steps to reproduce the behavior:
jest.useFakeTimers();

test('timing', () => {
  Promise.resolve().then(() => console.log('promise'));
  setTimeout(() => console.log('timer'), 100);
  jest.runAllTimers();
  console.log('end');
});

Expected behavior
It should log:

promise
timer
end

This is because runAllTimers should trigger the async promise handler first, then the timeout delayed by 100ms, then return control.
Actual Behaviour

timer
end
promise

Link to repl or repo (highly encouraged)
https://repl.it/repls/PhysicalBriefCores

The workaround I've found is to add:
global.Promise = require('promise');

to my setup.js

@SimenB that's my thought as well

I think you're right about why this doesn't work, but I don't think you're really right about this working as intended. Promises are a form of timer, and because in the past everyone was using polyfills, this used to work and only recently stopped working.

The fact people use promises differently isn't Jest's responsibility - it was never a feature of Jest that you could run Promises using its fake timers. As you've noted, polyfilling it with something that uses timers as its implementation makes it work again

The fact people use promises differently

i'm not clear on what you mean by this?

it was never a feature of Jest that you could run Promises using its fake timers

when fake timers were created, native Promises didn't exist. The intention was always that as new forms of "timer" were added to the language, fake timers would support them. For example, setImmediate is not a timer, but is supported. As you can see on https://repl.it/repls/PhysicalBriefCores
The goal of jest has, for a long time, included being easy to use and un-surprising. This is very surprising behaviour for fake timers to have.

I would like to expand on this issue since it gets amplified by uses of setTimeouts within the async code:
jest.useFakeTimers();

test('timing', async () => {
  const shouldResolve = Promise.resolve()
    .then(() => new Promise(r => setTimeout(r, 20)))
    .then(() => console.log('promise'));

  setTimeout(() => console.log('timer'), 100);
  jest.runAllTimers();
  await shouldResolve;
  console.log('end');
});

Timeout - Async callback was not invoked within the 30000ms timeout specified by jest.setTimeout.
This issue here is there is nothing to continuously advance the timers once you're within the promise world. shouldResolve will never resolve.
The best solution that i have come up for this is a utility function to continuouslyAdvanceTimers
function continuouslyAdvanceTimers() {
 let isCancelled = false;

 async function advance() {
   while (!isCancelled) {
     jest.runAllTimers();
     // eslint-disable-next-line no-await-in-loop
     await new Promise(r => r());
   }
 }

 advance();
 return () => {
   isCancelled = true;
 };
}

So the unit test would look like so (or use a before/after each)
jest.useFakeTimers();

test('timing', async () => {
  const shouldResolve = Promise.resolve()
    .then(() => new Promise(r => setTimeout(r, 20)))
    .then(() => console.log('promise'));

  setTimeout(() => console.log('timer'), 100);
  const cancelAdvance = continuouslyAdvanceTimers();
  await shouldResolve;
  cancelAdvance();
  console.log('end');
});

@KamalAman
test('timing', async () => {
const shouldResolve = Promise.resolve()
.then(() => console.log('before-promise'))
.then(() => new Promise(r => setTimeout(r, 20)))
.then(() => console.log('after-promise'));
setTimeout(() => console.log('timer'), 100);
await Promise.resolve()
jest.runAllTimers()
await shouldResolve
console.log('end');
});

I don't think there's any point adding to this issue. The problem is clearly stated and defined. All this needs is for one of the jest maintainers to acknowledge that this is not working as intended, then someone can submit a patch to fix it.
It would be good if the "Needs more info" tag could be removed, since this quite clearly doesn't need more info.
Please refrain from "me-too" style comments.

I love this issue, really. After one day sucking I found this and it works now. Miracle. Incredible that I have to do hacks like this to test an async functionality with a test framework that supports async.

Note that it is impossible, by JavaScript spec, for an async function to return anything other than native promises, so there's not anything we can do generically in Jest. This has to be solved in the engines themselves. You can do what #6876 documents (transpile everything), but that's not something Jest can decide to do for you.
See e.g. https://github.com/petkaantonov/bluebird/issues/1434 and https://github.com/sinonjs/lolex/issues/114. Your best bet is probably to follow the Lolex issue - both because Jest is going to move its fake timers implementation to be backed by Lolex, but also because Ben actually maintains Node, so any news on what would allow async functions to function (hah) correctly when faked is probably gonna be posted there.
If at some point there is a way to return custom Promise from async functions in Node, then we can look into adding APIs for it in Jest. Until then, we're unlikely to do anything

For what it's worth, we have resorted to overwriting window.setTimeout when using a setTimeout in a promise chain:
// Place this in the test file/test block when you want to immediately invoke
// the callback to setTimeout
window.setTimeout = (fn: () => void, _timeout: number): void => fn()

Posting this work around in case it helps someone else:
await Promise.resolve().then(() => jest.advanceTimersByTime(intervalMs));
Broader example:
  function sleep(ms: number): Promise<void> {
    return new Promise((resolve) => {
      setTimeout(resolve, ms);
    });
  }

  export async function foo(fn: () => T, waitMs: number): Promise<T> {
     await sleep(waitMs);
     return fn();
  }

  it('calls fn after x milliseconds', async () => {
    jest.useFakeTimers();

    const fn = jest.fn()
    const sleepMs = 1000
    foo(fn, sleepMs)

    expect(fn).not.toBeCalled();
    await Promise.resolve().then(() => jest.advanceTimersByTime(sleepMs));

    expect(fn).toHaveBeenCalledTimes(1);

More context here: https://stackoverflow.com/questions/51126786/jest-fake-timers-with-promises/51132058#51132058

For those looking for the solution to this problem when using jest.useFakeTimers("modern");
https://github.com/facebook/jest/issues/10221#issuecomment-654687396

Since @sinon/fake-timers has async versions of all timer-advancing methods designed to also run microtasks (https://github.com/sinonjs/fake-timers/pull/237), could this functionality be exposed in jest to solve this issue?

@tatethurston I hate that this solution works, but it does. 😆  Thank you.

I read that mocking nextTick could be the problem? I tried jest.useFakeTimers({ doNotFake: ['nextTick'] }); but that didn't solve this issue. I still don't get chained promises executed.

 const cancelAdvance = continuouslyAdvanceTimers();

Thanks, Simple and efficient

Thanks for this thread and particular comment ❤
I also hate that it works, but it does :)
Also could be wrapped into helper function 🤔
async function withAllTimersRun(callback) {
  const cancelAdvance = continuouslyAdvanceTimers();
  const result = await callback();
  await cancelAdvance();
  return result;
}

So in tests it could be:
//...
await withAllTimersRun(() => someFunctionWithALotOfPromisesAndTimeouts());
//...

For what it's worth, we have resorted to overwriting window.setTimeout when using a setTimeout in a promise chain:
// Place this in the test file/test block when you want to immediately invoke
// the callback to setTimeout
window.setTimeout = (fn: () => void, _timeout: number): void => fn()

Thanks for this information. When I used it with @KamalAman solution it worked perfectly.


test_jsonyamlxml_parser: remove deprecated json.load encoding argument

It was deprecated in Python 3.1 and removed in Python 3.9.
Fixes https://github.com/spdx/tools-python/issues/158.

Thanks. LGTM. The failures in CI are transient as @licquia has pending PRs to fix this!


add a variable for previous release

e.g. for copying files from previous release to current deployment.
At the moment I use
{{ansistrano_deploy_to}}/current/<...>
for that, but you can't use this after symlink was created.

Hi, I think you are looking for shared folders and shared files options unless I am missing something

Closing this as the options would be:
1 - Using the shared folders and shared files
2 - Create a hook before-symlink. At that point you can obtain both the current path (previous release) and the new release folder. In fact, if you need to do something for the new release, better do it before changing symlink
current folder (old release): "{{ ansistrano_deploy_to }}/{{ ansistrano_current_dir }}"
new release folder: "./{{ ansistrano_version_dir }}/{{ ansistrano_release_version }}"

You're right - my use cases are before symlink, so I will use "{{ ansistrano_deploy_to }}/{{ ansistrano_current_dir }}", thanks.
My use cases are a copy_vendors as in Capifony (http://capifony.org/cookbook/speeding-up-deploy.html) and plugins which the user may upload in his installation.
Btw, Capistrano 3 has also removed the variable for the previous release, but they are thinking on re-introduce it (see https://github.com/capistrano/capistrano/issues/877 ).

I assume you are running composer install/update in the box itself, right? If that is the case, you will already have the previous deps in the filesystem (composer cache folder if I remember correctly) so I am not sure if you get much of an improvement unless the tmp folders are deleted of course
In terms of Capistrano, we follow most of the ideas but we don't try to be an exact copy. It is interesting they removed the variable and are thinking of putting it back!
If there is a good and common use case for it we will certainly add the variable but we prefer to limit the amount of internal variables as much as we can to keep simplicity

I've found copying the previous vendors files, and then updating it (possibly with new, or updated dependencies) is usefully faster than re-creating the vendors directory, especially if nothing has changed. If there are new versions, or entirely new packages, then there is, at least, a lot less to install.


MSID: 98040 Version: 1 DOI: 10.1101/2<IP_ADDRESS>7457

MSID: 98040
Version: 1
Preprint DOI: https://doi.org/10.1101/2<IP_ADDRESS>7457
Step 1. Awaiting reviews
Editorial to post reviews via hypothesis
Useful links:

DocMap: https://data-hub-api.elifesciences.org/enhanced-preprints/docmaps/v2/by-publisher/elife/get-by-manuscript-id?manuscript_id=98040
New model tracking: https://docs.google.com/spreadsheets/d/1_fHaoOy7hjyocptKtVJRijeNpUY4hBS7Ck_aVmx6ZJk/
Reviews on sciety: https://sciety.org/articles/activity/10.1101/2<IP_ADDRESS>7457

For trouble shooting (e.g. no Docmaps available):

DocMap issue addressing: https://miro.com/app/board/uXjVNCwK6EI=/
Explore DataHub DocMaps API: https://lookerstudio.google.com/reporting/4c2f0368-babb-4beb-b5b3-497e7e7b0f08/page/ejphD
Unmatched submissions and preprints: https://lookerstudio.google.com/u/0/reporting/9f86204f-3bf7-477c-9b18-5c5ef141bf69/page/p_gxi57ha93c
Unmatched manuscripts spreadsheet: https://docs.google.com/spreadsheets/d/15QcK8w-ssB7109RQEDtFpJPZ0J5HTGxoHa_2TtpMBbg/edit#gid=1336081641

Step 2. Preview reviewed preprint
Production QC content ahead of publication
Instructions:

QC preview: https://prod--epp.elifesciences.org/previews/98040v1
Update ticket with any problems (add blocked label)
When QC OK, add QC OK label to ticket and add publication date and time to https://docs.google.com/spreadsheets/d/1amAlKvdLcaDp5W8Z8g77NmkwbMF5n_u89ArSqPMO8jg
Move card to next column
(At end of the day post link in #enhanced-preprint and ask for PDF to be generated)

Useful links:

Preprint DOI :  https://doi.org/10.1101/2<IP_ADDRESS>7457
Confirm reviews returned by EPP: https://prod--epp.elifesciences.org/api/reviewed-preprints/98040/v1/reviews
To update the MECA path in the docmap: https://docs.google.com/spreadsheets/d/1mctCQuNFBjSn97Lihy7_vBO6z7-N-oqyLv4clyi6zHg

Step 3: Awaiting search reindex
This step adds the reviewed preprint to the homepage: https://elifesciences.org
The search reindex is triggered once an hour. We need the reviewed preprint to be indexed as the search application serves the journal homepage.
Useful links:

Jenkins pipeline to reindex search can be triggered sooner or monitored here: https://alfred.elifesciences.org/job/process/job/process-reindex-reviewed-preprints/

Step 4: Published! PDF requested
Waiting for PDF to be generated
Useful links:

PDF tracking: https://docs.google.com/spreadsheets/d/106_XeDjmuBae7gexOTNzg60lapeqjl2aRn9DzupGyS8/

Step 5: Introduce PDF to data folder and git repo
Upload PDF to relevent folder in git repo https://github.com/elifesciences/enhanced-preprints-data/
Step 6: Done!

[ ] Kettle is on!

@fred-atherden This isn't displaying on EPP

Checking the temporal workflow indicates that the issue is the DocMap is missing a preprint publication date:

No idea why - it's a bioRxiv preprint...
In any case, I've added the date to the unmatched manuscripts spreadsheet. When DataHub pulls in the info and surfaces this in the DocMap (hopefully in the next ~2 hours or so), we can then check if the reimport in EPP has been successful.

@naushinthomson, this is looking all good now I think. LMK if you notice any further issues I can help with


docs: add api rst files in opendataset, geometry and client module

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 82.921%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
5292

Relevant Lines:
6382

💛  - Coveralls


0.next - Upgraded phpstan to 0.12 and added baseline config

https://github.com/cakephp/app/issues/758

The appveyor config needs an overhaul.


[5.5-05142021][CodeComplete] Fix crash when completing inside a result builder containing a variable initialized with nil

Explanation: Code completion currently crashes when completing inside a result builder that contains a variable initialized by the nil literal. Add a nullptr check to prevent the crash.
Scope: Type checking
Risk: Low (only affects code paths that were previously crashing)
Testing: Added a test to the validation suite
Issue: rdar://78017503
Reviewer: @xedin (of original PR https://github.com/apple/swift/pull/37421)

@swift-ci Please test

@swift-ci Please nominate


fix docs

Codecov Report

Merging #357 (2e57268) into main (4a09859) will decrease coverage by 0.00%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #357      +/-   ##
==========================================
- Coverage   79.20%   79.19%   -0.01%
==========================================
  Files          38       38
  Lines        3121     3120       -1
==========================================
- Hits         2472     2471       -1
  Misses        649      649

Impacted Files
Coverage Δ

src/methods/aggregate.jl
93.28% <ø> (ø)

src/methods/classify.jl
98.55% <ø> (ø)

src/methods/crop_extend.jl
89.88% <ø> (ø)

src/methods/extract.jl
78.94% <ø> (ø)

src/methods/mask.jl
89.65% <ø> (ø)

src/methods/mosaic.jl
91.46% <ø> (ø)

src/methods/rasterize.jl
91.81% <ø> (ø)

src/methods/resample.jl
73.07% <ø> (ø)

src/methods/trim.jl
95.65% <ø> (ø)

src/methods/warp.jl
89.65% <ø> (ø)

... and 2 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Fixed beta wikidata url

Description (required)
Fixes   #3228 App crashes at start on current master
What changes did you make and why?
Fixed malformed WIKIDATA_URL for prod flavor
Tests performed (required)
Tested betaDebug on Pixel-2 Api 27

Codecov Report

Merging #3229 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff           @@
##           master   #3229   +/-   ##
======================================
  Coverage    6.01%   6.01%
======================================
  Files         270     270
  Lines       11600   11600
  Branches      905     905
======================================
  Hits          698     698
  Misses      10845   10845
  Partials       57      57

Continue to review full report at Codecov.

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


Initial monitor response can lock up server.

Describe the bug

Code in MonitorVerbHandler.processVerb will hold onto the event loop until it completes. In turn this means that, if the monitor: request results in a large number of notifications being sent to the client in the initial monitor response, the server becomes completely unresponsive to other requests.
Code snippet from MonitorVerbHandler.processVerb:        var receivedNotifications =
            await _getReceivedNotificationsAfterEpoch(fromEpochMillis);
        for (var notification in receivedNotifications) {
          processReceivedNotification(notification);
        }

Primary problem is that processReceivedNotification is not async, it calls no awaits, so if the receivedNotifications list is large, no other event will be handled until the for loop completes.

There are additional issues that should be cleaned up while fixing this bug

If the receivedNotifications list is very large, then it could cause the server process to use a lot of memory
This code currently first of all gets all matching notifications, then sends them. For a large number of notifications, this will introduces noticeable latency before notifications start to be sent to the client
Lastly - currently we first of all register the notification callback, and then start sending the matched notifications.

Let's consider the following scenario:

Client sends monitor request
Server registers notification callback
Server sends matched notifications to the initial response

Now imagine that step 3 takes a long time, and while it is being executed, a notification arrives that should be sent to the client
But if we allow other events to get a look-in, then we could have a notification arrive and get sent to the client, and it will be out-of-order because the server is still sending older matching notifications
With the current code, this is not actually possible, since the event loop is being hogged by the initial monitor response

To Reproduce
Steps to reproduce the behavior:

Have @bob send 10,000 notifications to @alice
Have alice client send monitor:0 to @alice secondary
While the 10,000 notifications are being returned, the server will not respond to any other commands.

Expected behavior

MonitorVerbHandler.processVerb needs to allow another event to get a look-in. (Easy)
We implement the fix in such a way as to ensure that out-of-order notifications can not happen (Quite difficult)

No progress during PR47 due to lots of other unplanned work. Moving to PR48


Adding handling of shadowed standard types in mutually recursive types.

Shadowing standard type, while definitely bad style, will result in invalid generated code using ppx_deriving (and I know a code base with those...):
type es =
  | ESBool of bool
  | ESString of string
and bool =
  | Bfoo of int * ((int -> int) [@compare fun _ _ -> 0])
and string =
  | Sfoo of String.t * ((int -> int) [@compare fun _ _ -> 0])
  [@@deriving ord{ allow_std_type_masking }]

will call Pervasives.compare for ESBool and ESString, yielding to a crash at runtime. The first solution implemented in this patch is to reject derivation of shadowed types. If you known what you're doing, you can use the allow_std_type_masking to force derivation (if possible), and try to call the good functions while generating code for the mutually recursive types (like the one added in the examples).
While testing, I found that some warning were generated with types of only one constructor, due to the unreached wildcard pattern, there is a fix for this.
All of this implemented for ord/eq/show

Shouldn't it be called allow_std_type_shadowing?
The code looks good, but I don't quite understand how it works. Could you post an example of broken and corrected generated code?

Ah yes, I will rename the option, for the broken code:
type es =
  | ESBool of bool
  | ESString of string
and bool =
  | Bfoo of int* ((int -> int)[@compare fun _  -> fun _  -> 0])
and string =
  | Sfoo of String.t* ((int -> int)[@compare fun _  -> fun _  -> 0])
[@@deriving ord]

Was generating:
let rec compare_es : es -> es -> int=
  fun lhs  ->
    fun rhs  ->
      match (lhs, rhs) with
                                   (* this is wrong, we want compare_bool *)
      | (ESBool lhs0,ESBool rhs0) -> Pervasives.compare lhs0 rhs0
                                   (* this is wrong, we want compare_string *)
      | (ESString lhs0,ESString rhs0) -> Pervasives.compare lhs0 rhs0
      | _ ->
          let to_int = function | ESBool _ -> 0 | ESString _ -> 1 in
          Pervasives.compare (to_int lhs) (to_int rhs)
and compare_bool : bool -> bool -> int=
  fun lhs  ->
    fun rhs  ->
      match (lhs, rhs) with
      | (Bfoo (lhs0,lhs1),Bfoo (rhs0,rhs1)) ->
          (match Pervasives.compare lhs0 rhs0 with
           | 0 -> ((fun _  -> fun _  -> 0)) lhs1 rhs1
           | x -> x)
      | _ ->
          let to_int = function | Bfoo (_,_) -> 0 in
          Pervasives.compare (to_int lhs) (to_int rhs)
    (* while not wrong, this pattern is useless because we have only one
        constructor, and it generate a warning during compilation *)
and compare_string : string -> string -> int=
  fun lhs  ->
    fun rhs  ->
      match (lhs, rhs) with
      | (Sfoo (lhs0,lhs1),Sfoo (rhs0,rhs1)) ->
          (match String.compare lhs0 rhs0 with
           | 0 -> ((fun _  -> fun _  -> 0)) lhs1 rhs1
           | x -> x)
      | _ ->
          let to_int = function | Sfoo (_,_) -> 0 in
          Pervasives.compare (to_int lhs) (to_int rhs)
    (* while not wrong, this pattern is useless because we have only one
        constructor, and it generate a warning during compilation *)

And now generates (when using the option):
let rec compare_es : es -> es -> int=
  fun lhs  ->
    fun rhs  ->
      match (lhs, rhs) with
      | (ESBool lhs0,ESBool rhs0) -> compare_bool lhs0 rhs0
      | (ESString lhs0,ESString rhs0) -> compare_string lhs0 rhs0
      | _ ->
          let to_int = function | ESBool _ -> 0 | ESString _ -> 1 in
          Pervasives.compare (to_int lhs) (to_int rhs)
and compare_bool : bool -> bool -> int=
  fun lhs  ->
    fun rhs  ->
      match (lhs, rhs) with
      | (Bfoo (lhs0,lhs1),Bfoo (rhs0,rhs1)) ->
          (match Pervasives.compare lhs0 rhs0 with
           | 0 -> ((fun _  -> fun _  -> 0)) lhs1 rhs1
           | x -> x)
and compare_string : string -> string -> int=
  fun lhs  ->
    fun rhs  ->
      match (lhs, rhs) with
      | (Sfoo (lhs0,lhs1),Sfoo (rhs0,rhs1)) ->
          (match Pervasives.compare lhs0 rhs0 with
           | 0 -> ((fun _  -> fun _  -> 0)) lhs1 rhs1
           | x -> x)

This work in two phases, first we build a set of the name of all the types declared in a mutually recursive way, if a standard type is detected, an error is raised. If the option is present, we try to generate, and when we find a type name present in the set of type name, we force the generation for user types, instead of the standard one.

Ok, got it. It's a rather niche case but I have no objections since the code seems clear enough.

The option renaming is now included in the pull request

Note: I've reverted this and implemented proper hygiene instead. The behavior is still accessible if you use e.g. bool [@nobuiltin] explicitly.


Jetty combined ldap

Before applying this, please see https://github.com/puppet-community/puppet-rundeck/issues/94 and https://github.com/puppet-community/puppet-rundeck/issues/96 as these fixes were merged to this feature branch (JettyCombinedLdap).

Since Rundeck 2.5 there is a new very useful feature:  LDAP "shared authentication credentials".
see http://rundeck.org/docs/administration/authenticating-users.html#ldap for more details.
This pull request provides puppet's implementation of that feature
to activate this feature $auth_types should be assigned as

ldap_shared

or

active_directory_shared

That means that rundeck will authenticate user with LDAP (or AD) and will perform authorization with FileLoginModule (realm file) to assign provided roles

http://rundeck.org/docs/administration/authenticating-users.html#jettyrolepropertyfileloginmodule

hey @liamjbennett
Just wondering.
Do you need a help on this? Do you want me to fix something?
You need to revert only this change: https://github.com/rooty0/puppet-rundeck/commit/e2a4f4fe969029980e7be5ab6dc9c80281728d06
These changes are tested and they are works without any issues.
I using this in production at my work.

Hello:
Not an owner of the repo, but can you resolve the conflicts in this PR? This also serves as a reminder to the owners.

@liamjbennett c'mon, let's merge it :)
it is really useful feature, I use this module including these changes in production since June.

https://github.com/puppet-community/puppet-rundeck/issues/94 was removed from this branch

@rooty0 as @jyaworski commented, can you squash please?

Looking at the change this looks fine. Happy to merge when it gets squashed.

I'll try, didn't do squash before :)

@nibalizer, I think I did it. Do you want me to change commit message?

@rooty0 yes please can you rewrite the commit message to be one description of the complete change. Sorry to nitpick on procedure here.

@nibalizer it's ok, commit message fixed. Let me know if I need to fix something else. Thanks


YR_TRYCATCH: Don't abort process if unrelated code triggers an exception while scanning. (Win32)

As described in #632

What about POSIX systems? I mean, I believe this issue also applies to POSIX. We are setting a signal handler for SIGBUS and SIGSEGV during the duration of the scanning, if another thread causes such a signal our handler is going to be called and the assertion will fail. Am I right?

Right. We should get rid of the assert(false) there, too.

Ideally, our exception_handler function should invoke a signal handler that the application may already have installed (or invoke the default action for the signal), but I am not quite sure how to do that.


[MRG] Small fixes to evoked.plot visuals.

Closes https://github.com/mne-tools/mne-python/issues/4234

works great
thanks @jaeilepp
+1 for merge

@jaeilepp just one thing. Apparently if I set selectable=True then the tight_layout is not called before the UI is blocked. can you replicated?

Fixed.

Codecov Report

Merging #4236 into master will increase coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #4236      +/-   ##
==========================================
+ Coverage   86.18%   86.19%   +<.01%
==========================================
  Files         358      358
  Lines       65004    65007       +3
  Branches     9911     9912       +1
==========================================
+ Hits        56024    56033       +9
+ Misses       6248     6244       -4
+ Partials     2732     2730       -2

works great
one last thing. Why do we need block=True when interactive=True? as the plot cannot alter the evoked object I think it's safe not to block. @jaeilepp wdyt?

Yeah, I think you're right. I'll remove it.

great
one one last thing. When I select I see:

you'll see that the text at the bottom is cropped. Can you make the font a bit smaller like the "eeg" in the subtitle?

@jaeilepp this works but I think we have a bigger bug :(
Running
evoked.copy().pick_types(meg="grad", eeg=False).plot(selectable=True)

after the first selection I get this:

but if I select 20 times I see this:

you see that amplitudes shrink :(

you see that amplitudes shrink :(

Well the amplitudes are constant, the y-scale changes. This can probably be fixed by using axvline and axvspan as opposed to fill_between (assuming that's what we use), e.g.:
http://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.axvspan.html#matplotlib.axes.Axes.axvspan

indeed. It's not as serious as I thought

The ylim shift was introduced with some version of mpl. I remember fixing this for raw.plot too.

A better fix is to use axvline and avspan if possible

works like a charm for me.
good to go from my end

Also Travis failure is legitimate

@jaeilepp you have a legit travis failure

@jaeilepp you have the same problems with the interactive selections with raw.plot_psd

still works for me.
@jaeilepp do you want to take care of the plot psd interactive in the same PR?
you'll need to update what's new and I feel we should backport this if it's doable without conflict.

@jaeilepp do you want to take care of the plot psd interactive in the same PR?

It should work now. It's using the same function.

indeed
can you update wha's new and merge? and try to backport (only if no conflict)?
thx a lot

thanks @jaeilepp

Backported.

thanks !


program added for PrintInvertedPyramidPattern.kt

Why:

Closes #5003
What's being changed:

@harshraj8843 @TechnicalAmanjeet  please review


React Spectrum: Compat with React 19 types

Closes https://github.com/eps1lon/DefinitelyTyped/issues/30
Changes

A forwardRef render function was used as a component. This was a bug that couldn't be caught with types but now is. Previously the types assumed the second argument was legacy context. The fix was to wrap the render function in forwardRef: 1f9935a (#1)
breaking changes due to useReducer type parameters. The manual change is quite trivial and I never found more than one issue per repo. Still, worth a codemod but low pri: :https://github.com/eps1lon/types-react-codemod/issues/375
Storybook story fns were being used as components. They matched component types in React 18 since the second argument was treated as legacy context. The fix was always to use them as StoryFn(propsLike) instead of <StoryFn {...propsLike} />. I only illustrated the migration in one callsite: 48971e8 (#1). There are too many to do manually. Worth to codemod this but I'm not working on it.
relied on createFactory types without a need: d566212 (#1)

Unresolved issues

framer-motion uses the deprecated, global JSX namespace. Tracking in https://github.com/eps1lon/DefinitelyTyped/issues/25
lucide-react uses removed ReactSVG type. Tracking in https://github.com/eps1lon/DefinitelyTyped/issues/25

Remaining failures are due to 3rd party library and misuse of Story fns from Storybook.


TestFoundation: tm_zone does not exist on Windows

There is no equivalent for tm_zone on Windows.  Simply ignore the test.

CC: @millenomi

@swift-ci please test


Updates the Local Deployment guide

A couple of things have changed since last time:

by default, the finos- prefix and -k8s suffix were removed from the application names from the bundle, making them shorter.
bypass-client-id and bypass-client-secret were renamed to gitlab-client-id and gitlab-client-secret.
the nginx ingress charms have been added to the bundle.
at the moment, the charm bundle should be deployed from edge.

/cc @pedroleaoc


filtering by __contains

Is possible to create to set filter fields to icontains or something similiar ? e.g. Name__icontains.

You can customize the filter as you need via customizing the Filter Form
https://django-slick-reporting.readthedocs.io/en/latest/topics/filter_form.html
Hope you find this helpful


Setup webhook for discord

This comment serves as a test

Ah, the webhook URL needs to have a /github ... Here's a link to the endpoint:
https://discord.com/developers/docs/resources/webhook#execute-githubcompatible-webhook

tested by sending most recent failed push. closing


DuckDNS will no longer start

When I try to start, it exits as follows:
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] done.
[services.d] starting services
[services.d] done.
INFO: Using main config file /data/workdir/config
ERROR: Lock file '/data/workdir/lock' present, aborting.
[cmd] /run.sh exited 1
[cont-finish.d] executing container finish scripts...
[cont-finish.d] done.
[s6-finish] waiting for services.
[s6-finish] sending all processes the TERM signal.

I'm getting this too and I think because of this my SSL cert expired. I can't get the add-on working thus  it won't renew the CERT though Let’s Encrypt.

UPDATE. Mine is working now. I did the following simple steps.

Saved my DuckDNS config to a note pad file for a short backup.
Uninstalled the DuckDNS add-on.
Restarted HA. (Don't think this is needed but it's quick)
Reinstalled the DuckDNS and put my saved config back in.
Started DuckDNS and it seems to be working now.

15 minutes later however and my SSL files have not been updated. I'll wait a few hours and check again. If cert is still expired I'll report back.

Yep. Same here.

Seeing this as well: I have the lockfile but no "live" certificate, guess the cert was expired. Quick workaround in a ssh session to the ssh community addon in unprotected mode:
docker exec -it hassos_supervisor rm /data/addons/data/core_duckdns/workdir/lock


Supporting Spark Connect Dataframe

Missing functionality
After databricks runtime 14, the dataframe type is changed in notebook. It was pyspark.sql.dataframe.DataFrame, but now it is pyspark.sql.connect.dataframe.DataFrame
it fails to work with ydata-profling because ydata-profiling expects either pandas.DataFrame or pyspark.sql.dataframe.DataFrame
Proposed feature
Support pyspark.sql.connect.dataframe.DataFrame for profiling
Alternatives considered
No response
Additional context

Bumping this as I also have this issue

Bump - same issue here. It would be great if I didn't have to go to pandas first.


ci: run pytest in github actions

Hey @philsv, I had some ideas for testing in Github Actions.
For a successful test run it's necessary to set the EIA_TOKEN as secret for Actions. (This should be also described in the README.md or a CONTRIBUTING file)
If you like my contribution i will also write some docs relating Actions.

Hi @csautter good idea. I've added the EIA_TOKEN as a secret in the repository.
Sure, if you like you can add some docs to that.

Thanks @csautter, merging now


Offer a proper command for publishing a Flutter package

Currently to publish a Flutter package, you need to run flutter pub pub publish. We really should have something more straightforward like flutter publish or flutter packages publish.

We could also just do my original proposal: https://github.com/flutter/flutter/issues/9799

@Hixie didn't you add pub pub recently? Can you elaborate on why we went that route?

Forwarding individual commands requires keeping the flutter tool in sync with the pub tool as to its precise commands (including "secret" commands, any esoteric behaviour when parsing arguments, etc), so that you can do anything the pub tool can do. Simply having a passthrough as a "last ditch" solution allowed me to use all the pub commands without any such concern and no ongoing maintenance.
I'm fine with also having flutter commands that happen to pass through, like flutter packages get, flutter packages upgrade, and flutter packages test. These aren't intended to offer all the features of the underlying tool, just Flutter's opinion of those features.

OK. This is a concrete request for flutter publish then.

You want flutter publish or flutter packages publish ?

Not a bad point; flutter packages publish works.

@sethladd : I have to admit I am completely (maybe beyond repair) confused by the relationship of the pub commands and their flutter equivalents (and surprised others may not be, judging by the lack of ability to find answers on stack overflow).
Is there a summary table somewhere that relates those commands (as in, flutter pub command on the left, dart pub command on the right)? - such as in #9799 (which is not implemented if I understand correctly)
But for now, what is the correct command actually publish a flutter package on pub? (I think I published my flutter package incorrectly as a dart package, not sure about the consequences).
Thanks

@mzimmerm  flutter packages pub ... is equivalent to pub .... (See flutter packages --help.)

Currently the equivalents are:
Nice short command available

flutter packages get -> pub get
flutter packages upgrade -> pub upgrade

No short command available; long command needed:

flutter packages pub publish -> pub publish to support publishing a plugin
flutter packages pub version -> pub version to see the pub version
etc.

@Hixie @mit-mit : Thanks both, I realize this was not the place to ask, but this item and #9799 was the most often linked from searches. This sounds like one can always use flutter packages pub <pub-command> (maybe there should be a questionmark here) and obtain the desired pub results, which is what I was confused about. (I am not sure why one cannot then just use the pub command portion, but will assume the flutter packages does some processing specific for flutter). Thanks

Yeah you have to use flutter packages pub ... instead of pub ... because the flutter tool configures pub to understand that there's a Flutter SDK installed, so that pubspec.yaml files can say sdk: flutter and have it work correctly.

That makes sense, thanks. I wonder if it may be a good thing to highlight this somewhere explicitly - the following site, for example, https://flutter.io/developing-packages/, writes about flutter packages pub publish, but does not provide a motivation (of the difference from pub publish). It does not help that in Idea, the clickable text is Packages get (not flutter packages get or pub get). I was confused by this for quite a while, but maybe it was just me. Thanks for the explanation.


Make menu items for various keyboard shortcuts

Watching people use the IDE, they did not notice the Settings gear icon, and were instead looking for Settings in the gui.menu. It would be good to either add all of the Settings as its own Menu, or to add Show/Hide settings to one of the existing menus (i.e. Window --> Show/Hide Preferences)

Agreed. We need menu items for:

showing the preferences: command ,
increasing and decreasing font size: command + and command -
showing/hiding the sidebar: command b
reformatting the code: command t

@Bruehausu can you take a look at adding the find and find-and-replace menu items when you get a chance?

@antiboredom I'm not sure if I'm crazy, but I couldn't actually find the code for find & replace. If you know where the functions are, I'll add them straight away.

Oh - sorry this is just part of the ACE editor!

ok I'm looking there right now, but I just realised: How are we currently letting people know about all of the other builtin ace functionality and the increment/decrement shortcuts (cmd + [, cmd + ]) defined in editor.js?

My thought is that we just add menu items for anything else built into ace that we want to expose to users.


improve sh functionality

Hi,
I'd like to use sh command to set a variable like this:
def ret = sh(script: 'uname', returnStdout: true)
Now I've got the following error message:
No signature of method: NodeAgent.sh() is applicable for argument types: (java.util.LinkedHashMap) values: [[script:uname, returnStdout:true]]
Possible solutions: sh(java.lang.String), is(java.lang.Object), use([Ljava.lang.Object;), pwd(), any(), any(groovy.lang.Closure)

Could you implement this feature?
Thanks!

I guess it was easier than I thought.