Icon request

Hi - can we please get the (horizontal flipped) version of this icon in the training icons section? https://thenounproject.com/icon/hide-5247530/
We need it to tell users to select 'show hidden' datasets in this tutorial: https://training.galaxyproject.org/training-material/topics/single-cell/tutorials/scanpy_parameter_iterator/tutorial.html#number-of-neighbours-to-derive-knn-graph-for-scanpy-computegraph-tool

Oh yeah, having that tiny icon would be fab!
@shiltemann do you think we could have it added to the list of available icons? I wish I could add it myself if I knew how!

I wish I could add it myself if I knew how!

These are in _config.yml, there you'll find the list of icons as well as their font-awesome codes. Please check https://fontawesome.com/search?q=eye&o=r for the correct eye (we do not have 'pro'). Thanks for offering to fix it :)

I think the icon you are looking for is fa-eye-slash
So if you add a line like this
galaxy-show-hidden: fas fa-eye-slash

near [this line in _config.yml](  galaxy-scratchbook: fas fa-th)
It should be available to use as {% icon galaxy-show-hidden %}
(and should also automatically appear in the list of available icons FAQ that @wee-snufkin referenced, so no update needed there)

Already done here!


Cleanup of error logging in gold_master.py and Galileo SSI

This pull request contains fixes to how errors are logged. It was part of the previous pull request but that one got merged before I had pushed these changes.
In the LOGGING methods in oops/config.py:

Add counter that records how many lines a logger has printed.
In print(), literal messages no longer get counted as warnings or errors, even if the level is WARN or ERROR. This is consistent with the point of literal messages, which is to add supplementary info to the log. Supplementary info about a warning or error should not increment the count.

In oops/gold_master/__init__.py:

Add sensible default values to define_standard_obs().
Force the planets, moons, and rings inputs to be tuples, never lists.
Bugfix: "info" was not a recognized input for --level.
Force a log message to be printed identifying the observation in which an error is logged. Previously, if the logging level was set to something higher than INFO and the test was being run on multiple observations, an error would be logged without identifying which of multiple observations triggered the error.
There is now a blank line in the log between multiple observations tested when the level is INFO.
When multiple observations were tested, the log ends with INFO messages indicating the total warnings, total errors, and total elapsed time.
When logging internals, I now ensure that LOGGING.pop() is always called after LOGGING.push() using try/finally.

For Galileo SSI:

I removed the "extraneous byte" warning because it seems to be a common issue in the data files and we really don't care.
I simplified the calls to define_standard_obs(), taking advantage of the new input defaults.

Loosk good, all unit test pass. It looks like I miust have had some extraneous overrides in the galileo ssi standard_obs file.

In the third test, there were a bunch of Europa overrides, but they were applied to an Earth observation so they never got used. The Europa overrides were only needed for the fourth test.


governor contractor submission (bananapus)

[ ] on governorAddress, hide safe nonce field
[ ] onSubmit will submit to that address instead of safe api
[ ] governor submit hook

I made this repo to deploy a goerli governor and voting NFT
you could deploy that or use the one I have already set up
Currently setup:

goerli governor deployed at 0xbEAf4476eC398A9B613FCEFdAD6E79B4C9e61B1B
Voting based on this NFT 0x3f72FcFfeE14873882247381DebACEF967CFBE33 (can mint on etherscan then delegate to test)
has a tally setup here: https://www.tally.xyz/gov/phoenix-project
Voting period of 22 minutes for easy testing
The governor is the owner of this juicebox project https://goerli.juicebox.money/v2/p/1098

I was able to reconfigure the juicebox project as shown here
https://www.tally.xyz/gov/phoenix-project/proposal/114883278985841061977609265319431487007759152428078519325810731928566899908181
https://goerli.etherscan.io/tx/0x507bf6040fefd99d922d265b35f3c9f840efe16da2a9c409d997276c9fa8768f#eventlog

working PR: https://github.com/nance-eth/nance-interface/pull/110
deployment: https://jbdao-rerejtjl4-juicetool.vercel.app/


Implement MVP of an outbox pattern for the event bus

At this time, there is not a great story for recovery from event producing issues if the event bus (Kafka, Redis, etc.) were to temporarily go down.
A common solution for this is an Outbox Pattern, where event data is first sent to the database, and a separate process sends events from the outbox to the event broker, maintaining order. This ticket is for implementing an MVP of this pattern.
Notes/Questions:

Another ticket, https://github.com/edx/edx-arch-experiments/issues/354, to document/implement a less ideal work around, but this fix is likely to be much more dependent on environment.
To maintain order, the simplest implementation is to have a singleton process that reads from the outbox and produces the events.

What can this handle for typical load?
What can this handle for a large incident?
When would we need to invest in being able to have multiple processors (e.g. that handle different topics)?
Would we need a capability to move or keep certain topics with large load and less essential events off the outbox?

When do we delete events from the outbox?
Note: there are many articles we can review to learn from others.

We are waiting on @davidjoy (or someone) to do some outreach to help us determine priority. The thought was to discuss with Colin about a potential subscriptions event, because it is financial. We can also reach out to owners of existing events: https://2u-internal.atlassian.net/wiki/spaces/AT/pages/174555142/How+to+Use+the+Event+Bus+edX.org+2+of+2#Current-event-bus-usage.

[inform] I discussed with Kelly, and they are probably fine with the more temporary solution of https://github.com/edx/edx-arch-experiments/issues/354 for a while. However, she also recommended reaching out to Colin about the Program Credential events.

So after talking to @colinbrash, we don't feel there's an immediate need for this to be done.  If we have the ability to manually recover via the more temporary solution in https://github.com/edx/edx-arch-experiments/issues/354 then that's sufficient for now.
That said, Colin indicates that he sees the Outbox pattern as an important part of giving users of the event bus piece of mind, and that not having it gives him pause as his team continues work on commerce-coordinator..  For them to consider adopting the event bus in that work, they'd like to have the resiliency that the outbox would provide.

That said, Colin indicates that he sees the Outbox pattern as an important part of giving users of the event bus piece of mind, and that not having it gives him pause... [emphasis added]

Is this for any events, or specifically commerce-related events? Either way, this seems like something we need to get ahead of if we want people to use it when they need it. Maybe it isn't the highest priority, but it still feels like high priority work if we are concerned with event bus adoption.

Commerce-related events that commerce coordinator might produce or rely on.

This ticket was prioritized as Future, but I'd like us to revisit.
There was a Prod incident caused by an arch-bom related change.
a. We will separately look to see how this type of event might be avoided.
b. At the same time, this is a reminder that we may cause event producing errors, and not just Kafka going down.
As part of resolving, all existing events have backup plans. If events did not, this would have been a more major issue.

[proposal] We implement sooner rather than later to avoid an RCA that we know if avoidable.
[alternative proposal] [not recommended] we communicate that the event bus is risky for any event that doesn't have its own backup plan, until we implement this ticket, and have teams communicate with us when and if they wish to use the event bus and do not want to take on this risk. This type of blocker may just deter people from using the event bus.

We should definitely check in with Confluent around this for solutions. I also wonder if there is any way we could use a Connector for the processing of the outbox itself.

The ticket https://github.com/openedx/event-bus-kafka/issues/178 already existed, and is possibly redundant to this one. Whoever takes on this ticket might review that ticket, see if there is anything important to move over, and close it as necessary.

There's a thread in the Platform Engineering Slack workspace that seems relevant: https://platformengin-b0m7058.slack.com/archives/C038M6NBFLY/p1704230480747129 .  Initial post:

Hello, I have a Platform team who has created a Kafka producer/consumer service following the Transactional Outbox Pattern.  The outbox tables live with in the databases owned by the service teams.  I had hoped / expected that the service teams would own this table and outbox relay since it is a per service database setup in databases they own.  We created documentation expecting this. I am getting pushback because some Kafka expertise is required for maintenance. We are open to supporting them with knowledge/consulting but they are pushing back for my Platform team to own them.  I am reluctant because I am not sure how scalable it is for my team to own X outbox tables that live in databases owned by the service teams.  Anyone else ever hit this problem or similar issue?

First reply:

This happens all the time. Unfortunately, it sounds like expectations weren't established before building this service for the dev team.
The good news is you're not stuck with everything...yet. I would use this as an opportunity to clarify and tease apart the responsibilities between your platform and dev team.
Here are some thoughts that may help your conversations (these are based on a platform engineering mindset of "you build it, you run it"):

You mentioned contention around who owns the table. Dev teams usually own all data that they produce. So, the data in the table would be owned by the dev teams. If the table schema needs changed, I think this would fall under maintenance of the reusable service (see next note)
Platform teams usually maintain reusable libraries/frameworks/services. This means feature updates, bug fixes, security updates.
Some engineering orgs have shared services that are a single instance of production resources while some will require each dev team to stand up an instance of a reusable service. It's unclear where your org stands on this, but I believe it's within the platform team's responsibility to (at minimum) figure out  how to perform upgrades on this service
Deciding who should perform these upgrades/updates requires a little more knowledge and context. I would do some critical thinking and work with the dev team to figure out a strategy that works for both.

The ADR has been accepted in Provisional status: https://docs.openedx.org/projects/openedx-events/en/latest/decisions/0015-outbox-pattern-and-production-modes.html -- I won't be ticketing up that work at the moment, though.


