Operator: Reduce defaultwebhook timeout to 10 seconds

Description
Reduce default admission controller webhook timeout within operator to 10 seconds
This has been overlooked in a previous PR.
User-facing documentation
(must be 2 items and both must be checked)

[ ] CHANGELOG is updated
[ ] CHANGELOG update is not needed
[ ] Documentation PR is created and linked above
[ ] Documentation is not needed

Testing

[ ] inspected CI results

Automated testing
(must be at least 1 item and all items must be checked)

[ ] added unit tests
[ ] added e2e tests
[ ] added regression tests
[ ] added compatibility tests
[ ] modified existing tests
[ ] contributed no automated tests

How I validated my change

change me!

/retest

/retest


Feat/v15.x update changelog

What is the purpose of the change
Update changelog for thev15.1.2 release.

Could you please update the changelog on main as well once the release is complete?


More informative column alias?

Hi - love the library! I don't know if this is an issue per-se, but I got some output I wasn't expecting.
Given this is a "high-level" SQL parser, I was hoping to use it to tell me which columns of which tables queries referred to. It gets me closer, but further parsing is still needed. Example:
let sqlSurveyor = require("sql-surveyor")

let surveyor = new sqlSurveyor.SQLSurveyor(sqlSurveyor.SQLDialect.PLpgSQL)
let columns = surveyor.survey('select f.id from foo as f').getQueryAtLocation(0).outputColumns

console.log(columns)

This prints:
[
  OutputColumn {
    columnName: 'f.id',
    columnAlias: null,
    tableName: 'f',
    tableAlias: null
  }
]

Whereas I'd expect sql-surveyor to do the fiddly bits for me and figure out that f is an alias for the actual table foo, and that the implicit column alias (i.e. the column name that I'll get back from running this query on most clients) is id, so an output of
[
  OutputColumn {
    columnName: 'f.id',
    columnAlias: 'id',
    tableName: 'foo',
    tableAlias: 'f'
  }
]

I can figure that stuff out myself, by looking up 'f' in referencedTables, and parsing 'f.id' by splitting on '.', but I was hoping sql-surveyor would do some of that for me. Just wanted to check a) it isn't already done in a feature I haven't come across yet or b) whether you'd be open to adding that functionality.

Some more notes:
On looking into how to use referencedTables to get the information I needed, there might be opportunity to make that more convenient too. This is what it looks like for the query above:
{
  f: ReferencedTable {
    tableName: 'f',
    schemaName: null,
    databaseName: null,
    aliases: Set {},
    locations: Set {
      TokenLocation {
        lineStart: 1,
        lineEnd: 1,
        startIndex: 7,
        stopIndex: 7
      }
    }
  },
  foo: ReferencedTable {
    tableName: 'foo',
    schemaName: null,
    databaseName: null,
    aliases: Set { 'as f' },
    locations: Set {
      TokenLocation {
        lineStart: 1,
        lineEnd: 1,
        startIndex: 17,
        stopIndex: 19
      }
    }
  }
}

Since the tableName from the column is f, I need to iterate through the entries in referencedTables, then iterate through each of their aliases to find one that looks like as ${column.tableName}, which might be a bit brittle.
I also noticed that the behaviour for sqlSurveyor.SQLDialect.MYSQL is closer to what I expected, so maybe this is a bug after all?

Thanks for the detailed issue! As you figured out in #2, PL/pgSQL table aliases aren't being parsed correctly.
I want to address your desired output of:
  OutputColumn {
    columnName: 'f.id',
    columnAlias: 'id',
    tableName: 'foo',
    tableAlias: 'f'
  }

I'd like to keep the columnAlias attribute preserved for when there is an explicit alias used. Would a getDisplayName() method on the OutputColumn class work for your use case?
columnName should perhaps be renamed, since it can contain whatever is used in the SELECT list, but I'm not sure what to call it at the moment.

Yes I think getDisplayName() would work great.
One other thing that'd be useful to capture (or maybe necessary for getDisplayName() to be correct) would be any type casts. e.g. select oid, typname::regtype from pg_type or select '{}'::json.

Sounds good for getDisplayName(). I'm not sure when I'll have a chance to implement it, but it's a good idea.
How would you use the type/cast information? It would be pretty sparsely populated (assuming casts are pretty rare), since we can't really infer type information unless it's explicitly used.

I'm working on a type-generator for postgres, so I could conceivably use the cast target itself, but either way it'd be important for the select oid, typname::regtype from pg_type example to return typname from getDisplayName() rather than typname::regtype since it's the former that'd be returned from clients.

Good to know. Agreed, it will need to be tracked to get the display name anyway, so it shouldn't take too much effort to include it as an attribute.


Using extract_netcdf_constants to read TPXO9-atlas-v5 files

Hello,
I’m trying to use extract_netcdf_constants to calculate constituents from TPXO9-atlas-v5 files. It is working great when nearest neighbours interpolation is used, but not when trying bilinear interpolation. It still gives the correct phase, but the amplitudes are significantly off.
Example code:
from pyTMD.read_netcdf_model import extract_netcdf_constants
import glob

# Coordinates
lat = 50.103
lon = -5.54283

# Listing all constituent files
files = glob.glob(tpx_path + "/h/*.nc")

# Assigning grid file
grid = glob.glob(tpx_path + "/grid/*.nc")[0]

amp, ph, D, c = extract_netcdf_constants(lon, lat, grid, files, TYPE="z", GZIP=False, METHOD="bilinear",
                                         EXTRAPOLATE=True, SCALE=1.0/1000)

Sorry to bother, I’m new to this field so it is likely something I am doing wrong. I must say I have found pyTMD extremely useful so far. thank you!

Hi @davidegregg,
Great question. I looked into this. I was finding that as long as extrapolate is set (since this coordinate is masked in FES), that the method of interpolation was largely negligible. Let me know if you were finding things different.

Right, sorry @davidegregg my brain has been in a bit of a fog over the past week.
There was a problem in the bilinear interpolator for interpolating the mask within TPXO9. I think everything should be fixed and ready to go.

Brilliant, thank you!

Hi again @tsutterley,
Sorry to open again, but even after this fix, I am getting much higher residuals for TPXO9-atlas-v5 when using "bilinear" compared to "nearest" which seems unusual.

I'll look into it today. Sorry for all the trouble

No problem at all, this package is extremely helpful for me! For reference, below I've put phasor maps I've made of the residuals in predictions of M2 compared to tide gauge observations to show the difference between the two interpolation methods. The first uses nearest neighbours, the second uses bilinear (a couple of other model predictions using bilinear are there too for comparison).
eg.pdf
phasor_M2.pdf

Hey @davidegregg,
I'm having a hard time recreating this difference. I took the location of the tide gauge that seemed to be one of the most prominent (Newport at 53.63018°N, -0.18742°E) and ran the tide prediction notebook.
Here's bilinear with TPXO9-v5-alpha:

And here's bilinear with TPXO9-v5-alpha:

And here's the tide prediction from the National Tide and Sea Level Facility:

I'm not really finding a difference between the interpolation methods here, and the model seems to be not too bad compared with the gauge. Can you help me figure out what's happening on your end?

Hey @tsutterley,
Sorry I might have explained the problem slightly wrong. For those coordinates (those are actually for the Immingham site I believe), the model performs reasonably similar for bilinear interpolation and nearest neighbours, this is just a site where TPXO9-atlas performs somewhat poorly.
But, if I take the North Shields tide gauge as an example (55.00744, -1.43978), I'm getting drastically different results between the two methods. Here's the code I'm using:
from pyTMD.read_netcdf_model import extract_netcdf_constants
import glob

# Coordinates for North Shields tide gauge
lat = 55.00744
lon = -1.43978

# Listing all constituent files
files = glob.glob(tpx_path + "/h/*.nc")

# Assigning grid file
grid = glob.glob(tpx_path + "/grid/*.nc")[0]

# Bilinear method
amp, ph, D, c = extract_netcdf_constants(lon, lat, grid, files, TYPE="z", GZIP=False, METHOD="bilinear",
                                         EXTRAPOLATE=True, SCALE=1.0 / 1000)

# Nearest neighbours method
amp2, ph2, D2, c2 = extract_netcdf_constants(lon, lat, grid, files, TYPE="z", GZIP=False, METHOD="nearest",
                                             EXTRAPOLATE=True, SCALE=1.0 / 1000)

I'm getting the following amplitudes for M2:
nearest: 1.603 m (near perfect prediction for the observed tide gauge data)
bilinear: 0.288 m (significantly off)
I hope that clears things up and thanks for all the help so far!

Thanks! This helped tremendously. I think I tracked down the root of the problem and will have it fixed in PR #105. Here's the updated results for North Shields now that I fixed the masking problem.
Bilinear:

Spline:

(and you were right that was the lat/lon of the Immingham site. I ran Immingham after Newport but the interpolation results were similar so I just included the plots for one site).

That's all working now, thanks!

Hi @tsutterley and @davidegregg,
I learned from you here to extract amplitudes for M2 at spacific location.
I am wondering is there any example I can learn to make a M2 map for a loacl area using pyTMD, like the following figure?

Looking forward to your help. Thanks.
Jiangchao


sh ./install.sh

consider modifying script to include newer version of PHP as shown below...
Install Web Server deps
sudo apt-get install -y
apache2
php7.0
sqlite
php7.0-mcrypt
php7.0-sqlite
dnsmasq
sysv-rc-conf
make
bison
flex
gpsd
libnet-gpsd3-perl
ntp