DatePicker: Fix PerisanCalender change year issue (#3740)

Description
The problem was caused by wrong handling of Culture for year and month.
Georgian year usually begins on 10th of Dey(10th month of Persian Calendar) so when a year in this month is selected the Picker won't work correctly because this month covers two Georgian years.
The changes are small and only handles month and years correctly according to the Culture.
These changes fix #3740
How Has This Been Tested?
All the existing unit tests are passed.
I tested the changes visually and by testing various scenarios.

Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[x] The PR is submitted to the correct branch (dev).
[x] My code follows the code style of this project.
[ ] I've added relevant tests.

What is the state of this pull request?

Hi. Sorry we missed this PR, feel free to ping the team next time.
I sent it on review.
But there are some style issues as well.

Also it would be necessary to add a bUnit test for this PerisanCalender calendar case.

Hi
Added missing spaces and updated PersianCalendar test.
@henon @ScarletKuro

Thanks @ajahangard !


remove less than IE 9 support, fix #46

PR Submission:
All PR's welcome, even those without an Issue

[x] Have tested this PR and it fixes an issue noted below.

Additional Information Below
Does as it says, removes less than IE 9 support, thus fixes #46.

Thanks for the PR as I just pointed out in #50 which also contains this fix, it would require a bump to v2 since it is removing IE compatibility. As indicated I will be branching master into a develop branch so the changes can be tested. Please consider PR'ing against the develop branch again. Thanks!

Ok thanks, with the other PR merged mine is obsolete. :)


[UX2.0] Add models for "service vpn" and "service vpn interface ethernet"

Description
Path: cisco-catalyst-wan-sdk/catalystwan/models/configuration/feature_profile/sdwan/service/
Add models for "service vpn" and "service vpn interface ethernet"

We have added this model and endpoints. It is on dev-uxmt branch, we will be merging this to main soon.

models: catalystwan/models/configuration/feature_profile/sdwan/service/lan/vpn.py
endpoints: catalystwan/api/feature_profile_api.py::ServiceFeatureProfileAPI


Fix dpg literal ctor

Partially fixes https://github.com/Azure/autorest.csharp/issues/3230
Description
In DPG, we explicitly skip the deserialization of literal type properties, and per discussion in this issue this is incorrect.
This PR adds literal properties into deserialization as well, and in the meantime, the internal ctor will include those properties as well to align the current way already working perfectly and correctly as in mgmt plane and HLC.
The extensible enum part as discussed in this issue is not included in this PR because that needs more work in the emitter
Checklist
To ensure a quick review and merge, please ensure:

[ ] The PR has a understandable title and description explaining the why and what.
[ ] The PR is opened in draft if not ready for review yet.

If opened in draft, please allocate sufficient time (24 hours) after moving out of draft for review

[ ] The branch is recent enough to not have merge conflicts upon creation.

Ready to Land?

[ ] Build is completely green

Submissions with test failures require tracking issue and approval of a CODEOWNER

[ ] At least one +1 review by a CODEOWNER
[ ] All -1 reviews are confirmed resolved by the reviewer

Override/Marking reviews stale must be discussed with CODEOWNERS first

Can we add tests by reflection?

Can we add tests by reflection?

We have some tests around model generation, but those are impossible to maintain therefore we disabled them long ago. Feel free to open a PR to reenable them. I do not want to investigate the possibility of that in this PR

@m-nash could you please have a review on this PR?

Include the extensible enum as well

Can we get a new regen preview with all the latest changes?

Can we get a new regen preview with all the latest changes?

We will have one once I finish the extensible enum part

Hi @m-nash could you have a review on this PR?


Dynamically typed tokens

Apologies; I don't know of a discussion forum for this baby.
How does one define languages for which the type of token depends on information supplied by the user externally to the editor?
Suppose I wanted to write English language. There's inherent ambiguity in English that a static language definition file (like Monarch) can't capture:

We saw her duck.

For the above sentence, the user will need to provide missing information for the syntax to be disambiguated. How does one leverage Monaco to make something like this work?
Note that that externally-supplied information would have to be associated with the token for the duration of its lifetime.

To colorize a programming language, you can use either Monarch or a hand-written tokenizer via setTokensProvider.
You can also use decorations (on the model to get them show up in all editors displaying the model or on the editor to get them show up only in the current editor instance).
There are examples for using decorations:

https://microsoft.github.io/monaco-editor/playground.html#interacting-with-the-editor-rendering-glyphs-in-the-margin
https://microsoft.github.io/monaco-editor/playground.html#interacting-with-the-editor-line-and-inline-decorations

And you can find code examples for implementing a manual tokens provider:

https://github.com/Microsoft/monaco-typescript/blob/master/src/tokenization.ts#L14

In my use case, the token types depend on more than the text itself. How does a tokenizer store and access the additional information in Monaco? Is there a way to associate information with a token that can be used in tokenization to compute the token's type? How does token identity work in such cases? Is editing allowed in the middle of the token? Does the token retain its associated information (really, its identity) when that happens?

The tokens themselves are not meant to hold anything more than a string type and a start index.
Tokenization is meant to be a top-down process, with states saved between lines (usually to represent things such as multiline comments, multiline strings, etc.). It also assumes that it is only taking the text as the input (and a tokens provider is therefore invoked again when the text changes, etc.). I don't think what you're trying to do fits with this model.
Perhaps you can resort then to decorations.

Sounds like the exact solution that they recommend in CodeMirror; there, they call them "text markings".
But this approach deals with the problem outside the syntax, which is wrong: whether a token is a verb or a noun is a matter of syntax.  We should allow tokenizers to be stateful and maybe even give them support in tokenizing smartly and remembering previously made choices, perhaps in the form of incremental tokenization, or information about their previous tokenization decisions.
That said, where can I read more about decorations? In particular, how does token identity work with decorations? If a decorated token is split in two by inserting a space, what happens to its decoration? What if the token is expanded? Are there callbacks for clients to decide the fate of the decoration in the face of such events?