also... need to add sudo here as user "pi" does not have privilege to remove /etc/* stuff.
if [ -L /etc/resolv.conf ]; then
sudo rm -f /etc/resolv.conf
sudo touch /etc/resolv.conf


charts of the distribution of senders

See #43. On the 'Analyzing Mail Senders' notebook, it would be good to have code to generate charts of the distribution of senders.

Has this been subsequently resolved? Here are some notebooks with charts of sender distribution:
https://github.com/datactive/bigbang/blob/master/examples/experimental_notebooks/Analyze Senders.ipynb
https://github.com/datactive/bigbang/blob/master/examples/experimental_notebooks/IETF Participants.ipynb
And with a little more detail from the IETF hackathon on my own ietf-participation branch:
https://github.com/npdoty/bigbang/blob/ietf-participation/ietf-participation/IETF Participants.ipynb
I'm ready to close this issue unless we have something more specific in mind for it.


Advanced Filters # 1

As a public user I want to utilize the following advanced filters;

Intersection
Teenage Driver
Older Driver

Does this mean we are going to remove the others?


add enum as keys support

Added support for writing and reading enumeratum values as keys in collections. Only tested with Map.
There is alot of code duplication which I'm not happy with but I was not able to come up with a clever way of abstracting common functionality. Perhaps you have a good idea?
This addresses #5

thanks - lgtm


Change in Architecture in comparison with original Pytorch RetinaNet Implementation

Hi Nvidia Team,
I wanted to know the change in Architecture made in this repo in comparison with the original Pytorch RetinaNet Implementation(https://github.com/yhenon/pytorch-retinanet). The reason being I have converted Pytorch model(from original Pytorch RetinaNet Implementation) to the ONNX model. But when I am converting from ONNX model to TensorRT,  I am facing issue with Clip, Gather, Cast, ScatterND Ops. So what are the changes made in your RetinaNet code Implementation in order to support TRT conversion successfully?
Thanks,
Darshan

Hello, we have not taken any reference to the above implementation. This code is a research work based directly from the paper.
All of the export to ONNX is the standard torchvision backbone model, plus the head architecture. Rest of the code relating to NMS and Decoding of the model outputs after the convolutions are dealt in the plugins for TensorRT.


ModuleNotFoundError: No module named 'sklearn.ensemble. Forest' and 'NoneType' object has no attribute 'run'

Hello, I have a problem in the 'Reinforcement Learning-QSAR Model 'module. I got an error "ModuleNotFoundError: No module named 'sklearn.ensemble. Forest'" . then, I changed scikit-learn==0.21.2, but I still got an error 'NoneType' object has no attribute 'run'.
Using native datasets can also cause errors.
I really hope you can help me solve it, thank you.

Hi, Is this a predictive model we provided or it is a custom model you created?

@patronov
Hi Patronov, I got the same error, and we use the predictive model provided by you. Any suggestion? Thank you

Could you please share here the resulting input configuration. It could help me understand what is actually going wrong.

Could you please share here the resulting input configuration. It could help me understand what is actually going wrong.

Thank you! Changing 'DAP' to 'dap' solved the issue.


[Vectorized][Function] Support geolocation functions on vectorized engine

Proposed changes
Issue Number: close #8788
Problem Summary:
Describe the overview of changes.
Checklist(Required)

Does it affect the original behavior: (Yes/No/I Don't know)
Has unit tests been added: (Yes/No/No Need)
Has document been added or modified: (Yes/No/No Need)
Does it need to update dependencies: (Yes/No)
Are there any changes that cannot be rolled back: (Yes/No)

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

good job!
in addition, please update document in

docs/en/administrator-guide/vectorized-execution-engine.md
docs/zh-CN/administrator-guide/vectorized-execution-engine.md

delete following the statement:
The geolocation function is not supported, including all functions starting with ST_ in the function. For details, please refer to the section on SQL functions in the official documentation

good job! in addition, please update document in

docs/en/administrator-guide/vectorized-execution-engine.md
docs/zh-CN/administrator-guide/vectorized-execution-engine.md

delete following the statement: The geolocation function is not supported, including all functions starting with ST_ in the function. For details, please refer to the section on SQL functions in the official documentation

Thanks @zbtzbtzbt I plan to do this in next PR because I will implement all geolocation functions in next PR which is described in #8788

and it's best to provide function UT

@zenoyang Thanks for reminding! I have added UTs for these functions and push again


Add Docker build and run commands

This PR adds docker.Build and docker.Run commands to Terratest. These are quite handy when you need to build and run a Docker image at test time. I've written a few local versions of these in various tests, so I figured it was time to finally centralize the implementation in Terratest.

Need to use this in a project, so going to merge now. Feedback is very welcome!


An error on dein#update()

I got an error liike below when I call dein#update().

Error detected while processing function dein#update:
line    1:
E117: Unknown function: dein#install#_update
*I have already moved these lines before calling dein#begin(s:dein_dir) and recache_runtimepath()
filetype indent plugin on
syntex on

I have searched it, and I have not found it.
Please reinstall dein.vim.
I think your other plugins call the internal function(Note: It should not).


caddy: add command line options

Nixos' caddy release doesn't currently allow changing some command line options.
Motivation for this change
Nixos' caddy release doesn't currently allow changing some command line options.
Things done

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

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

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

For the author, reviewers, and committers: this PR was scanned and appears to add a use of the deprecated types.string, which emits a warning as of #66346. Before merging, please change this to another type, possibly:

types.str for a single string where merging does not make sense, or cannot work
types.lines for multi-line configuration or scripts where merging is possible
types.listOf types.str for a mergeable list of strings

Closing because this is for a version of caddy we don't support anymore.


RingInfo of SMARTS is not initialized

Description:

RDKit Version: 2017.09.3
Platform: Windows

RingInfo seems not initialized in SMARTS

q2 = Chem.MolFromSmarts('n1[c][cH][cH][cH][cH]1')
q2.UpdatePropertyCache()
q2.GetRingInfo().NumRings()

Throws following error:
RuntimeError: Pre-condition Violation
RingInfo not initialized
Violation occurred on line 76 in file Code\GraphMol\RingInfo.cpp
Failed Expression: df_init
RDKIT: 2017.09.3
BOOST: 1_66

Since SMARTS are not sanitized by default, you need to do ring perception:
n [3]: q2 = Chem.MolFromSmarts('n1[c][cH][cH][cH][cH]1')

In [4]: q2.UpdatePropertyCache()

In [5]: Chem.GetSymmSSSR(q2)
Out[5]: <rdkit.rdBase._vectSt6vectorIiSaIiEE at 0x7f237ac03db0>

In [6]: q2.GetRingInfo().NumRings()

OK, thanks. I guess sanitizing SMARTS in the same way that SMILES are sanitized doesn't make sense. But would it be possible to include at least some of the steps to compute some of the properties?

It’s possible to do just about anything, but we’ve chosen to do a minimum amount of work (to keep things efficient) since that calculation is not necessary the vast majority of the time.


Reduce tex_extra special cases in minecraft.yaml

The crops’ texture is simply defined by the data value. The same goes for nether wart. So we shouldn’t introduce special cases if we can express it with general-case syntax like this (crops):
  - id: 59
    idStr: CROPS
    name: Crops
    aka: Wheat
    mapcolor: [146, 192, 0]
    tex: [15, 5]
    type: CROPS
    tex_extra:
    data:
      0: {tex: [8, 5]}
      1: {tex: [9, 5]}
      2: {tex: [10, 5]}
      3: {tex: [11, 5]}
      4: {tex: [12, 5]}
      5: {tex: [13, 5]}
      6: {tex: [14, 5]}
      7: {tex: [15, 5]}
    opacity: 0

The Enchantment table could reuse tex_direction, the ender portal, too (but this one should retain the “eye” tex_extra). Maybe even the bed and the pistons in some way.
PS: maybe i missed some, so if you decide to agree with me, you could look for other unnecessary tex_extra, too.

Good catch on that one. I'm not even using tex_extra in MCEdit yet, so that would add the graphics for different growth stages to start with. The same would work for nether wart and maybe a few other blocks, too.


TOO_MANY_REQUEST does not record the filter(limiter) of the error

There are 4 filters that returns the same generic error.
we need to add the filter as an additional parameter throw new TooManyRequestError({ logger, limiterRequestPhoneCode: phone }) or create 4 subclasses of the error

@dolcalmi is this still an issue?


Demonstrate API only (aka header only) library

This sample should demonstrate:

How to build one (no building should be required)
How to publish the library
How to consume the library

Short of implementing #447

A sample has been written here.


Add check that runs wpscan against a Wordpress site and alerts when vulnerabilities are found

@eheydrick
Could you also make a pr against sensu-plugins-wordpress
Thanks!

Done, https://github.com/sensu-plugins/sensu-plugins-wordpress/pull/1

@eheydrick
Could you check the Travis output.  The issue is you need to add a doc string to the top level class.  The rubocop rules are much tighter for these repos ;)
Thanks for this!

@mattyjones. Done, travis build passes.


feat(deployment): add Deployment resource

Adds Deployment resource.
Depends on https://github.com/PrefectHQ/terraform-provider-prefect/pull/201.
Running tool: /opt/homebrew/bin/go test -timeout 30s -run ^TestAccResource_deployment$ github.com/prefecthq/terraform-provider-prefect/internal/provider/resources

ok  	github.com/prefecthq/terraform-provider-prefect/internal/provider/resources	6.103s

Deployments are dependent on flows
You cannot create a deployment without a flow_id.
I split flows into #201. But I'm unsure. How to create this PR if it requires another PR to be merged first. The branch will not pass tests.
If you explain how to do this, happy to update the PR and remove flows.
I have a third PR for deployment access that I haven't opened since it is depending on deployments and only makes the problem worse.

The other option is to merge #201 and that should remove flows from #202 automatically.

Yeah, I was thinking we could set the Deployment PR's branch target to this Flow PR, but I don't think there's a way to do that with forks.
Let's mark the Deployment PR as draft for now, and when this PR merges we'll revisit that one. That way, any changes we make here don't need to also be applied to your Deployment PR.

Not sure why the Terraform docs job is failing.

@skyscrapr do you need help finishing this pr ? I would love to see this feature.
If I can help in any way 🙂

Hi @skyscrapr, thanks again for submitting this. I'm catching up from PTO from a move 📦
I'd like to take a look at this one this week. Could you please address the conflicts?

@tehioant - thank you for reaching out and offering your help 🤝 Once @skyscrapr resolves the conflicts I'll dive in and test out the changes. If we need any extra hands I'll reach out!

hey @skyscrapr - if you're open to it, we'd be be happy to help help take this PR home + squash any of the remaining merge conflicts.  we can either push to your forked repo on this branch, or re-create a branch with these changes.  let us know

@parkedwards  yes please go ahead. This PR contains basic functionality and still needs to be extended to support schedules etc. However it would be good to get this merged so that we can work on adding support for schedules etc. I'm currently tied up in my day job. :-) But can help support later this week.

Best to push to my forked branch please as this will allow us to continue working on deployment access and schedules.

@skyscrapr totally makes sense. we'll push to this branch. thank you for all your work on this so far - between me, you and @mitchnielsen we'll be able to steer this home

This initial PR adds support for deployments but does not support all attributes.
However if you can merge this change first then deployment access resource PR can be opened while support for more attributes can be added in parallel.
Let me know if that makes sense.

This initial PR adds support for deployments but does not support all attributes.
However if you can merge this change first then deployment access resource PR can be opened while support for more attributes can be added in parallel.
Let me know if that makes sense.

That seems fair to me. There are quite a few attributes so I'm open to merging it with the essentials and we can add more in a follow-up PR.

Getting close. Working on tests, and trying to figure out why updating any fields on the Deployment gives a 403.

Thanks for getting this one off the ground @skyscrapr 🤝


NATS cluster gateway

Use Case:
As a user/admin, I need to have multiple sites communicate using NATS. My objectives are:

Maximize bandwidth efficiency (reduce unneeded message propagation between sites)
Actively filter content ingress/egress by subject

Proposed Change:
Create a NATS gateway (or edge router) that can be configured to route message between NATS clusters, filterable by subject and direction (ingress/egress).
(further requirements definition needed)
Who Benefits From The Change(s)?
NATS users who want to distribute NATS messages efficiently between multiple sites with multiple NATS clusters, while filtering or preventing unneeded or undesired message propagation between sites.
Alternative Approaches
There is no simple alternative available through configuration. However:

Users could create their own custom client to do this.
DAG routing (#446) could offer cluster configuration strategies that offer better efficiency for this use case, but not subject filtering. It would also be more complex to implement, perhaps significantly.

@mcqueary , What do you mean by subject filtering?  I'd imagine DAG would inherently filter subjects.

@ColinSullivan1 Thanks. Good point. We could implement DAG or a Gateway without filtering, but neither of these would be very useful without also having subject-based filtering/routing. I'll edit my rationale.

Closing for now, we have several issues all talking about the same thing.

+1 - Intercluster (within-gateway) filtering is very required as we would like one cluster to share a very limited set of topics with other clusters or do not want it's users to subscribe to alien topics at all

I would suggest using leafnodes which I think will do what you need.


how can i use it in flutter？

I haven't used Flutter, so I won't be of much help here, but if Flutter has a way to install and import JS packages, you'll have access to the API to generate an SVG image to display in your app.


Validation should check ChangeUnits have constructor

Description
ChangeLogRuntimeImpl assumes that a @ChangeUnit has constructors and that the first constructor is the one it should use.
If this is the case then the
PRIORITY
Minor
Version and environment
Mongock

Mongock version 5.0.35 standalone

Steps to Reproduce
Here's my ChangeUnit
    @ChangeUnit(id="mongock 5", order = "23")
    static class Mogock5Migration {
        @Execution
        public void migrationMethod() {
            LOGGER.info("Performing a no-up upgrade");
        }
        @RollbackExecution
        public void noRollback(){}
    }

Arguably this is a pointless changeUnit! But it's not obviously invalid.
Behaviour
Expected behavior: [What you expect to happen]
I'd expect AnnotationProcessor.validateChangeUnit() to give some helpful error about there needing to be a constructor.
Actual behavior: [What actually happens]
Arrayindex out of bounds exception

If there are multiple constructors that might also cause weird behaviour. Perhaps the validator should guard against that too?

And since I'm here :p:
The exception:
io.mongock.api.exception.MongockException: ChangeUnit[com.....DatabaseChangelog$Mogock5Migration] must have only one RollbackExecution method
Is a bit misleading since it implies I have several when in fact I've got none. Could the language be improved? Maybe to "must have exactly one..." - or for another line of code it could say "is missing" vs "has more than one"?

Hello @msmerc , as you pointed this priority ir minor, but you are welcome to raise a PR!

Hello @dieppa , I had a look at the codebase and wanted to confirm a few things,

We only want to allow exactly one constructor in the @ChangeUnit class
The constructor must have at least one parameter satisfies Class.isAssignableFrom MongoOperation or MongoRepository
The validation could be done in the process of ChangeLogService.buildChangeLogInstancespecifically in annotationProcessor.validateChangeUnit

Can please confirm/comment on the above? And also, can you please let me know if someone is already working on this and the change is still relevant.

Hello @msmerc
The error you got Arrayindex out of bounds exception is probably related to the fact that Mongock takes the first constructor(type.getConstructors()[0]). Even for classes for which you don't explicitly provide a constructor, the empty constructor is provided by default, so this shouldn't be a problem. The only way I can think this could happen if Mongock cannot access to the changeUnit's constructor, for example if it's private.
Regarding your questions.

Currently Mongock allows multiple constructor, it won't break, but it's not guaranteed which one of them it will take and . We want to add an annotation to tell Mongock which constructor to take, while you can use the other for other purpose like testing
As mentioned in point(1) we want to allow multiple constructor, but telling Mongock which one it should take, rather than not allowing multiple constructor.

We are happy to assist you if you want to raise a PR for this(allow multiple constructor, while allowing to indicate to Mongock which to take). This should be relatively easy

Create an annotations in package io.mongock.api.annotations to communicate Mongock the constructor to take. It could be called '@ChangeUnitConstructor' or something like that
In the class ChangeLogRuntimeImpl, method getConstructor, implement the logic to take the constructor annotated with the previous annotation or the first one(current implementation) otherwise
Add some test to validate it

Let us know if you want to proceed with this and I will personally assist you on this 😃

Hello @dieppa, I know didn't tag me, so not sure If you were talking to me for the changes, If you were, I'd be glad to have a stab at this.
on

the empty constructor is provided by default

This is just the no arg constructor created by default for a class right, but even if this exists, there wouldn't be any mongoTemplate injected, so not sure how a mongock migration can exist without it. Anyway, I guess we can leave that to the discretion of dev.
Also, we should add validation to ensure exactly one constructor is annotated with ChangeUnitConstructor or something right?

@dieppa Do you think multiple constructors is a realistic use case? It's probably easier to have the validator generate an error if there are multiple or zero constructors - after all, only one can be invoked in practice.
Why make this any more complex?

@msmerc, while in production only make sense one constructor and that should be good, you may want to have more than one for testing purpose.
I believe that's not really important, but a nice to have. So you can have these scenarios

Only one constructor(no annotation)
More than one constructor(only one of them with annotation)
More than one constructor(with no annotation) -> Exception

I'm summarizing the acceptance criteria that I understood:

Existing ChangeUnits should run without any exception but with a warning Mark at least one public constructor in the @ChangeUnit <ChangeUnitName> with @ChangeUnitConstructor denoting it's dependecies are to be injected, This will be mandatory with Mongock version 6
New ChangeUnit with no constructor (public and private) should also run without exception but with above warning
New ChangeUnit with more than one public constructor without @ChangeUnitConstructor should also run without exception but with above warning
ChangeUnit without any public constructor but with one or more private constructors should end with exception of message No public constructors exist for dependency injection, Please provide at least one public constructor with @ChangeUnitConstructor
ChangeUnit with at least one public constructor and with exactly one constructor having @ChangeUnitConstructor should execute without any exception or warning
ChangeUnit with at least one public constructor and with more than one constructor having @ChangeUnitConstructor should execute without any exception @ChangeUnitConstructor should be marked exactly once in a ChangeUnit

please let me know if this looks okay @dieppa @msmerc

@thekaleidoscope - I think you're not being strict enough. @dieppa summarasied it neatly:
These are ok:

Only one constructor provided(no annotation)
More than one constructor provided (only one of them with annotation)

This generates an error:

No constructor provided
More than one constructor provided (multiple have annotation)

This generates a warning:

More than one constructor provided (none are annotated)

By "constructor" here, we specifically mean "a valid constructor that Mongock can inject dependencies into". So private constructors, constructors with uncomprehendable / uninjectable arguments, constructors with no arguments (including default constructors) simply do not count as "constructors" for the above checks. We shouldn't care if these constructors are present on the objects - but we should word the messages careful to indicate what we are doing, so instead of saying (say) "class has no constructors", say something like "could not find a constuctor that Mongock and use for dependency injection" or something like that.
Disclaimer - I'm only a Mongock user, so this is simply what I'd like to see. @dieppa  is a project member so what he says goes!

@thekaleidoscope , I will take a look this evening 😉

@msmerc, dieppa did say we don't want to break what already works for version 5, Hence all the warning scenario in version 5, would become error in version 6. This includes the No constructor provided scenario. Not sure which else scenario you think I'm being too leniant on.
Agree with the change of wordings,
Suggestions:
Warning for scenario 1, 2, 3: Mark one constructor in the @ChangeUnit <ChangeUnitName> with @ChangeUnitConstructor for mongock to use for dependency injection, This will be mandatory with Mongock version 6
Exception in scenario 4: Could not find a constructor that Mongock can use for dependency injection, Mark one constructor in the @ChangeUnit <ChangeUnitName> with @ChangeUnitConstructor
Exception in scenario 6: Expected exactly one constructor to be marked with @ChangeUnitConstructor in @ChangeUnit <ChangeUnitName> , but found <number of constructors with annotation @ChangeUnitConstructor>


Rework amidst.json

Switches to using the .exe version of amidst, this provides a simpler manifest/install. It also adds a start menu icon, which the batch file used previously did not.
I also moved the version field to the top, based on the scoop formatting standards.

amidst.exe can't detect my OpenJDK installation from java/adopt8-hotspot-jre, I don't know why.

amidst.exe can't detect my OpenJDK installation from java/adopt8-hotspot-jre, I don't know why.

Interesting, if that's the case I completely agree. I know it worked for me, maybe because I have Java installed both through scoop and the normal Java installer. I'll see if I can get this working on one of my other devices where I've only installed Java through scoop.

Interesting, if that's the case I completely agree. I know it worked for me, maybe because I have Java installed both through scoop and the normal Java installer. I'll see if I can get this working on one of my other devices where I've only installed Java through scoop.

I gave it a try and you're correct the program will not detect Java installed via scoop, so I'm going to close this PR for now. I'll probably try and update the current jar version to include an icon and support command line args instead, or open an issue on the amidst repo.

I gave it a try and you're correct the program will not detect Java installed via scoop, so I'm going to close this PR for now. I'll probably try and update the current jar version to include an icon and support command line args instead, or open an issue on the amidst repo.


Add missing browse tag command

I added browse tag command. It's missing despite that README.md has its explanation.

@mmktomato Thanks!


Create new action in actions?

Hello, i'd like to download autorun but i have got a little problem. I'm a linux user and i need the linux64 binaries but it says that the downloads are expired!

I've run another one, but linux is still not supported (which is why it's not in the previous releases and why #56 is open)
It runs but it doesn't do anything right now unfortunately ( didn't have a way to test it out since I use windows, might give it another try with WSL )

if you dont want to dualboot or anything like that and you're having issues with wsl then you could have a usb with a live iso on it and put garrys mod and steam on a partition and load the partition on the live iso to attempt running updates

I've run another one, but linux is still not supported (which is why it's not in the previous releases and why #56 is open) It runs but it doesn't do anything right now unfortunately ( didn't have a way to test it out since I use windows, might give it another try with WSL )

Aight, ill just wait for linux support. I wish i could help, but i don't know anything about rust nor memory hacking :disappointed:


Properly increment ignore file count

Increment ignored file count for cancelled and skipped file sync operations

Concerned events:
- isValidFileDirectoryName() (msgs_mirror_task_file_ignored): was added for newer ignored files but not here
- msgs_mirror_confirm_archive_date_time_from_file_cancel
- msgs_mirror_confirm_delete_cancel
- msgs_mirror_confirm_copy_cancel
- msgs_mirror_confirm_move_cancel

Just a question to confirm you did not forget parts of the commit: you think it is not a good idea to consider Cancelled copy/delete/move as ignores ? They were ignored by user by "Confirm No to all" for example
It is ok for me in both ways

I send a second pull request because the partial merge caused discrepancies
See comments in next pull request
best regards


[bug] didn't display cursor and line numbers when focus

I use a button to control the display of codemirror, and when I click the button, the codemirror would be focus.
so I use this.CodeMirrorInstance to control the codemirror component's focus, and it successed.

but it won't render the cursor and line numbers, until I press some key or click the input area.

gif:

Facing the same issue

@lengthmin @zohaibijaznbs hey thanks for opening this. Hm, are you manually focusing before the editor is fully rendered? Try throwing a setTimeout => then focus, just to see if we can further identify what's going on

test failed.
it just won't show the line number and cursor, and it is focused.


This is not building a new workspace, this is customising a exiting

The title is: Build Workspaces, but in fact this is about modifying an existing one

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

ID: 7de231ed-06c6-cb84-721c-f2853047c9e4
Version Independent ID: 3aaf74d5-43be-9ebc-e726-7d60a1351911
Content: Build workspaces - Finance & Operations | Dynamics 365
Content Source: articles/fin-ops-core/dev-itpro/user-interface/build-workspace.md
Service: dynamics-ax-platform
Product: ****
Technology: ****
GitHub Login: @jasongre
Microsoft Alias: jasongre

I'll take a look. - Robin

I updated the topic, and the new content should go live tonight. Thanks for the feedback!

So where do I find information on how to create a new Workspace and add it to the Dashboard - for a new module, not just personalization

I'll investigate.

Bug 533988 created to track this issue.

Please checkout this topic: https://docs.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/user-interface/build-workspaces
An workspace is navigation, form, or overview. We have relevant topics here: https://docs.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/user-interface/build-rental-charge-type-form


Update BGPFilter docs

Update BGPFilter with two new fields for matching:

source: Available in Calico master, Enterprise (master, v3.17, v3.18)

Calico master: https://github.com/projectcalico/calico/pull/8149
Enterprise master: https://github.com/tigera/calico-private/pull/6705
Enterprise v3.18: https://github.com/tigera/calico-private/pull/6802
Enterprise v3.17: https://github.com/tigera/calico-private/pull/6796

interface: Available in Calico master, Enterprise master

Calico master: https://github.com/projectcalico/calico/pull/8175
Enterprise master: https://github.com/tigera/calico-private/pull/6655

Related PRs:
Product Version(s):

Calico: master
Calico Enterprise: master, v3.17, v3.18
Issue:

https://tigera.atlassian.net/browse/CORE-9798
https://tigera.atlassian.net/browse/CORE-9403
Link to docs preview:

SME review:

[ ] An SME has approved this change.

DOCS review:

[ ] A member of the docs team has approved this change.

Additional information:

Merge checklist:

[ ] Deploy preview inspected wherever changes were made
[ ] Build completed successfully
[ ] Test have passed

It's always good to get another review, but this is a small change all about adding two new fields.
At this point only @fasaxc know about it. Hopefully he has time to review this.

@mazdakn While you're making changes, try fetching from upstream and rebasing. I think your build error may be related to a fix we got in last week.

@fasaxc thanks for the review. The code is already merged into master which will be part of v3.27.


Build the donation page

Overview
We need to build each part of the website and connect it with the menu (header and footer). This issue is for the donation page
Action Items

[ ] Build the Donate page
[ ] Integrate it into the footer and link it to the Radical Collaboration drop down menu item in header.
[ ] Put screen shots in issue to show completion. and @ message experimentinhonesty
[ ] show the working app to team at meeting.
[ ] When doing PR ask for nrrao for a reviewer

Notes
please update your issue weekly before meeting with

Progress
Blocks
Availability
ETA

Resources/Instructions
Figma file
react app -development

Attached is the gif for the donation page.

@DarrenRF 's update

Progress - got most of desktop done
Blockers - none
Availability - good for the next week
ETA - by next week

@DarrenRF please post an update if possible?

Progress
Blockers
Availability
ETA

@DarrenRF would it be possible for you to do a pull request to a branch (called 'darren') so we can make use of the work you've done so far?

@chalimar if you have ideas for background or banner would be great to add them here?

Update for Friday, October 23rd, 2020:

So far initialized the donation component with breadcrumbs and the title of the page.
No blockers so far. There might be some friction with adding the gif to the page but will update when I add it in.
I'll be pretty available this weekend to work on and collaborate on issues.
This page should be able to be built out by this coming Thursday, October 29th.

@mealthebear please change the Hack and Code for links to just be bolded, not links, thanks!
Contact us can go to a<EMAIL_ADDRESS>mailto for now

Update for Monday, October 26th, 2020:
Progress: The desktop view for the donation page is complete. The next portion that needs to be finished is the mobile view.
One thing to bring up is that the styling for the breadcrumbs needs to be modified so that they match the Figma styles as
well as become responsive on mobile.
Blockers: No blockers at the moment.
Availability: My schedule is open for this week leading up to Thursday's meeting.
ETA: Thursday, October 29th is still looking like a good date to have this page built out by then.
Desktop View (1 of 2)

Desktop View (2 of 2)

Mobile View (Iphone X)

Update for Thursday, October 29th 2020:

Progress: The donation page is coming along well. The desktop view as well as the mobile view are complete and are now in need of review. A pull request has been opened to merge the donation page onto main. Screenshots will also be posted here.
Blockers: Really no blockers, just some points to address. Since the totally rad Radical Collaboration page isn't built out yet, the BreadCrumbs can't point to it yet. Also, the styling for the BreadCrumbs component needs to be modified to match the Figma.
Availability: I'll be available for this weekend to work on any issues.
ETA: 0 - 2 days

Desktop View

Mobile View

@mealthebear styling for the former links should just be the same as reg text only higher weight

Update for Tuesday, November 3rd 2020:

Progress: The page is coming along nicely. The org names' styling has been reverted so they don't look like links, and the breadcrumbs styling has been changed as well which cleaned up a little bit of code.
In addition, functions for checking the browser window size have been removed so now the donation page can remain as 1 file.
Furthermore, we the Programmers of the Civic Tech Index, in Order to form a more perfect codebase; have begun work on implementing linters and testing which will be featured in future PRs.
Blockers: No blockers
Availability: I'll be pretty liberated from any professional, social, & spiritual obligations for the foreseeable 2 days leading up to the grand Thursday meeting.
ETA:  0 - 2 days (Code is looking good)

Please check to see why the font is so big, and review http://civictechindex.org/home for example of how it should be sized

Update for Thursday, November 12th 2020

Progress: Styling changes have been made to the donation page as well as the landing page so that the text and images aren't so large. I'll post screenshots of both pages here just in case, as the landing page issue is closed.
Blockers: None
Availability: I'll be busy until this Saturday
ETA: Should take less than a week to get merged in

Landing page (1920x1080)

Donation page (1 of 2) (1920x1080)

Donation page (2 of 2) (1920x1080)

Thanks for the update

Update for Thursday, November 19th, 2020

Progress: I was able to update the styling for both the landing and donation pages. They're in separate PRs so they'll just need to be reviewed.
Blockers: None
Availability: I won't be free until Sunday
ETA: 1 week to get these changes merged.

Waiting on @codewilling @nrrao to do review before sending to shin

@codewilling and @nrrao to complete review.


libssl handling question

Using current master when attempting to use amqps in my Linux application I get an error:
Secure connection cannot be established: libssl.so cannot be loaded

The executable is linked with -lssl, but because nothing in libamqpcpp.so or my application includes an unresolved reference satisfied by that library the reference is not retained by the linker and the library is not opened when the application starts.
It seems AMQP-CPP is implemented to support openssl only if something else in the process has already opened the shared library.  This is not a practice I've encountered before except in very unusual circumstances.
Is there a reason why this dependency is required to be dynamic?  A reason I can imagine is so an installed library can work on systems that both do and do not have openssl (assuming the application is coded to cooperate).  Is that a required use case for AMQP-CPP?

It is a very uncommon/weird architecture indeed. It’s because we built amqp-cpp for an an application that we try to ship with as little system dependencies as possible. If a user does not need amqps://, we want it to work, even if there is no openssl on the system available.
Secure connections are covered in the readme file: you can either link with -lssl (but remember to call ssl_library_init() in your application before you construct the connection object), or you can call dlopen() in your application to load openssl.

Makes sense; I'd originally thought just linking would be enough to get encrypted connections to work (by doing a default init on demand), but can see that would lead to a configuration API that doesn't belong in this library.


How to integrate tui.context-menu into tui.calendar

Summary
I want to add a context menu to every single schedule. I can use tui.context-menu, but I don't know how to add it to every schedule. Please give me a hand, thanks!
Version
1.13.0
Addition Content
If I can use a custom context menu like a custom pop-up, it will be better

Not in the plan yet.
The event that fires on the right click is not being emitted.
But I think there is a demand for this function.
For example...
cal.on({
  clickSchedule: function (e) {
    /* ... */
  },
  rightClickSchedule: function (e) {
    const { schedule, calendar, element, event } = e;

   /* Write an action when a right-click event fires */
  },
});

Nothing has been planned for this feature yet, but we will consider it in the next version.

I resolved my problem, use afterRenderSchedule to do it.
`export const afterRenderSchedule = (props: IProps) => {
const {calendarRef, event, setContextmenu} = props;
const schedule = event.schedule;
const element = calendarRef.current.calendarInst.getElement(schedule.id, schedule.calendarId);
const id = element.getAttribute("data-schedule-id");
element.addEventListener("contextmenu", (e) => rightClickSchedule({e, id, setContextmenu}));
return () => {
element.removeEventListener("contextmenu", (e) => rightClickSchedule({e, id, setContextmenu}));
};
};`
But I still hope this will become a feature. Thanks!


Add lookup of a range of comics

For the same rules as other tokens, if a range (indicated by a number,
two or three '.', and another number) is detected, expand the range of
numbers and treat them as if each has been written out.

Thanks for the contribution! Before I merge this, would you be able to implement some tests to ensure there are no obvious issues?

Solved by #24


Add feature for rendering an FS router view outside the main layout

Describe your motivation
Some special views, such as a login view, might need to be rendered without any wrapping layout. The way of doing this right now is to copy generated/routes.tsx and customize it but this is not very convenient.
Describe the solution you'd like
Add a property to ViewConfig specifically for this case.
export const config: ViewConfig = {
  skipLayouts: true,
  menu: { exclude: true }
}