@viridium
Did you go through the playground examples at https://microsoft.github.io/monaco-editor/playground.html
Did you go through the public API (either in its .d.ts form or in the generated doc at https://microsoft.github.io/monaco-editor/api/index.html)
I am happy to answer specific questions, but please take the time to read existing documentation first.


Koios rejects valid transactions

Describe the bug
I'm trying to send a manually built transaction using koios
the CBOR of the transaction is question is the following.
84a40081825820835ceae4ae4026d4fb24a6d9c5aaa57520f6219eadba493af7ca7d2d233eee7b020183a300581d70872e68d1f35ad58edaffedf7643b2a4709377a48e952adcc9e1bd25d011a0098968003d81858fe820258fa58f80100003232323232323232323232222533357346664446600e66e3c00922010c48656c6c6f20706c752d747300133008371e00666014002464660180024640026601ceb8dd6180a0009aba1001375c0066eb800800452616225333573400400229408cc01c852891119802980200109801800912999ab9a00214a20024460026aae78dd5001119801000a5eb108c0088d5d01801000911980190801111198028011801800980091111919980398020009801800801198020018011191801119801001000918011198010010009112999aab9f001003133002357420026ae880048d5d09aba2357446ae88d5d11aba2357446ae88d5d10009a300581d70872e68d1f35ad58edaffedf7643b2a4709377a48e952adcc9e1bd25d011a00989680028201d818581e581c58f8b2033ed68e7a095f0ea33c919ed954c3469d9d493076747fc747a200581d6058f8b2033ed68e7a095f0ea33c919ed954c3469d9d493076747fc747011b0000000251a4071e021a0002c1710f00a10081825820d68415abfe6cb61679751108d087057b08b526a3acc815d6c5d6d4bd5028ce7b5840543b3274e1c1beb9371c6650760b6b1c1e933841bd6ee2d7003374b197a207318334ef3945e4716ca58b4c085686a374980c63e8663f8e633d8a13cc4581a404f5f6

the endpoint used is
https://preprod.koios.rest/api/v0/address_info

the code used to perform the request is in the koios-pluts repository
I know the transaction is valid because I was able to send it using cardano-cli.
here is the final transaction in Cardanoscan: https://preprod.cardanoscan.io/transaction/835ceae4ae4026d4fb24a6d9c5aaa57520f6219eadba493af7ca7d2d233eee7b
To Reproduce
send the specified transaction using the koios endpoint
Expected behavior
transaction to be accepted

Clarified in support channel, user was using wrong endpoint (address_info instead of submittx)


Gathering data from --profile-ir

Right now, when running with the --profile-ir option, we get this output
alexe@AChampignon simd % onnx-mlir -O3 -march=arm64 bertsquad10-v2.mlir -profile-ir=Onnx -onnx-op-report=Simd
==ONNX-SIMD-REPORT==, onnx.ReduceMeanV13-simd, bert/embeddings/LayerNorm/moments/mean, 16, 768, horizontal
alexe@AChampignon simd % ~/OM/onnx-mlir/build/Debug/bin/run-onnx-lib bertsquad10-v2.so
Load model file bertsquad10-v2.so with entry point run_main_graph
Start computing 1 iterations
#0) before onnx.ReduceMeanV13 Time elapsed:<PHONE_NUMBER>.743763 accumulated:<PHONE_NUMBER>.743763 (bert/embeddings/LayerNorm/moments/mean)
#1) after  onnx.ReduceMeanV13 Time elapsed: 0.000123 accumulated:<PHONE_NUMBER>.743886 (bert/embeddings/LayerNorm/moments/mean)
Finish computing 1 iterations

Any objections if I were to change the output printed by the tracing as follows?
==profiling==, onnx.ReduceMeanV13, bert/embeddings/LayerNorm/moments/mean, before,<PHONE_NUMBER>.743763,<PHONE_NUMBER>.743763
==profiling==, onnx.ReduceMeanV13, bert/embeddings/LayerNorm/moments/mean, after, 0.000123,<PHONE_NUMBER>.743886

Namely using this pattern
==profiling==, <op name>, <node name>, (before | after), <elapsed time>, <accumulated time>

That way, I could more easily combine the data I track in make-report.pl to include runtime, as well as easily processing the traces as well and summarizing per op-type, per node name,...
The idea is to kind of normalize the patterns from all our profiling places,  compiler, runtime exec,... to a single format.
All of them currently use <type of analysis>, <op name>, <node name>, followed by comma separated fields specific to the analysis

I have no objection.

Implemented in #2451


pkg/endpoint: update scopeLog in controller

Signed-off-by: André Martins<EMAIL_ADDRESS>

This change is

test-me-please

@raybejjani I had this on my git stash in case any of us would forgot.

Ha, usually I don't label my stash entries well, so I get confused, and then clear it all out :/


Quota responses not consistent

Bug description
Even after hitting rate limit, quota occasionally allows requests.
Affected product area (please put an X in all that apply)
[ ] Configuration Infrastructure
[ ] Docs
[ ] Installation
[ ] Networking
[ ] Performance and Scalability
[X] Policies and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Expected behavior
Results should be consistent. Once the limit has been hit, it should always respond with RESOURCE_EXHAUSTED until the limit is reset based on time.
Steps to reproduce the bug
After installing the Istio helloworld sample, create a simple quota based on a single header dimension (memquota or redisquota, it doesn't matter - both fail similarly):
apiVersion: config.istio.io/v1alpha2
kind: handler
metadata:
  name: appquota
  namespace: istio-system
spec:
  compiledAdapter: memquota
  # compiledAdapter: redisquota
  params:
    redisServerUrl: docker.for.mac.host.internal:6379
    connectionPoolSize: 10
    quotas:
    - name: appquota.instance.istio-system
      maxAmount: 2
      validDuration: 1m
---
apiVersion: config.istio.io/v1alpha2
kind: instance
metadata:
  name: appquota
  namespace: istio-system
spec:
  compiledTemplate: quota
  params:
    dimensions:
      application: request.headers["application_name"] | "unknown"
---
apiVersion: config.istio.io/v1alpha2
kind: QuotaSpec
metadata:
  name: appquota
  namespace: istio-system
spec:
  rules:
  - quotas:
    - charge: 1
      quota: appquota
---
apiVersion: config.istio.io/v1alpha2
kind: QuotaSpecBinding
metadata:
  name: appquota
  namespace: istio-system
spec:
  quotaSpecs:
  - name: appquota
    namespace: istio-system
  services:
  - name: helloworld
    namespace: default
---
apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:
  name: appquota
  namespace: istio-system
spec:
  match: request.headers["application_name"] | "unknown" != "unknown"
  actions:
  - handler: appquotas
    instances:
    - appquota

Then, make some requests against it:
$ for ((n=0;n<30;n++)); do curl localhost/hello -Happlication_name:test1; echo ""; done
Hello version: v1, instance: helloworld-v1-7bb88866c4-wmkt5

Hello version: v2, instance: helloworld-v2-6cd449dff4-lqfg5

RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
Hello version: v1, instance: helloworld-v1-7bb88866c4-wmkt5

RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
Hello version: v2, instance: helloworld-v2-6cd449dff4-lqfg5

RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
Hello version: v1, instance: helloworld-v1-7bb88866c4-wmkt5

RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
Hello version: v2, instance: helloworld-v2-6cd449dff4-lqfg5

RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota
RESOURCE_EXHAUSTED:Quota is exhausted for: appquota

Version (include the output of istioctl version --remote and kubectl version)
$istioctl version --remote
client version: 1.2.4
citadel version: 1.2.4
egressgateway version: 94746ccd404a8e056483dd02e4e478097b950da6-dirty
galley version: 1.2.4
ingressgateway version: 94746ccd404a8e056483dd02e4e478097b950da6-dirty
pilot version: 1.2.4
policy version: 1.2.4
sidecar-injector version: 1.2.4
telemetry version: 1.2.4

$kubectl version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:53:57Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.3", GitCommit:"5e53fd6bc17c0dec8434817e69b04a25d8ae0ff0", GitTreeState:"clean", BuildDate:"2019-06-06T01:36:19Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}

How was Istio installed?
kubectl apply -f install/kubernetes/istio-demo.yaml

Environment where bug was observed (cloud vendor, OS, etc)
Docker for Mac

BTW: The configuration used above has the default 1 policy mixer pod and 2 helloworld pods.

I'm also having issues with redis quota. I'm running Istio 2.3.6.
The first time, I can make the 2 requests, but then it takes about 10min. to make the other requests, but my window is just 10s. I'm only charging 1 on the quota spec. I don't know why this is happening. The documentation also does not help. I want to limit X reqs / day and I have no idea  the values that I need to put in the handler.
apiVersion: config.istio.io/v1alpha2
kind: handler
metadata:
  name: redishandler
  namespace: istio-system
spec:
  compiledAdapter: redisquota
  params:
    redisServerUrl: redis-cluster.redis.svc.cluster.local:6379
    connectionPoolSize: 10
    quotas:
    - name: requestcountquota.instance.istio-system
      maxAmount: 1
      validDuration: 10s
      bucketDuration: 9s
      rateLimitAlgorithm: ROLLING_WINDOW
      overrides:
      - dimensions:
          destination: my-app
          requestPath: /myapp/ping
          clientId: abc
        maxAmount: 2

Hi @douglas-reid
I'm still having issues after updating to istio 1.3.5
Heres the handler spec
spec:
  compiledAdapter: redisquota
  params:
    connectionPoolSize: 10
    quotas:
    - bucketDuration: 1s
      maxAmount: 100
      name: requestcountquota.instance.istio-system
      rateLimitAlgorithm: ROLLING_WINDOW
      validDuration: 10m
    redisServerUrl: redis-cluster-svc.redis.svc.cluster.local:6379

this was almost working, but I got some inconsistencies, like having 50 requests with 200 response and then the 51st request would respond with 429, but then I got 5 more requests with 200 before getting 429 for all the requests that exceeded the limit.
Do you have a recommendation of the time window, maybe a minimal value that we can use? Or maybe a recommendation on the maxAmmount / validDuration ratio
Thanks


Value initialize packing descriptors

When descriptors are not value initialized the serialization in the HLO is different between different runs of the same computations because of variability in padding bits. This has implications for compilation caching.

\te-ci jax


Plans to support Vue.js 2.0 ?

Hi,
Have you looked a bit at Vue 2 and how to support it ? From the doc:

Vue.set and Vue.delete cannot work on Vue instances. It is now mandatory to properly declare all top-level reactive properties in the data option.

This directive is creating new data, so I guess it won't work anymore. Also the directive API completly changed, so it would need a complete rewrite.
Maybe we need to change it to a component, just like vue-router did with "v-link" ? I could give it a shot if you think it would be possible.
Any toughts ?

Well it looks like it may be possible to keep it a directive after all. I got a few tests working in a fork at https://github.com/pelletiermaxime/vue-paginate.

@TahaSh is rewriting this plugin to support Vue 2 #19 issuecomment-255443612

As @DannyFeliz mentioned, I'm now rewriting it for Vue 2.0. And it's going to be released very soon.


Add missing with: to timeout example in README.md

Great tool by the way, I love it!

There is 'timeout-minutes' on the step level: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepstimeout-minutes so there is no with required in my opinion, tested it too and it works currently like that.

Oh, cool. Good to know. :)


Could you please make the following procedures global (remove local): Purchase Header - ReceivedPurchLinesExist(), ReturnShipmentExist()

Hi there,
Could you please make the following procedures global (remove local): Purchase Header - ReceivedPurchLinesExist(), ReturnShipmentExist()
This is useful and should not be re-implemented by every partner...
Thanks,
Carsten

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


exports.config property not persisted from exports.stop

Howdy,
I'm seeing an issue on 4.0.0-beta.1 where any export.config property I try to set in the exports.stop method is not persisted to the config.json as it was in the past.
Feature or bug?
Phillip.

Combination. The behaviour is as designed (nothing is explicitly broken) but the use case is no longer supported (when it should be). Config is now a module in its own right, so unfortunately is being unloaded before your one is. If I ever get time (or anyone else ever does) I was going to introduce a new module type (system) which is always loaded before and unloaded after any other such that this could be avoided.

As a workaround, you could experiment with the priority and name fields of kassy.json to force it to be ordered before the config module.

@mrkno Hmmm... this isn't what I'm seeing. If I move the exports.config.offset = offset; line out of the stop method it still doesn't get persisted to the configuration file when Concierge shuts down.

@mrkno Scratch that. It does appear to be working now when I persist to config outside of the stop method.

@mrkno I've worked around this is a non-optimal way for the Telegram module, as shown here.

It would be better to just fix the problem permanently, if only I had time...

It would be better to just fix the problem permanently, if only I had time...

How can I / we help? (Not that I have an abundance of it either, obviously!)

A new concierge module type needs to be added ('system') and the module loader needs to read all hubot/kassy.json files AOT. Once both of those are done it will be relatively simple to fix.

Note you will now need to install the config module from KPM


TemplateLookup is not working correctly in namespaces/includes tags.