Describe alternatives you've considered

There has been an idea to add a property to ViewConfig that would allow defining an arbitrary layout (or no layout at all) for a view. This would be relatively complex to map to the React Router configuration structure which is why I instead suggest defining a shorthand specifically for having no layout at all.
There has been an idea to add support for @phantom/ directory that would have its own layout without contributing to the path. This would map almost directly to the React Router configuration structure but it would also mean that the filesystem structure wouldn't match the URL structure and you would have to move around all existing views if you want to make one view skip the layout.

The suggested skipLayouts property could remain as a shorthand even if we implement either of the more flexible alternatives later on.
Additional context
No response

Should it be named skipLayouts to make clear that it will skip all layouts?

@Route has an option autoLayout that allows to opt-out a Flow route from @Layout. Would be great to extend this option for the case, when one wants to have Flow Login view and don't want it to be rendered in the Hilla's main layout.
I think the naming should be the same, either autoLayout or skipLayouts in both @Route and ViewConfig.

skipLayouts would work IMO. It is used in just one place in Java.
If we are confident with the name, we should perhaps change it from autoLayout to skipLayout for better consistency in future.


Constants Crashes, Sluggish Debugging and Unable to Connect After Flutter 1.12 Update

I am experiencing issues where my code from VS Code is not able to run on the iOS simulator or Android emulator. I had to kill the simulator and start again. This happens every single time when I try to run the app. The app is also freezing a lot after Flutter 1.12 update.