Hi,
I had a problem with the TemplateLookup/Template mechanism not working properly when templates are located in other folder. See example below:
Project file structure:
main.py
templates_folder/some_include.txt
templates_folder/main.txt
main.py:
#!/usr/bin/python3
from mako.template import Template
from mako.lookup import TemplateLookup
import os
path_to_templates = os.path.dirname(os.path.realpath(file)) + os.sep + 'templates_folder' + os.sep)  # template folder always near the script itself
mylookup = TemplateLookup(directories=[path_to_templates])
main_template = Template(filename=path_to_templates + os.sep + 'main.txt', lookup=mylookup)
print(main_template.render())
templates_folder/main.txt :
<%namespace file="some_include.txt" import="some_func"/>
hello world
==================================================================
Running main.py is causing the following big error stack:
Traceback (most recent call last):
File "_home_diffore_Documents_TEST_templates_folder__main_txt", line 17, in _mako_get_namespace
KeyError: ('_home_diffore_Documents_TEST_templates_folder__main_txt', '__anon_0x7f0884416630')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/diffore/.local/lib/python3.6/site-packages/mako/lookup.py", line 247, in get_template
return self._check(uri, self._collection[uri])
KeyError: '/home/diffore/Documents/TEST/templates_folder/some_include.txt'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/diffore/.local/lib/python3.6/site-packages/mako/runtime.py", line 802, in _lookup_template
return lookup.get_template(uri)
File "/home/diffore/.local/lib/python3.6/site-packages/mako/lookup.py", line 261, in get_template
"Cant locate template for uri %r" % uri)
mako.exceptions.TopLevelLookupException: Cant locate template for uri '/home/diffore/Documents/TEST/templates_folder/some_include.txt'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "main.py", line 9, in
print(main_template.render())
File "/home/diffore/.local/lib/python3.6/site-packages/mako/template.py", line 462, in render
return runtime.render(self, self.callable, args, data)
File "/home/diffore/.local/lib/python3.6/site-packages/mako/runtime.py", line 838, in _render
**kwargs_for_callable(callable, data))
File "/home/diffore/.local/lib/python3.6/site-packages/mako/runtime.py", line 873, in _render_context
_exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
File "/home/diffore/.local/lib/python3.6/site-packages/mako/runtime.py", line 899, in exec_template
callable(context, *args, **kwargs)
File "_home_diffore_Documents_TEST_templates_folder__main_txt", line 30, in render_body
File "_home_diffore_Documents_TEST_templates_folder__main_txt", line 19, in _mako_get_namespace
File "_home_diffore_Documents_TEST_templates_folder__main_txt", line 22, in _mako_generate_namespaces
File "/home/diffore/.local/lib/python3.6/site-packages/mako/runtime.py", line 560, in init
calling_uri)
File "/home/diffore/.local/lib/python3.6/site-packages/mako/runtime.py", line 804, in _lookup_template
raise exceptions.TemplateLookupException(str(compat.exception_as()))
mako.exceptions.TemplateLookupException: Cant locate template for uri '/home/diffore/Documents/TEST/templates_folder/some_include.txt'
==================================================================
Path in error message: /home/diffore/Documents/TEST/templates_folder/some_include.txt  is correct and file is available for reading.  From what I managed to debug, the inner _collection dict is empty which is causing the error message.
I've overcome the issue by filling the _collection dict manually using put_template method, but I think it is supposed to be working automatically.
Can you please check?  Debugging this was very problematic :)

hi there -
I would advise against using Template() directly when you have a real file and the TemplateLookup already.   This script is kind of confusing, but in general if you want includes to work the template needs to have a uri:
main_template = Template(
    filename=path_to_templates + os.sep + "main.txt",
    uri="main.txt",
    lookup=mylookup
)

hope this helps

Thank you for the reply.
I think we have overthinked this a little and, as you said, it is easier to just use TemplateLookup only.


Add Discord to list of online communities.

This PR makes one sentence less ambiguous and adds Discord to the list of online communities we manage.

Good changes with a terrible diff (don't think there's anything to be done there or anything, git is just not meant for reviewing prose).


New Project Set Onboarding Process Documentation

As part of onboarding a new Project Set, we need to create a Standard Operating Procedure (SOP) that includes the following:

Inform Microsoft about the new Subscription IDs, to add the subscriptions to the Microsoft Unified (Premier Support) Plan

This is required so that Product Owners (POs), and Technical Leads (TLs), are empowered to open Support Cases as needed

[!NOTE]
We should also look into how we can automate some of this process. Currently, it requires someone emailing our Microsoft Technical Account Manager (TAM) with a list of Subscription IDs.
Even though Microsoft's process itself is not automated either, could we programmatically collect the new Subscription IDs and send an automated email on a weekly basis?

Acceptance Criteria

[ ] Scenario: New Project Set Onboarding Process Documentation
Given the SOP for onboarding a new Project Set is created
When the SOP includes information about informing Microsoft about Subscription IDs and adding subscriptions to the Microsoft Unified (Premier Support) Plan
Then the POs and TLs can open Support Cases as needed
[ ] Scenario: Automation of collecting Subscription IDs
Given a programmatic way to collect new Subscription IDs is implemented
When an automated email is sent on a weekly basis with the collected Subscription IDs
Then it helps in streamlining the process and reduces manual effort

There is a Subscriptions Get API, but it does not have any relevant information about associated Support Plan. Additionally, there is a Microsoft Azure CLI 'support' Extension, but again, it does not have any properties that would show the type of Support Plan available.

I think the Unified support makes this all a bit strange. We should put this on our list of things to talk with Barry about

@abibat-adesina @AErmie Please make sure the Azure tech docs are close as possible to the AWS tech docs i.e. have the same structure and same content just Azure specific. Also, please avoid copy-pasting content from the vendor website, just include the link.

As part of onboarding a new Project Set, our documentation states:

Once approved, your Project Set will be provisioned, followed up by an email sent to the Product Owner and Technical Lead(s) once the provisioning is complete.

This part of the process is (or should be) automated. This means we could modify this process to also email Microsoft with the new Subscription IDs to enable for Unified Support.


Switch from Roassal2 to Roassal3 for plot visualisations

Use Roassal3 (https://github.com/ObjectProfile/Roassal3) instead of Roassal2 for plotting results of simulation, because plot support is much more elaborate on Roassal3 than Roassal2 and this possible to do log and log-log plots also more easily.

Add Roassal3 baseline to ease the transition.

We are able to plot results of simulation with Roassal3. What is missing is log/log-log plots and visualisation of SANs graph.

Normally log plots are possible with Roassal3: https://github.com/ObjectProfile/Roassal3/issues/92

KEChart has been introduced for the plots with Roassal3. All users of the previous classes (KEDiagramBuilder and subclasses) should use KEChart now.

Done.


Add support for multiple link mappings for the same shape

If multiple mappings exist for the same shape, on click - open a menu to choose which link to go.
Just like here : https://grafana.com/blog/2019/08/27/new-in-grafana-6.3-easy-to-use-data-links/

Hi,
As this time, it's not possible, only the last link in rule link opens, link function is a draw.io function. If you want multi link, u need to open an enhancement at draw.io.
But you can add icons or mini shapes on your shape like this :

@algenty  - you can have multiple links on draw.io
they all open at the same time on a click though:
data:action/json,{
"actions": [
{
"open": "http://google.com"
},
{
"open": "http://yahoo.com"
}
]
}
Is this something that can still be achieved ?

@algenty  - you can have multiple links on draw.io
they all open at the same time on a click though:
data:action/json,{
"actions": [
{
"open": "http://google.com"
},
{
"open": "http://yahoo.com"
}
]
}
Is this something that can still be achieved ?


Is there a way to set default values?

Maybe I am missing something,  but is there a way to set default values that are then overridden by the command line? Trying to set the value of any of my options informs me it a get-only s property

@dhmspector Typically you'd just catch the .value nil case and set the default; something like this:
let cli = CommandLineKit.CommandLine()
let opt = StringOption(shortFlag: "o", longFlag: "option", helpMessage: "an option")
cli.addOption(opt)

do {
  try cli.parse()
} catch {
  cli.printUsage(error)
  exit(EX_USAGE)
}

let o = opt.value ?? "default"
print("option is \(o)")

Does that work for you?

Yes, I see now.  Different than I expected bit that'll work

This repository is being archived. See https://github.com/jatoben/CommandLine/issues/111.


[Meta] Issue labelling bot is overeager

Describe the bug
Many unrelated labels are added to issues automatically. They are also added again after editing the issue description. This makes it hard to see actually relevant labels.
Examples for problems:

Every issue is labelled text since it contains the phrase ‘Additional Context’

Maybe also lecture due to a partial match for text unit?

E.g. #9541 was labelled iris since it contains ‘Jetbrains’

This issue will probably also receive the label iris due to the ‘ai’ in contains.

Also #9541 was labelled lti due to containing the word ‘multiple’
There are also keywords that are too generic in the labeller config:

online can not only refer to lectures, but could also be relevant for the online editor
user appears frequently without being related to user management (core label)
maybe project for label programming
text for label text
drag for quiz since this can also refer to the draggable assessment instructions for manual assessment

To Reproduce
See issue list.
Expected behavior
Probably it would be best to match on whole words instead of partial words. Additionally, the config could be refined to remove the ambiguous terms.
It’s easier to manually add additional labels once than having to remove them after each time editing the issue description.

We've discussed this in our maintainer meeting. We came to the conclusion that every maintainer will adjust the settings for the respective features/modules.


printingLinkedList.cpp

What does the program do ? Algorithm for traversing and printing elements in a linked list.

In what programming language it is written? C++

Thank you for participating  in hacktoberfest ❣ if you liked working on this repo you can share it with friends and star this project for helping others


node seed fails when bootstrapping a new project

Describe your problem and - if possible - how to reproduce it
when starting with a freshly cloned repo and following the steps in the Contributing guide, the step to seed data into MongoDB fails.
the command npm run only-once throws an error.
node seed also has the same error
link: https://github.com/freeCodeCamp/freeCodeCamp/blob/staging/CONTRIBUTING.md#set-up-freecodecamp

Operating System: MacOS 10.13.4
Node: v8.11.2/v8.9.4 (tried both versions, installed via nvm, still same output)
MongoDB: v3.6.4
Gulp: v3.9.1
npm: v5.8.0

CLI output:
$ node seed

Warning: Accessing createClass via the main React package is deprecated, and will be removed in React v16.0. Use a plain JavaScript class instead. If you're not yet ready to migrate, create-react-class v15.* is available on npm as a temporary, drop-in replacement. For more info see https://fb.me/react-create-class
Warning: Accessing PropTypes via the main React package is deprecated, and will be removed in  React v16.0. Use the latest available v15.* prop-types package from npm instead. For info on usage, compatibility, migration and more, see https://fb.me/prop-types-docs
  fcc:server db connected +0ms
/Users/rudresh/developement/oss/freeCodeCamp/node_modules/loopback-connector-mongodb/node_modules/mongodb/lib/utils.js:123
    process.nextTick(function() { throw err; });
                                  ^

Error: Error: entities not found, db may not be properly seeded
    at AnonymousObserver._onError (/Users/rudresh/developement/oss/freeCodeCamp/server/boot/home.js:18:21)
    at AnonymousObserver.Rx.AnonymousObserver.AnonymousObserver.error (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1836:12)
    at AnonymousObserver.Rx.internals.AbstractObserver.AbstractObserver.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1772:14)
    at AnonymousObserver.o.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1999:22)
    at AnonymousObserver.tryCatcher (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:63:31)
    at AutoDetachObserverPrototype.error (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:5891:52)
    at AutoDetachObserver.Rx.internals.AbstractObserver.AbstractObserver.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1772:14)
    at InnerObserver.error (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:4530:14)
    at InnerObserver.Rx.internals.AbstractObserver.AbstractObserver.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1772:14)
    at InnerObserver.o.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1999:22)
    at InnerObserver.tryCatcher (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:63:31)
    at AutoDetachObserverPrototype.error (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:5891:52)
    at AutoDetachObserver.Rx.internals.AbstractObserver.AbstractObserver.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1772:14)
    at AutoDetachObserver.o.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1999:22)
    at AutoDetachObserver.o.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1999:22)
    at /Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1904:72