Hi @azamsharp
can you please provide your updated  flutter doctor -v
and your flutter run --verbose?
Also, to better address the issue, would be helpful
if you could post  a minimal code sample
or the steps to reproduce the problem.
Thank you

The app is the basic counter default app that comes with Flutter.
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.12.13+hotfix.5, on Mac OS X 10.15.1 19B88,
locale en-US)

[✓] Android toolchain - develop for Android devices (Android SDK version
29.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 11.1)
[✓] Android Studio (version 3.5)
[✓] VS Code (version 1.41.0)
[✓] Connected device (1 available)
• No issues found!
On Fri, Dec 13, 2019 at 5:50 AM Francecsco Iapicca<EMAIL_ADDRESS>wrote:

Hi @azamsharp https://github.com/azamsharp
can you please provide your updated flutter doctor -v
and your flutter run --verbose?
Also, to better address the issue, would be helpful
if you could post a minimal code sample
or the steps to reproduce the problem.
Thank you
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/flutter/flutter/issues/46895?email_source=notifications&email_token=AAAEBXHC2BLQCFWYE6CAWHDQYNZGTA5CNFSM4J2CLIX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGZYQFI#issuecomment-565413909,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAEBXAY5DFQ4OSC7UVEZBTQYNZGTANCNFSM4J2CLIXQ
.

--
Interested in learning development! Check out courses on Udemy.
https://www.udemy.com/user/mohammad-azam-2/

Hi @azamsharp
thank you for providing your  flutter doctor -v.
Can you please provide your flutter run --verbose relative to the crash?
Thank you

Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this bug for now. Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
Could everyone who still has this problem please file a new issue with the exact descriptions what happens, logs and the output of 'flutter doctor -v'  please.
All system setups can be slightly different so its always better to open new issues and reference related issues.


Improve Watt-time plugin

Rationale
After deep diving the current plugin logic, I'm concerned we have inherited some poor design decisions and this plugin should be rebuilt from the ground up. Specifically:

We provide a single grid/carbon-intensity value for an entire input array regardless of the length or timespan of the array. We could be making an API request per observation or per N observations.
We have a hardcoded limit of 32 days for an input array. Currently, if the array covers > 32 day period we error out. This is because the WT API has this limit built in. However, we should support longer time series than 32 days, either by making multiple requests or using some fallback.
The mapping between wt regions and other plugins that return some version of a region (mockobs, importers etc) is complicated and hard to maintain, and the data itself needs auditing and updating.

Implementation details

Spike on WT as a team and determine the right logic we want to implement
Write new wt plugin specification
Build new plugin from spec

Priority
3/5
Out current version is not broken, it just has some unneccessary limits and unuual logic that can be improved.
Size
tbc
What does "done" look like?
tbc
Does this require updates to documentation or other materials??
Yes
Deadline
n/a
Acceptance criteria
tbc

Close by https://github.com/Green-Software-Foundation/if-unofficial-plugins/pull/65


Deploy virtual network before dns

If using the network bridge specified in the virtual environment the dns
role will reference it before it's been created which will cause dnsmasq
to fail to run.  This will break all dns lookups until fixed.
This PR deploys the virtual resources before the dns role.

Thanks for opening the PR,
I'm pretty sure this will run into an issue with libvirt also starting up its own dnsmasq instance which will block the dnsmasq created by the dns role. At least that's what I found to happen when another user ran create_vms before the deploy_prerequisites playbook. This also has the added benefit of allowing users test network configurations more easily by just running that playbook.
I'm about to push a PR which factors out the setting up of the host network config from the create_vms playbook and moves just that part before the dns role. Sorry I forgot to create the PR on Monday when I made the changes. I could have saved you some time but I wanted to do some more testing as I overhauled the playbooks for vms in the process.
For reference I've now open a draft here #113

Opp Sorry I didn't mean to close it I clicked the wrong button. I'll discuss with the rest of the team what we'll do in terms of merging yours vs waiting for mine to be ready.


Better lua error messages

I've been busy writing some lua code in an attempt to speed up certain parts of my papyrus code. Since I'm still learning lua, this has been, while fun, also somewhat frustrating when trying to track down the exact source of all the error messages printed out to the console. Mostly, these error messages refer to some error in the internal lua files, such as:

Lua error: [string "local args = ...; local jobject = args;return..."]:1: attempt to call field 'findIndex' (a nil value)
Lua trace: stack traceback:
[C]: in function 'findIndex'
[string "local args = ...; local jobject = args;return..."]:1: in function 'func'
...ion/Data/SKSE/Plugins/JCData/InternalLuaScripts/init.lua:202: in function <...ion/Data/SKSE/Plugins/JCData/InternalLuaScripts/init.lua:199>

To my untrained eye, this doesn't really tell me the exact source of the problem - printing out the full text of the lua function that was attempted to be called (i.e. what I put into the JValue.evalLuaObj predicate parameter) would help track down the issue.

So you mean to add to this error text the string evaluated? I agree that these are a bit mangled. No idea why it is like. Will check what it can be done.