as requested, tagging @raisedadead

Can you add additional information on how you have installed node?
Homebrew or nvm etc.

done, added the info into the original issue. (was installed via nvm)

I'm getting the same error when seeding the database,

Operating System: Windows 10 Pro , Version 1803
Node: 8.9.4
MongoDB: 3.4.9
NPM: 6.0.1

@Dereje1 npm 6 is not working for us. You would have to use npm 5.8.x

thanks @raisedadead , I was just able to run the learn repo locally no problem with 8.11.2 and 6.0.1, so now I am wondering if I should just stick with that since , if I understood correctly, that is the direction fCC will be going anyway and may be better off learning how to contribute on the learn repo.

@Dereje1 which version of MongoDB are you using?

same issue here.
Installed node with nvm install --lts, mongo 3.4.10, ubuntu xenial.
and yarn for learn yes.

Okay, I don't know if this should matter. But I am on Mongo DB 3.6.x which I believe is the LTS.
~/DEV/freeCodeCamp staging
❯ mongod --version
db version v3.6.4
git version: d0181a711f7e7f39e60b5aeb1dc7097bf6ae5856
OpenSSL version: OpenSSL 1.0.2o  27 Mar 2018
allocator: system
modules: none
build environment:
    distarch: x86_64
    target_arch: x86_64

node seed/index.js should keep you going for now. I am about to push a  couple of fixes to the seed so I will take a look.

@raisedadead I still have an error when seeding the DB.
$ cat /Users/rudresh/.npm/_logs/2018-05-25T00_46_32_498Z-debug.log
0 info it worked if it ends with ok
1 verbose cli [ '/Users/rudresh/.nvm/versions/node/v8.11.2/bin/node',
1 verbose cli   '/Users/rudresh/.nvm/versions/node/v8.11.2/bin/npm',
1 verbose cli   'run',
1 verbose cli   'only-once' ]
2 info using<EMAIL_ADDRESS>3 info using<EMAIL_ADDRESS>4 verbose run-script [ 'preonly-once', 'only-once', 'postonly-once' ]
5 info lifecycle<EMAIL_ADDRESS><EMAIL_ADDRESS>6 info lifecycle<EMAIL_ADDRESS><EMAIL_ADDRESS>7 verbose lifecycle<EMAIL_ADDRESS>unsafe-perm in lifecycle true
8 verbose lifecycle<EMAIL_ADDRESS>PATH: /Users/rudresh/.nvm/versions/node/v8.11.2/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/rudresh/developement/oss/freeCodeCamp/node_modules/.bin:/Users/rudresh/.nvm/versions/node/v8.11.2/bin:/Users/rudresh/.yarn/bin:/Users/rudresh/.config/yarn/global/node_modules/.bin:/Users/rudresh/.jenv/shims:/Users/rudresh/.jenv/bin:/usr/local/sbin:/usr/local/share/android-sdk/platform-tools:/usr/local/share/android-sdk/tools:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
9 verbose lifecycle<EMAIL_ADDRESS>CWD: /Users/rudresh/developement/oss/freeCodeCamp
10 silly lifecycle<EMAIL_ADDRESS>Args: [ '-c',
10 silly lifecycle   'npm run prelint-js && echo \'/****/\' && echo \'Seeding Database\' && echo \'/****/\' && node seed && echo \'/****/\' && echo \'Seeding Completed\' && echo \'/****/\'' ]
11 silly lifecycle<EMAIL_ADDRESS>Returned: code: 1  signal: null
12 info lifecycle<EMAIL_ADDRESS>Failed to exec only-once script
13 verbose stack Error<EMAIL_ADDRESS>only-once: `npm run prelint-js && echo '/****/' && echo 'Seeding Database' && echo '/****/' && node seed && echo '/****/' && echo 'Seeding Completed' && echo '/****/'`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (/Users/rudresh/.nvm/versions/node/v8.11.2/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:283:16)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at EventEmitter.emit (events.js:214:7)
13 verbose stack     at ChildProcess.<anonymous> (/Users/rudresh/.nvm/versions/node/v8.11.2/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at ChildProcess.emit (events.js:214:7)
13 verbose stack     at maybeClose (internal/child_process.js:925:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
14 verbose pkgid<EMAIL_ADDRESS>15 verbose cwd /Users/rudresh/developement/oss/freeCodeCamp
16 verbose Darwin 17.5.0
17 verbose argv "/Users/rudresh/.nvm/versions/node/v8.11.2/bin/node" "/Users/rudresh/.nvm/versions/node/v8.11.2/bin/npm" "run" "only-once"
18 verbose node v8.11.2
19 verbose npm  v5.8.0
20 error code ELIFECYCLE
21 error errno 1
22 error<EMAIL_ADDRESS>only-once: `npm run prelint-js && echo '/****/' && echo 'Seeding Database' && echo '/****/' && node seed && echo '/****/' && echo 'Seeding Completed' && echo '/****/'`
22 error Exit status 1
23 error Failed at the<EMAIL_ADDRESS>only-once script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

Yes @cyberjar09 you are right.

@cyberjar09 @nikrb @Dereje1 PR is up, you may want to run that manually while the PR gets merged.
After the npm run only-once fails simply run npm run seed

tried the PR, still not working. My steps:
git fetch upstream pull/17232/head:chore/fix-node-seed
git checkout chore/fix-node-seed
npm run only-once # error
node seed # error

/Users/rudresh/developement/oss/freeCodeCamp/node_modules/loopback-connector-mongodb/node_modules/mongodb/lib/utils.js:123
    process.nextTick(function() { throw err; });
                                  ^

Error: Error: entities not found, db may not be properly seeded
    at AnonymousObserver._onError (/Users/rudresh/developement/oss/freeCodeCamp/server/boot/home.js:18:21)
    at AnonymousObserver.Rx.AnonymousObserver.AnonymousObserver.error (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1836:12)
    at AnonymousObserver.Rx.internals.AbstractObserver.AbstractObserver.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1772:14)
    at AnonymousObserver.o.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1999:22)
    at AnonymousObserver.tryCatcher (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:63:31)
    at AutoDetachObserverPrototype.error (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:5891:52)
    at AutoDetachObserver.Rx.internals.AbstractObserver.AbstractObserver.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1772:14)
    at InnerObserver.error (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:4530:14)
    at InnerObserver.Rx.internals.AbstractObserver.AbstractObserver.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1772:14)
    at InnerObserver.o.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1999:22)
    at InnerObserver.tryCatcher (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:63:31)
    at AutoDetachObserverPrototype.error (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:5891:52)
    at AutoDetachObserver.Rx.internals.AbstractObserver.AbstractObserver.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1772:14)
    at AutoDetachObserver.o.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1999:22)
    at AutoDetachObserver.o.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1999:22)
    at /Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1904:72

@raisedadead

after cleaning node_modules and reinstalling
still getting this error
$ npm run only-once