The error was somewhat useful after all. It was referring to my lua function "AH_Hotkeys.FindIndex" in my init.lua file, which I had capitalised from "findIndex" to "FindIndex", but didn't change the evalLuaObject parameter to match. I didn't pick up at the time that lua is apparently case sensitive. However, it would have been helpful to have a somewhat less cryptic error (I understand that, in this case, the interpreter wouldn't have been able to know what function I was attempting to refer to in my init.lua file).

Lua error: [string "local args = ...; local jobject = args;return..."]:1: attempt to index global 'bit3' (a nil value)
Lua trace: stack traceback:
        [C]: in function '__index'
        [string "local args = ...; local jobject = args;return..."]:1: in function 'func'
        ...bug/Data/SKSE/Plugins/JCData/InternalLuaScripts/init.lua:203: in function <...bug/Data/SKSE/Plugins/JCData/InternalLuaScripts/init.lua:200>
Lua string: return bit3.bxor (8, 2, 10)

An example error. The last row Lua string: ... is the new record.


Allow translated strings in settings

Fixes #50

Codecov Report

Merging #53 into master will increase coverage by 0.11%.
The diff coverage is 100%.

@@            Coverage Diff            @@
##           master     #53      +/-   ##
=========================================
+ Coverage   86.69%   86.8%   +0.11%
=========================================
  Files           6       6
  Lines         233     235       +2
=========================================
+ Hits          202     204       +2
  Misses         31      31

Impacted Files
Coverage Δ

tinymce/widgets.py
85.83% <100%> (+0.24%)
:arrow_up:

Continue to review full report at Codecov.

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

Thanks!


License

Hi,
Thanks for releasing Lingua! I noticed that in the README it states that the license is CC-BY-NC but the LICENSE file attached is the BSD 3 Clause license. Would you mind clarifying the README?
Thanks!

Well spotted, thanks!


e-Internationalization output formats

We are not sure which output formats e-Internationalization supports. @katia-vistatec can you please comment?
The documentation says

New input and output formats are text/html, text/xml, application/x-xliff+xml and application/x-openoffice.

New output formats are text/html and text/xml. Note that this output format can be only used when the starting document is an HTML or XML file as well. This is a general rule when performing the round-tripping: input and output formats must be the same.

I think only one of the sentences is correct.
Further do you think we can state that e-Internationalization can produce OpenOffice? I think it would just return the original odt file without any enrichments.
About XLIFF: E-Internationalization supports XML as output format. Does this mean it supports all XML formats including XLIFF?
The outcome of this discussion will be written in e-internationalization documentation and Getting started for FREME users

Yes, I'll check.

The internalization-filter registers xliff as roundtripping format. But I'm still not sure if this is correct.


PUBDEV-8087 add custom escape character

Looks good, just surprised that there's so much to write for a simple field.
I remember a mechanism used to add fields on the fly by processing the Rest API for a given model: is the additional work specific for this field? because it's represented as a byte at REST API level?

@sebhrusen  Might be that I just don't know that mechanism - should it generate code itself during the build or it is needed to execute some script?

@koniecsveta my mistake, forget about it! Now I remember that this field generation is only implemented for models, there's probably not such a thing for other APIs like the parser.


[Feature] Password Change Notification

Would there be a way to create a module for password changes in AzureAD
We have been looking at adopting SEEN at our company, but beyond the MFA notifications we would also like to notify on password changes

@mcrommert Thanks for your request! And sorry for the delay...
Password change was not kept as a scenario because it is an event that likely break the email flow for the user. In other terms, if the user changes the password, or if there if a password reset is performed on the account, it is likely that the notification would arrive after the access to the mailbox is broken. There are still some cases with token cache and if the application doesn't do continuous access evaluation where the notification will be received, but that's a really a timing condition. What do you think?


does ripme can rip private accounts in instagram?

Ripme version: 1.7.92
Java version:  openjdk version "11.0.7" 2020-04-14
Operating system:  elementary os

Exact URL you were trying to rip when the problem occurred:
Please include any additional information about how to reproduce the problem:

Expected Behavior
Detail the expected behavior here.
Actual Behavior
Detail the actual (incorrect) behavior here. You can post log snippets or attach log files to your issue report.

There are no login features in ripme. Are you actually a cute girl?

For instagram you need to set instagram.session_id in rip.properties to rip private accounts

see: https://github.com/RipMeApp/ripme/wiki/Config-options#instagramsession_id


fix: fix ts types

fixing: https://github.com/koa-better-modules/joi-router/issues/6

Thanks @rudi23 for your contribution!


twc nowcast node api denial

Hello!  When I invoke the twc nowcast node, I get the following permission denial.  Is there something we need to do to fetch the data?  Thank you!

Unfortunately, the TWC API keys designated for Call for Code are suspended until the 2021 challenge kicks off in late 1Q. The TWC terms of service for the free API keys indicated that they would be active from Feb-Nov 2020.   As a result, on 11/30/20 the keys expired.


hover: To package windows-msi these tools are required: candle,light

hover: To package windows-msi these tools are required: candle,light

Any instructions on install this?

The instructions should be clearer. Install them from https://wixtoolset.org/

@jld3103  I install wix, but it still claims this:
hover: To package windows-msi these tools are required: candle,light

Sorry, I think it's much more better if error messages download link along with candle and light, honestly I don't why what's this can when google it, I got only this"

And what's this? This is real candle used in windows:

Honestly I am totally lost which these weired names.

Solved it

How did you solved the problem ?

@pchampio downloaded from web

I have the same problem. Where can I download it?

Please read the conversatio above


Link to: django-ya-model-publisher

see also #29 and #30

Coverage remained the same at 54.939% when pulling f695823065f3efbe2c3e257acfb4c6e7460894bf on jedie:patch-1 into ef09a6748eb5d28244d078d5a2d22fedf3b4a78d on jp74:master.


Add dockerfile to create a docker container that builds yocto images

Added a dockerfile for building a docker container that can build yocto images. Included yocto release files that are unzipped when building the docker container.
@couryrr-afs @drmrd This PR has a simple dockerfile that is automated to build the yocto core-image-minimal target. You can edit this file to add steps for custom layers and change the target to another.
From running the oe-init-build-env script:
You can now run 'bitbake <target>

Common targets are:
    core-image-minimal
    core-image-full-cmdline
    core-image-sato
    core-image-weston
    meta-toolchain
    meta-ide-support

I built the dockerfile following the steps found here, which I would recommend referring to when you edit the dockerfile.

@jhoshiko can you fix the issues/best practices reported by the static code analysis?

Thanks for this, @jhoshiko! I will give it a try on my system as I'm experimenting with building Yocto-based distros.
Out of curiosity. Is there a reason you built an image manually rather than using the CROPS image that is recommended in recent editions of the Yocto Project Quick Build?

Ah I just realized that the reasons can be gleaned from discussions on the private issue tracker for our project. It would be great to have those findings summarized and captured in a README.md in the same directory as the Dockerfile.

can you fix the issues/best practices reported by the static code analysis?

@shankari updated!

@jhoshiko can you confirm that you have built the yocto image after these changes, and that it works?

@shankari The image is building for me, but similar to when we were building them before, I run out of memory and it crashes before it can complete. I'll need someone with a beefy workstation who can test this to completion.


Improve typespec

I will assume that you thought that doing Okta.client() in the typespec will do the function call it will conflict with the typespec.
But that is not the case.
Type specs in Elixir are specials and have its own way to resolve the references between things, you don't need to worry about using the same name as your functions.
If you did mean to point to a function would be forced to use the arity like Okta.client/1. Or you could force exdoc to resolve to a type by doing t:ModuleName.type_name.
Cheers,

@stueccles are you accepting PRs?

Gladly accepting pull requests :)
I just hadn't got around to cleaning up the Typespecs to reference a single type (hence the duplicate @type in each module) is all here.


Adds move/rename feature

Implements #2
New features:

Move a file
Rename a file

Could potentially be extended (if needed) to allow moving data between containers.

Thanks for implementing this!


[FLOC-1219] Include REST API docs

https://clusterhq.atlassian.net/browse/FLOC-1219

Another issue is that the API framework applies its generic success/failure wrapping around results.  That makes the docs generated here (or the source material) not quite correct.
I think we should ignore that until we're automatically verifying the docs, though.  Then we'll have something showing us what examples are wrong and we can decide how we want to fix them (perhaps by removing that wrapping layer and using HTTP response codes, for example).


How can I add objects using Amplify Plugins?

State your question
I tried to add records on DynamoDB by using generated Swift codes from Amplify. But it seems complex data was ignored. How can I add complex struct values to DynamoDB using Amplify-generated codes? I appreciate if someone can help me find out solutions.
Please advise me if I'm in wrong place or I don't provide sufficient information.
Which AWS Services are you utilizing?
Amplify 4.11.0
Provide code snippets (if applicable)
I tried to create a sample program using the following schema, and generated codes by Amplify.
type MenuCategory @model {
    id: ID!
    name: String!
    menus: [Menu] @connection(keyName: "byCategory", fields: ["id"])
}

type Menu @model
    @key(name: "byCategory", fields: ["categoryID","id"]){
    id: ID!
    categoryID: ID
    name: String!
    s3imageKey: String
}

Then, I called the following function to add MenuCategory. The function was successfully executed but menus was empty.
    func createMenuCategoryWithMenus(name: String, menus: [Menu]){
        let ampList = List(menus)
        let mcat = MenuCategory(id: UUID().uuidString, name: name, menus: ampList)
        Amplify.API.mutate(of: mcat, type: .create){ (event) in
            switch event {
            case .completed(let result):
                switch result {
                case .success(let mcat):
                    print("Successfully created MenuCategory: \(mcat)")
                case .failure(let error):
                    print("Got failed result with \(error.errorDescription)")
                }
            case .failed(let error):
                print("Got failed event with error \(error)")
            default:
                print("Should never happen")
            }
        }
    }

Output
Successfully created MenuCategory: MenuCategory(id: "<random String for ID>", name: "French", menus: nil)

Auto generated class files from Amplify
Menu.swift
import Amplify
import Foundation

public struct Menu: Model {
  public let id: String
  public var categoryID: String?
  public var name: String
  public var s3imageKey: String?

  public init(id: String = UUID().uuidString,
      categoryID: String? = nil,
      name: String,
      s3imageKey: String? = nil) {
      self.id = id
      self.categoryID = categoryID
      self.name = name
      self.s3imageKey = s3imageKey
  }
}

MenuCategory.swift
import Amplify
import Foundation

public struct MenuCategory: Model {
  public let id: String
  public var name: String
  public var menus: List<Menu>?

  public init(id: String = UUID().uuidString,
      name: String,
      menus: List<Menu>? = []) {
      self.id = id
      self.name = name
      self.menus = menus
  }
}

Environment(please complete the following information):

SDK Version: Amplify iOS
Dependency Manager: Cocoapods
Swift Version : 5.0
Device Information (please complete the following information):
Device: iPhone 11 Pro
iOS Version: iOS 13.2
Specific to simulators:

@hyaccoku Sorry we didn't reply to this sooner. Currently, Amplify doesn't automatically save relations.  For example, you could do this in the success handler of your code:
func createMenuCategoryWithMenus(name: String, menus: [Menu]){
    let ampList = List(menus)
    let mcat = MenuCategory(id: UUID().uuidString, name: name, menus: ampList)
    Amplify.API.mutate(of: mcat, type: .create){ result in
        switch result {
        case .success(let mcat):
            self.createMenus(menus, in: mcat)
        case .failure(let error):
            print("Got failed result with \(error.errorDescription)")
        }
    }
}

func createMenus(_ menus: [Menu], in menuCategory: MenuCategory) {
    for var menu in menus {
        menu.categoryID = menuCategory.id
        Amplify.API.mutate(of: menu, type: .create){ result in
            switch result {
            case .success(let mcat):
                print("\(menu.id) successfully created in category \(menuCategory.id)")
            case .failure(let error):
                print("Got failed result with \(error.errorDescription)")
            }
        }
    }
}

(Make sure you've updated Amplify and the CLI, and have generated your models with amplify codegen models.)

Closing due to inactivity. Feel free to re-open if you're still experiencing the same issue.


Issue with "undefined method `order' for nil:NilClass"

Hi everyone,
I following the guide https://github.com/cerebris/peeps#initial-steps-to-create-this-app
and run server with request GET /pages but it's show to me this error.

How to fix this one?
Thanks

Did you override the records method?

hi @lgebhardt:
No, I'm just integrate jsonapi on my rails engine.
This is my source
# resources/page_resource.rb
module StaticPages
  class PageResource < BaseResource
    attributes :title, :slug, :content, :created_at
    # paginator :offset
  end
end

# controllers/application_controller.rb
module StaticPages
  class ApplicationController < ActionController::Base
    include JSONAPI::ActsAsResourceController
    protect_from_forgery with: :null_session
  end
end

# controllers/application_controller.rb
module StaticPages
  class ApplicationController < ActionController::Base
    include JSONAPI::ActsAsResourceController
    protect_from_forgery with: :null_session
  end
end

# controllers/pages_controllers
require_dependency 'static_pages/application_controller'
module StaticPages
  class PagesController < ApplicationController
  end
end

# config/routes.rb
StaticPages::Engine.routes.draw do
  jsonapi_resources :pages
end

I run code and have error #619

I'm not sure. Running in an engine hasn't been tested as much as without. I'd try testing it not in an engine and see if it works before moving into an engine.

@kun391 I had the same issue and I could solve this by defining the model_name manually:
module YourEngine
  class Api::Admin::PostResource < JSONAPI::Resource
    model_name 'YourEngine::Post'

    attributes :title
  end
end

Thanks @harisadam. I have resolved the issue #619. :) :+1:


[AIRFLOW-1891] Fix non-ascii typo in default configuration template

Make sure you have checked all steps below.
JIRA

[x] My PR addresses the following Airflow JIRA issues and references them in the PR title.

https://issues.apache.org/jira/browse/AIRFLOW-1891

Description

[x] Here are some details about my PR, including screenshots of any UI changes:

There is a non-ascii character in the default configuration template default_airflow.cfg that blocks Airflow from running from scratch (when there is no prior configuration).

Tests

[x] My PR does not need testing for this extremely good reason:

Trivial though tested to work locally (Travis is passing anyways and that implies the fix)

Commits

[x] My commits all reference JIRA issues in their subject lines, and I have squashed multiple commits if they address the same issue. In addition, my commits follow the guidelines from "How to write a good git commit message":

Subject is separated from body by a blank line
Subject is limited to 50 characters
Subject does not end with a period
Subject uses the imperative mood ("add", not "adding")
Body wraps at 72 characters
Body explains "what" and "why", not "how"

[x] Passes git diff upstream/master -u -- "*.py" | flake8 --diff

@wileeam Please append [AIRFLOW-1891] also in the commit itself. This helps our tooling to connect the PR with the JIRA issue. Thanks!

Codecov Report

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

@@           Coverage Diff           @@
##           master    #2851   +/-   ##
=======================================
  Coverage   73.94%   73.94%
=======================================
  Files         160      160
  Lines       12130    12130
=======================================
  Hits         8970     8970
  Misses       3160     3160

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 09f7142...e9143a7. Read the comment docs.

Done @Fokko!

Thanks @wileeam, I've merged the change!


include ratelimit tests to run in aks

include ratelimit tests to run in aks

Codecov Report
Patch coverage has no change and project coverage change: +21.26 :tada:

Comparison is base (5ac0b32) 34.03% compared to head (679c96f) 55.29%.

Additional details and impacted files
@@             Coverage Diff             @@
##             main    #1086       +/-   ##
===========================================
+ Coverage   34.03%   55.29%   +21.26%
===========================================
  Files         352       21      -331
  Lines       39040     1644    -37396
  Branches    12190     1017    -11173
===========================================
- Hits        13286      909    -12377
+ Misses      25514      735    -24779
+ Partials      240        0      -240

Flag
Coverage Δ

adapter
?

admin-domain-service
58.10% <ø> (ø)

backoffice-domain-service
50.79% <ø> (ø)

devportal-domain-service
?

idp-domain-service
?

runtime-domain-service
?

Flags with carried forward coverage won't be shown. Click here to find out more.
see 331 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Modify indexing for function vwifi_interface_add

Summary
Since we implement a counter for wiphy in our project, which is vwifi_wiphy_counter. The relationship between virtual interfaces and wiphy is always one-to-one, so the indexing for virtual interfaces can be the same as wiphy.
Originally, the index for virtual interface is passed as a function parameters into the function vwifi_interface_add(). Now we modify the function, instead of using parameters as index for virtual interface, we use the value of vwifi_wiphy_counter to keep a better consistency.

Can you check if the proposed change works with namespace?

Can you check if the proposed change works with namespace?

Do you mean can we use the same approach on the index for namespace such a ns0 and ns1?

Do you mean can we use the same approach on the index for namespace such as ns0 and ns1?

Indeed, it is important to recognize that the primary aim of implementing vwifi is to facilitate its deployment within containerized or virtualized environments.

Do you mean can we use the same approach on the index for namespace such as ns0 and ns1?

Indeed, it is important to recognize that the primary aim of implementing vwifi is to facilitate its deployment within containerized or virtualized environments.

No problem, let me try to make it possible.

I would like to ask @jychen0611 to rework this pull request.


fix: event key with slash prevents swagger APIs such as /cosmos/tx/v1beta1/txs

It would be very useful to use the /cosmos/tx/v1beta1/txs and filter by event key attributes.
One such use case is to search for the tx that "finalizes" a CCTX, queried by the CCTX index.
Being able to do this via HTTP JSON-RPC service enables developing tooling as web app that has much larger reach than a CLI.

This pr should close this issue
https://github.com/zeta-chain/node/pull/803


Road to v2.0 - New Challenger Coin - Clean up unnecessary patches

...the commit that fixes this is in the (#679) and this won't happen again -_-


[WebToolsE2E][Aspire] Click Help on the Aspire Dashboard page, and the "Close" button prompt will automatically appear.

REGRESSION INFO: Worked in Aspire 8.2.1
INSTALL STEPS

Clean machine: Win11 x64 23h2 ENU
Install SDK 8.0.402
Install Aspire 9.0 RC1 [9.0.0-preview.4.24480.1]

REPRO STEPS

Open CMD, run following command to create an Aspire Starter App project

dotnet new aspire-starter -o AspireStarterApp
cd AspireStarterApp/AspireStarterApp.AppHost

Dotnet run the project in CMD, and open URL in the browser.
dotnet run

ACTUAL
Click Help, the prompt ‘Close’ will be automatically displayed.

Also reproduce the Add filter page in Structured and Traces

EXPECTED
When the mouse hovers over the close button, the prompt "Close" will appear.

This occurs in the examples

Fixed with PR mentioned. Will be in next release


[BUG] When I enable smooth in statistics tools, costs are skipped.

Required prerequisites

[X] I have read the documentation https://omnisafe.readthedocs.io.
[X] I have searched the Issue Tracker and Discussions that this hasn't already been reported. (+1 or comment there if it has.)
[X] Consider asking first in a Discussion.

What version of OmniSafe are you using?
0.3.0
System information
ubuntu 20.04
0.3.0
Problem description
When I enable smooth in statistics tools, costs are skipped.
Before enabling smooth:

After enabling smooth:

Reproducible example code
The Python snippets:

Command lines:

Extra dependencies:

Steps to reproduce:
1.plot without smooth
2.enable smooth and plot
3.
Traceback
No response
Expected behavior
Smooth in all graphs
Additional context
No response

Thanks for your feedback, we also noticed that. And it was fixed in #208.


[BUGFIX] added cleanup on navigate to stop contact-form component

Tasks:

[x] done
[ ] got feedback

Informations:

Q
A

Bug fix?
yes

New feature?
none

Tests pass?
none

Fixed tickets
https://github.com/massiveart/POOL-ALPIN/issues/1502

Doc
none

@michaelzangerle wrong template! and i wouldnt add the link to a private client project in a public PR!


Issue with <pyarr.radarr_api.RadarrAPI object>.getMovie()

Hi
I get this error on the RadarrAPI when calling .getMovie()
Traceback (most recent call last):
  File "fetch_movies.py", line 9, in <module>
    print(radarr.getMovie())
  File "/home/slimcdk/.local/lib/python3.8/site-packages/pyarr/radarr_api.py", line 148, in getMovie
    movieId = args[0]
IndexError: tuple index out of range

There is no issue with calling .getSeries() on the SonarrAPI

@slimcdk thanks, this was fixed in a new release but it's failing quality checks so won't upload to pypi
Will get this sorted asap

The latest version should now resolve this issue.


Pull Request checks detected documentation changes but it's not

Describe the bug
On https://github.com/apache/pulsar/pull/6381, the checks are detected as documentation changes but it's not. So checks like units tests are not run while they must be run.

@KannarFr there was an issue about checkout actions. I think we already fixed it. I looked at https://github.com/apache/pulsar/pull/6381 it seems that all unit tests are running, no?

Yes.


Make AnimatedSprite event functions optional

this.animation.onComplete = undefined;
that line gives me an error in typescript
Type 'undefined' is not assignable to type '(...params: any[]) => any'.ts(2322)
Even AnimatedSprite.destroy() function sets these to null, so why can't I ?
public destroy(options: IDestroyOptions|boolean): void
    {
        this.stop();
        super.destroy(options);

        this.onComplete = null;
        this.onFrameChange = null;
        this.onLoop = null;
    }

Description of change

Pre-Merge Checklist

[ ] Tests and/or benchmarks are included
[ ] Documentation is changed or added
[ ] Lint process passed (npm run lint)
[ ] Tests passed (npm run test)

Thank you @dranitski


Angluar CLI  installation on Visual Studio Code require Admin Rights

Please file any Angular CLI issues at: https://github.com/angular/angular-cli/issues/new
For the time being, we keep Angular CLI issues in a separate repository.
We are using AngularCLI on MS Visual Studio Code for devops but as per our security policy users should not have Admin rights on the VDI/workstation. Without admin rights users are not able to install the extension of angluarCLI.  Would like to know how we can allow AngularCLI without Admin rights to Users to use it.

Hello, we reviewed this issue and determined that it doesn't fall into the bug report or feature request category. This issue tracker is not suitable for support requests, please repost your issue on StackOverflow using tag angular-cli.
If you are wondering why we don't resolve support issues via the issue tracker, please check out this explanation.


RFC: syntax for efficient await abstraction

Consider the following async calculator code. It's ridiculously inefficient due to the recursive awaits.
actor a {

  public /* query */ func pow(i :Int, n:Int) : async Int {
     power(i, n);
  };

  public type Expression = {
    #const : Int;
    #add : (Expression, Expression);
    #pow : (Expression, Expression);
  };

  // slow version using async
  func eval(exp : Expression) : async Int {
//  func eval(exp : Expression) : async Int = async {
    switch (exp) {
      case (#const(n)) n;
      case (#add(e1, e2)) (await eval(e1)) + (await eval(e2));
      case (#pow(e1, e2)) await (pow(await (eval e1), await (eval e2)));
    }
  };
}

https://github.com/dfinity/motoko/pull/3573 fixes the inefficiency, but only by making some await's commit, others not, which Andreas objected too. Perhaps rightly.
To fix that, I'm proposing a new type of async computation (a thunk), together with new introduction and elim forms, to introduce a clear distinction between fast-and-loose and slow-but-safe async abstraction.
The one catch is that the new type is a monadic value and won't have any effect unless run with await in (await?) which opens the footgun that someone creates the thunk but doesn't eliminate it. I could try to avoid that by warning about free-standing, unawaited await T (or async? T) values or making the type second class somehow (like our mutable variables).
Of course, the question now is, what syntax for the type constructor and terms:
Option 1 (👍)
type: await T
intro: do await <block>
elim: await in <exp>  (note the re-use of in)
  // Use `await Int`/`do await {}`/`await in ..` to avoid context switch at each recursive call
  func eval(exp : Expression) : await Int {
//  func eval(exp : Expression) : await Int  = do await { ...}
    switch (exp) {
      case (#const(n)) n;
      case (#add(e1, e2)) (await in eval(e1)) + (await in eval(e2));
      case (#pow(e1, e2)) await pow(await in (eval e1), await in (eval e2));
                              // ^^^ only real context switch on call to asynchronous `pow` query
    }
  };

backwards compatible

verbose

Option 2 (👎)
type: async? T
intro: async? <block>
elem: await? <exp>
  // Use `async? Int`/`async? {}`/`await?` to avoid context switch at each recursive call
  func eval(exp : Expression) : async? Int {
//  func eval(exp : Expression) : async? Int = async? { ... }
    switch (exp) {
      case (#const(n)) n;
      case (#add(e1, e2)) (await? eval(e1)) + (await? eval(e2));
      case (#pow(e1, e2)) await pow(await? (eval e1), await? (eval e2));
                        // ^^^ only real context switch on call to asynchronous `pow` query
    }
  };

minor variation of existing syntax

might not fit the grammar because of options (need to check)
footgun is the different behaviour of async vs async?

Option 3 (:smile:)
type: thunk T
intro: thunk <block>
elim: force <exp>
Seems to be closest to the essential ideas, but burns keywords and is a breaking change.
Option 4 (:tada:)
type: async* T
intro: async* <block>
elim: await* <exp>

avoids confusion with option, probably backwards compatible.
minor variation of existing syntax

footgun is the different behaviour of async vs async*

I immediatelly liked await in …, only to then also immediately like async? and await?. So I my favorite is Option 2 so far.

Since these are first-class values, the monadic Option 2 looks ok to me. If it doesn't work out grammar-wise, then option 4 would be the runner up.

Since this all is happening under tight temporal constraints, maybe we shouldn't advertise this feature as a stable one. Softening the narrative would give us some leeway changing the syntax if we come up with a better one (deprecation the previous).

Another thing:

async? T is non-sharable,
so only available in private function signatures

Right?

Since this all is happening under tight temporal constraints

Interesting how quickly the constraints can change, given that we have been discussing this per years when nobody seemed to care… oh well, I guess that's Realpolitik

I brought this up with Andreas at ICFP too, it was well-known, but we always kept discussing the necessity and semantics, never the syntax (other than do not await :-)
Now a customer feels the need. Realpolitik indeed.

What's the emoji to pick for "none of these"? : )
So yeah, FTR, I haven't changed my mind. I still think this is a very bad idea that causes way more damage than good. It makes an already difficult atomicity/commit/rollback story even less understandable and way less predictable. It creates a serious, seductive footgun, where users for sure will prematurely optimise their code (because fast) with subtle concurrency bugs, ruining all benefits of the actor model.
What is the advice to users? When is it safe to use this as opposed to proper async/await? I honestly have no idea. The only obvious case is where all code involved (including remote calls) is known to be stateless. But the provides no useful support or guidance regarding state dependencies, which I think is a much more pressing problem that would need solving first before going fast and loose with commits and atomicity. ; )

What exactly are you objecting to @rossberg?
I'm suggesting introducing a type distinction to address your original concerns  - the old await will remain definite a commit point and yield/commit on both pending and completed futures.
Real users have actually complained about the cost of abstraction and the pressure on the (limited) self-call queue that the extra yields entail, much as we predicted all along.
(At this point, I'm tempted to go with the original solution which was at least elegant if a mild foot-gun. It was also opt-in but arguably in a more subtle way - I was hoping the type distinction would alleviate your concerns.)

Here's the related forum post
https://forum.dfinity.org/t/canister-output-message-queue-limits-and-ic-management-canister-throttling-limits/15972/9
In particular this one:
https://forum.dfinity.org/t/canister-output-message-queue-limits-and-ic-management-canister-throttling-limits/15972/16?u=claudio
I was originally hoping that the replica optimization of allowing multiple messages to self in the same round would reduce the latency of async expressions, but, given the artificial (but probably unavoidable) queue limits imposed by the IC, that only gets you so far.
Plus its very reasonable to want abstraction without breaking atomicity every time you use it, regardless of what the callee is doing.

Another thing:

async? T is non-sharable,
so only available in private function signatures

Right?

Yes, it's non-shareable, and I'd like to lift the restriction that T must be shared (as we should for ordinary async too).

@crusso, my concern hasn't changed: when I see await* f(), I cannot tell whether it allows interleaving and worse, whether it results in a commit. It may or may not, depending on whatever the F happens deep inside f on a particular execution. That's terrible from a correctness and modular reasoning point of view. If there ever is a rollback, you have approximately zero chance to predict or control the outcome and the overall consistency of the app's state. Concurrency is already hairy enough without such uncertainty. In the context of the IC, this isn't just a harmless thunk, nor a mere performance shortcut.
Wrt user requests, I still think the alleged Henry Ford quote about faster horses applies. Deeply nested async is bad code, I think, just like putting all your Haskell functions inside the IO monad. Do not "fix" bad code by language hacks, make the language encourage better code.

When you see await* you now know that the code may yield and commit state changes, so those changes better be complete and ready for publication to other concurrent observers, or private and irrelevant to others if rolled back.
At the moment, Motoko actively encourages worse code, by forcing users to avoid abstraction, maintain their own stacks, and even count issued self calls.

Yep. The tool named await* won't take away the classical await from the user's toolbox. It just gives you another tool with different characteristics, advantages as well as drawbacks. It makes certain things possible that weren't before (Like MonadFix vs. Monad in Haskell).

I immediatelly liked await in …, only to then also immediately like async? and await?. So I my favorite is Option 2 so far.

(sorry, edited your comment by mistake, how rude!)
Bugger: async?Int would be a breaking change since it already parses as async ?Int and would now parse as async? Int, changing semantics. I guess we could detect and warn about the change.
async*,await* doesn't have this problem and still suggests zero or more commits/suspensions which is kinda more accurate.

ASYNC/AWAIT just to shout ;->

@crusso:

When you see await* you now know that the code may yield and commit state changes,

Emphasis on "may", which makes this observationally equivalent to knowing nothing. ; )

so those changes better be complete and ready for publication to other concurrent observers, or private and irrelevant to others if rolled back.

That isn't sufficient, though. You no longer know how far the rollback will reach. Consequently, any changes before that point must simultaneously be safe to commit and safe not to commit, regardless of what happens after. I suppose I lack imagination for what sort of changes would fall into that category, and how programmers would get this right. In practice, I suspect its only safe when it's pure or they have a proper commit point before it, but that of course would defeat the purpose.

At the moment, Motoko actively encourages worse code, by forcing users to avoid abstraction, maintain their own stacks, and even count issued self calls.

I guess I beg to differ about which code is worse. I thought there is wide consensus that I/O deeply nested in program logic is a particularly bad anti-pattern. And remote calls are the IC's version of I/O!
@ggreif:

Yep. The tool named await* won't take away the classical await from the user's toolbox.

Except that the average dev will happily pick await* over await, because fast. Especially when they do not really understand the difference, which I'd expect to be the common case.

Given the syntactic problems with async?/await?, and my reluctance to introduce new keywords that were identifiers, I suggest we go with async* and await*.
Object now or forever hold your peace..

@crusso:

When you see await* you now know that the code may yield and commit state changes,

Emphasis on "may", which makes this observationally equivalent to knowing nothing. ; )

so those changes better be complete and ready for publication to other concurrent observers, or private and irrelevant to others if rolled back.

That isn't sufficient, though. You no longer know how far the rollback will reach. Consequently, any changes before that point must simultaneously be safe to commit and safe not to commit, regardless of what happens after. I suppose I lack imagination for what sort of changes would fall into that category, and how programmers would get this right. In practice, I suspect its only safe when it's pure or they have a proper commit point before it, but that of course would defeat the purpose.

This is actually a very common pattern in the implementation of lock free data structures, where you build up a bunch of private state off to the side until you reach a final, definite commit point. Commiting or rolling back local changes that only affect your own logical state isn't problematic as long as you haven't published the changes to other observers.

At the moment, Motoko actively encourages worse code, by forcing users to avoid abstraction, maintain their own stacks, and even count issued self calls.

I guess I beg to differ about which code is worse. I thought there is wide consensus that I/O deeply nested in program logic is a particularly bad anti-pattern. And remote calls are the IC's version of I/O!

Right, but this will at least be marked with async*/await*, so not totally hidden from the user.

@ggreif:

Yep. The tool named await* won't take away the classical await from the user's toolbox.

Except that the average dev will happily pick await* over await, because fast. Especially when they do not really understand the difference, which I'd expect to be the common case.

Well, it's not like async/await doesn't introduces it own slew of concurrency hazards already. So yes, it's a danger but I expect our programmers are already not aware that a local await causes a context switch. Indeed, many were surprised that it did, opening them up to concurrency bugs.

This is actually a very common pattern in the implementation of lock free data structures

Okay, but those are as expert-level as it can possibly get, nothing to leave in the hands of mere mortals.

So yes, it's a danger but I expect our programmers are already not aware that a local await causes a context switch. Indeed, many were surprised that it did, opening them up to concurrency bugs.

Hm, so, because the language already is a bit confusing and dangerous, it's fine to make it more confusing and dangerous? I'm not sure... ;-)

Objection noted.
PR is here #3609

Closed with #3609