><EMAIL_ADDRESS>only-once /Users/rudresh/developement/oss/freeCodeCamp
> npm run prelint-js && npm run seed && echo 'Seeding Completed'

><EMAIL_ADDRESS>prelint-js /Users/rudresh/developement/oss/freeCodeCamp
> npm run create-rev && gulp generate-migration-map

><EMAIL_ADDRESS>create-rev /Users/rudresh/developement/oss/freeCodeCamp
> node -e "var fs = require('fs'); fs.access('./server/rev-manifest.json', function(err) { if (err) { console.log('\n\ncreating manifest\n\n'); return fs.writeFileSync('server/rev-manifest.json', '{}'); } console.log('\n\nrev-manifest present\n\n'); });"

creating manifest

[10:14:53] Using gulpfile ~/developement/oss/freeCodeCamp/gulpfile.js
[10:14:53] Starting 'generate-migration-map'...
[10:14:54] Finished 'generate-migration-map' after 760 ms

><EMAIL_ADDRESS>seed /Users/rudresh/developement/oss/freeCodeCamp
> node seed/index.js

Warning: Accessing createClass via the main React package is deprecated, and will be removed in React v16.0. Use a plain JavaScript class instead. If you're not yet ready to migrate, create-react-class v15.* is available on npm as a temporary, drop-in replacement. For more info see https://fb.me/react-create-class
Warning: Accessing PropTypes via the main React package is deprecated, and will be removed in  React v16.0. Use the latest available v15.* prop-types package from npm instead. For info on usage, compatibility, migration and more, see https://fb.me/prop-types-docs
  fcc:server db connected +0ms
  fcc:seed parsed Applied Accessibility successfully +0ms
  fcc:seed parsed Applied Visual Design successfully +6ms
  fcc:seed parsed Basic CSS successfully +2ms
  fcc:seed parsed Basic HTML and HTML5 successfully +1ms
  fcc:seed parsed CSS Flexbox successfully +2ms
  fcc:seed parsed CSS Grid successfully +1ms
  fcc:seed parsed Responsive Web Design Projects successfully +2ms
  fcc:seed parsed Responsive Web Design Principles successfully +1ms
  fcc:seed parsed Basic Algorithm Scripting successfully +1ms
  fcc:seed parsed Basic Data Structures successfully +2ms
  fcc:seed parsed Basic JavaScript successfully +1ms
  fcc:seed parsed Debugging successfully +2ms
  fcc:seed parsed ES6 successfully +4ms
  fcc:seed parsed Functional Programming successfully +2ms
  fcc:seed parsed Intermediate Algorithm Scripting successfully +1ms
  fcc:seed parsed JavaScript Algorithms and Data Structures Projects successfully +2ms
  fcc:seed parsed Object Oriented Programming successfully +2ms
  fcc:seed parsed Regular Expressions successfully +2ms
  fcc:seed parsed Bootstrap successfully +1ms
  fcc:seed parsed Front End Libraries Projects successfully +1ms
  fcc:seed parsed jQuery successfully +2ms
  fcc:seed parsed React and Redux successfully +1ms
  fcc:seed parsed React successfully +2ms
  fcc:seed parsed Redux successfully +1ms
  fcc:seed parsed Sass successfully +2ms
  fcc:seed parsed Data Visualization Projects successfully +1ms
  fcc:seed parsed Data Visualization with D3 successfully +2ms
  fcc:seed parsed JSON APIs and AJAX successfully +1ms
  fcc:seed parsed APIs and Microservices Projects successfully +1ms
  fcc:seed parsed Basic Node and Express successfully +1ms
  fcc:seed parsed Managing Packages with npm successfully +1ms
  fcc:seed parsed MongoDB and Mongoose successfully +2ms
  fcc:seed parsed Advanced Node and Express successfully +1ms
  fcc:seed parsed Information Security with HelmetJS successfully +1ms
  fcc:seed parsed Information Security and Quality Assurance Projects successfully +1ms
  fcc:seed parsed Quality Assurance and Testing with Chai successfully +1ms
  fcc:seed parsed Algorithms successfully +2ms
  fcc:seed parsed Data Structures successfully +1ms
  fcc:seed parsed Project Euler successfully +1ms
  fcc:seed parsed Rosetta Code successfully +2ms
  fcc:seed parsed Take Home Projects successfully +1ms
  fcc:seed parsed API's and Microservices Certificate successfully +4ms
  fcc:seed parsed Data Visualization Certificate successfully +2ms
  fcc:seed parsed Front End Libraries Certificate successfully +1ms
  fcc:seed parsed Information, Securtiy and Quality Assurance Certificate successfully +1ms
  fcc:seed parsed JavaScript Algorithms and Data Structures Certificate successfully +1ms
  fcc:seed parsed Legacy Back End Certificate successfully +2ms
  fcc:seed parsed Legacy Data Visualization Certificate successfully +1ms
  fcc:seed parsed Legacy Front End Certificate successfully +2ms
  fcc:seed parsed Responsive Web Design Certificate successfully +1ms
/Users/rudresh/developement/oss/freeCodeCamp/node_modules/loopback-connector-mongodb/node_modules/mongodb/lib/utils.js:123
    process.nextTick(function() { throw err; });
                                  ^

Error: Error: entities not found, db may not be properly seeded
    at AnonymousObserver._onError (/Users/rudresh/developement/oss/freeCodeCamp/server/boot/home.js:18:21)
    at AnonymousObserver.Rx.AnonymousObserver.AnonymousObserver.error (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1836:12)
    at AnonymousObserver.Rx.internals.AbstractObserver.AbstractObserver.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1772:14)
    at AnonymousObserver.o.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1999:22)
    at AnonymousObserver.tryCatcher (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:63:31)
    at AutoDetachObserverPrototype.error (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:5891:52)
    at AutoDetachObserver.Rx.internals.AbstractObserver.AbstractObserver.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1772:14)
    at InnerObserver.error (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:4530:14)
    at InnerObserver.Rx.internals.AbstractObserver.AbstractObserver.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1772:14)
    at InnerObserver.o.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1999:22)
    at InnerObserver.tryCatcher (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:63:31)
    at AutoDetachObserverPrototype.error (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:5891:52)
    at AutoDetachObserver.Rx.internals.AbstractObserver.AbstractObserver.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1772:14)
    at AutoDetachObserver.o.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1999:22)
    at AutoDetachObserver.o.onError (/Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1999:22)
    at /Users/rudresh/developement/oss/freeCodeCamp/node_modules/rx/dist/rx.js:1904:72
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>seed: `node seed/index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>seed script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!      /Users/rudresh/.npm/_logs/2018-05-25T03_15_01_384Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>only-once: `npm run prelint-js && npm run seed && echo 'Seeding Completed'`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>only-once script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!      /Users/rudresh/.npm/_logs/2018-05-25T03_15_01_425Z-debug.log

my debug log file:
$ cat /Users/rudresh/.npm/_logs/2018-05-25T03_15_01_425Z-debug.log                                                                                1 ↵
0 info it worked if it ends with ok
1 verbose cli [ '/Users/rudresh/.nvm/versions/node/v8.11.2/bin/node',
1 verbose cli   '/Users/rudresh/.nvm/versions/node/v8.11.2/bin/npm',
1 verbose cli   'run',
1 verbose cli   'only-once' ]
2 info using<EMAIL_ADDRESS>3 info using<EMAIL_ADDRESS>4 verbose run-script [ 'preonly-once', 'only-once', 'postonly-once' ]
5 info lifecycle<EMAIL_ADDRESS><EMAIL_ADDRESS>6 info lifecycle<EMAIL_ADDRESS><EMAIL_ADDRESS>7 verbose lifecycle<EMAIL_ADDRESS>unsafe-perm in lifecycle true
8 verbose lifecycle<EMAIL_ADDRESS>PATH: /Users/rudresh/.nvm/versions/node/v8.11.2/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/rudresh/developement/oss/freeCodeCamp/node_modules/.bin:/Users/rudresh/.nvm/versions/node/v8.11.2/bin:/Users/rudresh/.yarn/bin:/Users/rudresh/.config/yarn/global/node_modules/.bin:/Users/rudresh/.jenv/shims:/Users/rudresh/.jenv/bin:/usr/local/sbin:/usr/local/share/android-sdk/platform-tools:/usr/local/share/android-sdk/tools:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
9 verbose lifecycle<EMAIL_ADDRESS>CWD: /Users/rudresh/developement/oss/freeCodeCamp
10 silly lifecycle<EMAIL_ADDRESS>Args: [ '-c',
10 silly lifecycle   'npm run prelint-js && npm run seed && echo \'Seeding Completed\'' ]
11 silly lifecycle<EMAIL_ADDRESS>Returned: code: 1  signal: null
12 info lifecycle<EMAIL_ADDRESS>Failed to exec only-once script
13 verbose stack Error<EMAIL_ADDRESS>only-once: `npm run prelint-js && npm run seed && echo 'Seeding Completed'`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (/Users/rudresh/.nvm/versions/node/v8.11.2/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:283:16)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at EventEmitter.emit (events.js:214:7)
13 verbose stack     at ChildProcess.<anonymous> (/Users/rudresh/.nvm/versions/node/v8.11.2/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at ChildProcess.emit (events.js:214:7)
13 verbose stack     at maybeClose (internal/child_process.js:925:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
14 verbose pkgid<EMAIL_ADDRESS>15 verbose cwd /Users/rudresh/developement/oss/freeCodeCamp
16 verbose Darwin 17.5.0
17 verbose argv "/Users/rudresh/.nvm/versions/node/v8.11.2/bin/node" "/Users/rudresh/.nvm/versions/node/v8.11.2/bin/npm" "run" "only-once"
18 verbose node v8.11.2
19 verbose npm  v5.8.0
20 error code ELIFECYCLE
21 error errno 1
22 error<EMAIL_ADDRESS>only-once: `npm run prelint-js && npm run seed && echo 'Seeding Completed'`
22 error Exit status 1
23 error Failed at the<EMAIL_ADDRESS>only-once script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

commit 238657d356
I had local changes:
diff --git a/package.json b/package.json
index 77f783b4a..00b08af2f 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,7 @@
     "lint-utils": "jsonlint-cli server/utils/*.json",
     "lint-js": "eslint --ext=.js,.jsx gulpfile.js server/ common/ config/ client/",
     "lint-json": "npm run lint-server && npm run lint-challenges && npm run lint-resources && npm run lint-utils",
-    "only-once": "npm run prelint-js && echo '/****/' && echo 'Seeding Database' && echo '/****/' && node seed && echo '/****/' && echo 'Seeding Completed' && echo '/****/'",
+    "only-once": "npm run prelint-js && npm run seed && echo 'Seeding Completed'",
     "prelint-js": "npm run create-rev && gulp generate-migration-map",
     "pretest": "npm run create-rev && npm run lint",
     "prestart-production": "gulp build -p",

@Bouncey looks like something may have been missed with the migration.


Support carryin/carryout on DSPs; chain multiple DSPs

@vcanumalla is going to be working on this

Addressed(?) in PR #363

If it should be closed by that PR, then we can put "closed by #363" in the description of this issue.


Decide what to do about "Service Infrastructure" client library docs

There are a number of links to client libraries in "Service Infrastructure":

[ ] https://cloud.google.com/service-infrastructure/docs/service-management/libraries
[ ] https://cloud.google.com/service-infrastructure/docs/service-control/libraries
[ ] https://cloud.google.com/service-infrastructure/docs/service-networking/libraries
[ ] https://cloud.google.com/service-infrastructure/docs/service-consumer-management/libraries

They seem to use apiary libraries.  I wonder if that is intentional, just historical (and never updated), or if we want to update the C++ links.

resourcemanager / resourcesettings also link to apiary: https://cloud.google.com/resource-manager/docs/libraries

And b/287121340 for service usage

This is not actionable, or rather, not something we should be working on.


WL-4760 WL-4690: attachment icon is teensey weensey

Why this rather than making the .attach class a correct width?

Yes I see what you mean.  The problem though was introduced by adding a max-width so the logical thing to do is to remove it.  Making a change somewhere else seems like avoiding the issue to me.

That said, I'm not sure I'm completely happy with 4690 which has caused these Jiras: 4756, 4760, 4753.  Also, the Sakai community doesnt 'seem 100% happy: https://github.com/sakaiproject/sakai/pull/3623

Maybe a better solution for 4690 would be to restrict the places where the img class is applied like ottenhoff was suggesting?  And for /access we can add a class for images ..What do you think?

we cant retroactively change existing HTML pages. surely there's no issue at all with resizing on /access pages is there?

Good point


Integrate shutdown handler into modules

Could you please not on the commit, if the changes are purely due to the autogenerator or if there is anything additional on top of it

I'll split this into multiple commits, first one with the autogenerated code, followed by module specific changes


FIXED : Display a message when there is no activity matching the search in listview

Can you review this again ?

@llaske Can you review this again ?

Look like nothing has changed since my previous review.

@llaske I localized the texts as you told. Is there something else that I am missing and I have to do ?

@llaske I localized the texts as you told me to do. Is there something else that I am missing and I have to do ?

Yes, see comments on the review https://github.com/llaske/sugarizer/pull/1561/files/c87feda844d05640f652382b1d7bbc651addb2d7

@llaske  I am moving offtrack and unable to understand what to do so here is the summary of all the changes that I have brought.
Motive : Display a message when there is no activity matching the search in listview.
Further Changes  :-

[x] fix: the add of prefix ":". https://github.com/llaske/sugarizer/pull/1561#pullrequestreview-1937734840 (remove ':')
[x] Text must be localized. https://github.com/llaske/sugarizer/pull/1561#discussion_r1526401023 (add Sugar.l10n)

Total 6 Files, 60 lines Changed in 9 commits
Please comment below for further assistant...

@llaske  Ohk will resolve these...


FRONTEND - CSS - main.handlebards

Apply styles to main.handlebars to look like what we have in the wireframe.

created a test file for css styles for our handlebars.


Timeout & Max Input Variables Exceeds 1000 Error When Saving Product Details

I have added my first product, and set up approx 15 options (if there was a multi select option, there would be a lot less). I find that when saving the product details, I get a timeout after 30 seconds. This is on an 8 core blade server, 8GB of ram and a similarly juicy separate MySQL server. This is with PHP 7.0.15, current load average is 0.1. In addition I am seeing this in the error log:
PHP Warning:  Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. in Unknown on line 0.
So, I increased it to 5000, but:
[16-Mar-2017 13:25:42 Pacific/Auckland] PHP Warning:  Unknown: Input variables exceeded 5000. To increase the limit change max_input_vars in php.ini. in Unknown on line 0
[16-Mar-2017 13:26:13 Pacific/Auckland] PHP Fatal error:  Maximum execution time of 30 seconds exceeded in /var/packages/concrete<IP_ADDRESS>/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php
on line 790.
I am unsure exactly how many $_POST vars are being sent, but there's a very long list when I look at the request with Charles proxy.

Have you got the 'Options have different prices, SKUs or stock levels' checkbox ticked for this product?
When you've got, say 2 options and each has three options values, you'll end up with four different variations of the product that you can configure (2x2).
If you've got 5 different options, each with 5 different options, you'll end up with 3125... (5x5x5x5x5)..
So if you've got 15 different options, event if you've got only 2 options each, you'll have 2^15, so 32 thousand different combos... which is obviously a problem and the source of all the POST vars.  The variations for a product can work for a handful, but not very large amounts.
If you've accidentally ticked it with that many options, you may need to manually uncheck if via the database and reload the page.
It also could be showing the combinations regardless of the checkbox, which then is a bug.
I think this code needs something to prevent this kind of variation blowout from happening too.

"Options have different prices, SKUs or stock levels" is UNCHECKED
I have six text inputs, and 9 option lists. one option list has three values, the others all have two - what they really need to be is a checkbox. In this instance none of the options affect pricing they are really all informational fields.
I haven't looked at the code, but maybe there's a JS array somewhere that's getting inflated possibly as a result of sorting the options via drag/drop? I upped the timeout to 60 seconds, and it exceeded that, so that's not great.

I think what might be happening is that the list of variations is being added to page in case the checkbox is ticked.
If you view the product edit page and check the box, do you get an enormous number of combos?

Absolutely. A rather insanely long list that makes my browser think for a few seconds.
A checkbox option akin to the text entry was actually all I wanted -  X 9

That's certainly not good.
I think there's two things that need to happen here:

The variation list needs to only be created if the checkbox is in a saved state when the page opens up (which I think should be easy to change). Perhaps a warning or a limit.
The addition of a checkbox option type. I'm not actually sure why I didn't add this in earlier.

A more complex solution might be the addition of a flag against each option type to define if it makes a different to the product, so it's not considered as part of the variation combinations.
I can't promise anything, but I may have time to look at the first two items at the end of this week.

I did wonder if adding a switch to the option to determine if affects stock holding was the way to go, and I guess long term it is. Good to be on the same page.
A checkbox style option that acts like a text field would be fantastic. It's not urgent since I've managed to set the products up OK, even with the timeouts and warnings. I guess the product and options are updated before anything else times out. Don't go busting a gut.

A rather insanely long list that makes my browser think for a few seconds
About that, I noticed in the code that you have a for loop going throughout the options and for each you get the template, replace variables and append it to the options container.
It would be more efficient to append all options in bulk at the end of the for loop instead of after each iteration. Or at least in batches of 50 or something.

I've finished up adding in the the checkbox option type, plus the ability to exclude options from variations.
https://github.com/concrete5-community-store/community_store/pull/236
If anyone has the time to glance over this before I merge it in it would be appreciated

I'm getting an error
"An issue has occured (sic) adding the product to the cart. You may be missing required information."
I have one product
One checkbox attribute
One option list, (colour with three colours)
If I set "Variations Options have different prices, SKUs or stock levels" to ON, the error occurs when adding to cart.
If I turn it off, it adds correctly.

@JeRoNZ thanks for this, will review

I've pushed up some updates to the variation extras branch:
https://github.com/concrete5-community-store/community_store/pull/236
You'll need to trigger an update to the package.

This should be resolved with the merge of the variation changes. You can now selectively pick what options are part of the variations, avoiding a stupidly long list of combinations.


Missing ToMTree converter (Inline modifier)

Short stacktrace
org.scalameta.paradise.converters.ConvertException: unsupported tree Apply(TypeTree(), List())
(Apply) scala.meta.internal.inline.inline()
(Template) Template(List(), List(scala.meta.internal.inline.inline()), val _ = _, None)
(Apply) new scala.meta.internal.inline.inline()
(Annotation) Annotation(new scala.meta.internal.inline.inline())
(DefDef) @new scala.meta.internal.inline.inline() def apply(defn: Any): Any = ???
(Template) Template(List(), List(StaticAnnotation()), val _ = _, Some(List(@new scala.meta.internal.inline.inline() def apply(defn: Any): Any = ???)))
(ClassDef) class Before extends StaticAnnotation {
  <paramaccessor> private[this] val fun: _root_.scala.Function0[Unit] = _;
  def <init>(fun: _root_.scala.Function0[Unit]) = {
    super.<init>();
    ()
  };
  @new scala.meta.internal.inline.inline() def apply(defn: Any): Any = ???
}
    at org.scalameta.paradise.converters.ToMtree$toMtree$2$.fail(ToMtree.scala:411)

I'm pretty sure this is separate to https://github.com/scalameta/paradise/issues/35
Version: Meta 1.1.0, Paradise 3.0.0-M5
Macro being expanded:
https://github.com/DavidDudson/Elysium/blob/GenExperiments/gen/src/main/scala/nz/daved/elysium/gen/CompileTime.scala
Branch to checkout if you want to experiment (This branch compiling means that the bug is fixed):
https://github.com/DavidDudson/Elysium/tree/GenExperiments
See a full stacktrace in my CI build:
https://travis-ci.org/DavidDudson/Elysium/builds/160046877

Note this was probably not expected when first designed. But now meta has a Mod.Inline modifier. So I presume this needs to check the dialect is Paradise211 too

That's related to #35 in sense that converter is not finished at the moment. It lacks ~1/3 of scala-reflect APIs and, most importantly, tests.
I'll fix this one soon.

This one is not as easy as I thought before. Pushed commit with partial fix, however, cannot understand how to fix that
error: ';' expected but 'implicit' found.
  inline implicit def foo(a: Int, b: Int): Any = meta {

error properly. Error message looks like as if paradise plugin was not included, so I suppose that parsing stage should be modified.
Any ideas and suggestions are welcome.

Usually that error comes from inline being seen as an identifier, and not handled in the parser. That was what https://github.com/scalameta/scalameta/pull/475 fixed. Does paradise definitely have these changes? And use the parser in an identical fashion?

Yes, paradise supports inline in parsing -- it recognizes keyword first time (so modifiers are updated successfully).
I suppose syntax analyzer should be hijacked in few more places, but could not find where exactly.

@DavidDudson I'm not sure I quite follow, is this issue about converting code with the inline modifier? Have you tried running such a test in Syntactic?

@olafurpg Yes the issue is about the inline modifier, although the specific case I care about is when inline is used in front of a def so that i can generate macro annotations via macro annotations (macro-ception?)
inline def apply(a: Any): Any = ???
will get expanded into (g.Tree):
@new scala.meta.internal.inline.inline() def apply(defn: Any): Any = ???
Which during the g => l => m tree conversion needs to be converted to a modifier m.Mod.Inline
Which I believe means adding a l.Inline()
which means removing the part of the g.Tree that represents @new scala.meta.internal.inline.inline() and adding the inline modifier to the appropriate term which is to the right of it. (Whatever that may be, provided it has modifiers)
Perhaps I am looking at it the wrong way.
syntactic tests spout the boring regular nonsense that IDE's tell us all the time
Expecting ; found identifier or whatever it is before the partial fix i have. I need to test with the fix when i get home from work.
The problem i mentioned in gitter is a crash that happens because of unreachable code with a partial fix.
This crash is caused by l.TermNew having the case case g.Select(g.New(tpt), nme.CONSTRUCTOR) => which perfectly matches the inline modifier's g.Tree.
Actually looking at it now, I think the TermNew unapply should just return None at this stage.
I'll do some more experiments when i get home from work in a few hours

@xeno-by At what point in the conversion from g.Tree => l.Tree should the inline code be swapped?
The problem I'm having at the moment is that inline isn't "attached" the the def/var/val etc. that it theoretically is connected to. They are processed as 2 separate trees.
My current thinking is at block level (or anything with stats):

Search for the @new scala.meta.internal.inline.inline(),
Check that the next stat is a supported thing (var/val/def, I think you mentioned classes possibly in you paper, i cannot remember what the current supported set is)
Remove the inline node from the tree
Prefix l.Inline() as a mod on the corresponding stat

I'll see if this works, but can you please confirm that this is the right approach?

@olafurpg it looks like inline isn't supported at all as a keyword in the syntactic tests. Or do you mean i should have the syntactic test as @new scala.meta.internal.inline.inline() def apply(a: Any): any = ???

@xeno-by Almost complete patch with one issue is ready.
Because toString is called on the final tree https://github.com/scalameta/paradise/blob/master/plugin/src/main/scala/org/scalameta/paradise/typechecker/Expanders.scala#L172
A dialect is required.
This defaults to Scala211:
https://github.com/scalameta/scalameta/blob/master/scalameta/trees/src/main/scala/scala/meta/internal/prettyprinters/TreeToString.scala#L14
Which will complain because inline isnt supported.
My temporary suggestion:

Allow paradise to modify the origin of Tree's
Add an origin Origin.Macro which defaults to Paradise211 instead of Scala211.
the final tree would just call tree.withOrigin(Origin.Macro).toString

However, this will not scale very well cross versions and dialects will probably need to be revisited.

@olafurpg syntactic tests also fail because the test parser uses dialect.Scala211 not dialect.Paradise211 I'm unsure whether we want to inject dialects into the test parser?

@DavidDudson I tried to change the parser in Syntactic to use the hijacked syntax analyser (which accepts inline as a keyword) but with no luck.
Have you tried to change .toString to .syntax(Paradise211)? .toString should be avoided anyways.

@olafurpg oh well, we can make that a future issue, non-syntax tests will have to do for now.
Syntax does not support an implicit or explicit Dialect. I guess we could potentially add one

My bad, I meant .tokens(Paradise211).mkString. I think that might work.

Alternatively, seems you can call .syntax on a (Dialect, Tree) pair
(Paradise211, q"inline def foo = 2").syntax

One step closer thanks @olafurpg.
The problem now is that the output of (Paradise211, q"inline def foo = 2").syntax gets piped into scalac's UnitParser which is not Hijacked. So it has the same problem as the Syntactic tests. We need to pipe the result through the hijacked syntax analyzer.

The rabbit hole gets deeper : )
Have you tried to replace the call to newUnitParser with this method here? https://github.com/scalameta/paradise/blob/b7e467b3bb5de06e042ef6bdfa2957ea958dfdd0/plugin/src/main/scala/org/scalameta/paradise/parser/SyntaxAnalyzer.scala#L29
Here's how an instance of the hijacked syntax analyzer can be constructed from a global: https://github.com/scalameta/paradise/blob/b7e467b3bb5de06e042ef6bdfa2957ea958dfdd0/plugin/src/main/scala/org/scalameta/paradise/parser/HijackSyntaxAnalyzer.scala#L19

BINGO! Thanks @olafurpg i believe its working!

@olafurpg  We may still have a thicker plot :/
Although this toMtree stuff is working (Which technically is this bug). my end goal is not. I'm soo close though.
https://github.com/DavidDudson/Elysium/commit/b375800723d4a705862fbf2a56c343f692c94527
Fails with:
[error] <macro>:2: package scala.meta is not a value
[error]   inline def apply(tree: Any): Any = meta {
[error]                                      ^
[error] <macro>:2: implementation restriction: inline methods can only be used to define new-style macro annotations
[error]   inline def apply(tree: Any): Any = meta {
[error]              ^
[error] two errors found
[error] (misc/compile:compileIncremental) Compilation failed
[error] Total time: 8 s, completed 4/01/2017 11:40:10 PM

Definitely read the large comment at the top of the file if you are curious as to what the "end goal" is. Note: If anyone actually wants to run this, you need to modify build.sbt to reference a locally published paradise version.
At the moment I'm just trying to hack together a quick and dirty proof that the identity macro actually works.
Anyway. I'm off to sleep, but might ponder this further tomorrow.

Ah! I figured it out.
Expanding
@macroAnnotation
object identity {
  def apply(tree: Tree): Tree = tree
}

into
object identity {
   class identity extends scala.annotation.StaticAnnotation {
     inline def apply(tree: Any): Any = meta {
       tree
     }
   }
}

Works.
Expanding....
@macroAnnotation
class identity {
  def apply(tree: Tree): Tree = tree
}

into
class identity extends scala.annotation.StaticAnnotation {
     inline def apply(tree: Any): Any = meta {
       tree
     }
}

fails with the above error.
and of course expanding
class identity {
  @macroAnnotation
  def apply(tree: Tree): Tree = tree
}

Into the same class definition also fails with the above error.
@xeno-by @olafurpg Do you have any ideas why this is? And hopefully a solution. I presume its something to do with macro annotations requiring their parent either being an object or top level (Which of course we don't know when expanding)
The downside of this issue is that I will always have to define my annotations in an object, but they become much more testable as they are plain functions. However I think the patch can be merged without a fix for it. Maybe we could improve the error message in these circumstances? Or abort if trying to expand inline via macro when not in an object?

Closed in https://github.com/scalameta/paradise/pull/149


AuthorizeFilter should always set a default identity

Fixes https://github.com/aspnet/Mvc/issues/2534
cc @blowdart @danroth27

1ea1cc43387850606d0799b930de66dd8ae838a2


Update example code snippet in README.md

Use static functions instead of object classes. References #19

Maybe we should also deprecate the class in favour of namespace?


Add changelog-tool package

Closes #29

Yeah, I did that because otherwise it would create a file called not a tty for some reason

This may fail due to cloudsmith being down: https://api.cloudsmith.io/

@Theodus I'm going to merge, if it isn't Cloudsmith we can fix later. a better "Cloudsmith is down message" would be good. maybe make checking the API a part of tests?