Move reload_dataloaders_every_n_epochs to the DataHooks class

🚀 Feature

Motivation
We are auditing the Lightning components and APIs to assess opportunities for improvements:

https://docs.google.com/document/d/1xHU7-iQSpp9KJTjI3As2EM0mfNHHr37WZYpDpwLkivA/edit#
https://github.com/PyTorchLightning/pytorch-lightning/issues/7740

reload_dataloaders_every_n_epochs  is an argument to the Trainer constructor. However, this could be a property of the DataHooks class, instead of the trainer, as whether to initiate reloading the dataloading every n epochs should be determined by the actor providing the dataloaders (e.g. the LightningModule or LightningDataModule).
This is very similar to #8733 and how automatic/manual optimization is a property of the LightningModule. That property also started out as a trainer argument before being migrated to the lightning module. Since this pattern keeps occurring, we should separately understand why it's so appealing to add things to the trainer constructor instead of a more specific component.
Moreover, this one setting controls dataloader behavior for both train & val dataloaders. Do we need more granular control? Do we need two properties, one for training and one for validation? This could make sense as we could have very different epoch counts with features like val_check_interval, where the training epoch count != val epoch count. The property for validation would only apply during trainer.fit as trainer.validate only makes a single pass through the data.
However, the documentation for the test_dataloader: https://github.com/PyTorchLightning/pytorch-lightning/blob/963c26764682fa4cf64c93c5a7572ae0040e9c32/pytorch_lightning/core/hooks.py#L535-L537
Is this a copy/paste issue?

Pitch

Add a property to the DataHooks class for this in v1.5
Deprecate the Trainer argument for this in v1.5
Remove the Trainer argument in v1.7

Benefits:

Simplify the Trainer constructor (one fewer argument)
Keep the data loader management in one place instead of two (at the DataHooks level)

Alternatives
Keep as is?

Additional context

If you enjoy Lightning, check out our other projects! ⚡

Metrics: Machine learning metrics for distributed, scalable PyTorch applications.

Flash: The fastest way to get a Lightning baseline! A collection of tasks for fast prototyping, baselining, finetuning and solving problems with deep learning

Bolts: Pretrained SOTA Deep Learning models, callbacks and more for research and production with PyTorch Lightning and PyTorch

Lightning Transformers: Flexible interface for high performance research using SOTA Transformers leveraging Pytorch Lightning, Transformers, and Hydra.

Hi, @ananthsub Can I work on this issue? Thank you~

Hi, @ananthsub  For this issue, I will do the migration of reload_dataloaders_every_n_epochs first before adding two different properties (train_*, val_*)to give more gradual control.
Because there exist some confusion about how reload_dataloaders_every_n_epochs works (see post), and sometimes, people want to only reload train_dataloader (post). I think it'll be great to add these two properties to avoid confusion and give more control.

One thing I'm not sure is  if we still want to keep _should_reload_dl_epoch() in pytorch_lightning/trainer/properites.py. I tend to move it to fit_loop and evaluation_loop separately. Let me know what you think.

One thing I'm not sure is if we still want to keep _should_reload_dl_epoch() in pytorch_lightning/trainer/properites.py. I tend to move it to fit_loop and evaluation_loop separately. Let me know what you think.

I think it makes sense to be moved into the loops directly. the property is already private it's already private, and this way we can continue whittling down what's exposed on trainer properties. we could have a mini helper function to share across fit and evaluation loops if necessary
@awaelchli @tchaton @carmocca what do you think? it's somewhat related to https://github.com/PyTorchLightning/pytorch-lightning/issues/8946

Hey @ananthsub,
I believe this could potentially be owned by the DataModule with a schedule instead.
class DataModule

    def should_reload_train_dataloader(self, epoch: int) -> bool:
        return epoch % 2


[bug] token.mintTokens : date(s) validation returns a generic error message

Attempting to mint to a shareholder that has a valid KYC record (hasn't expired yet) might fail validation because said shareholder cannot receive, yet. However the error in this case reads:
Cannot mint tokens to the following addresses: [0x1b2d2797a56c9eba12aa821d643ab0dba66c3772]. Reason: Expired KYC

You're right, we'll fix that! Thank you

One more thing @VictorVicente, besides the mislabelled validation field (kycExpiry vs canReceiveAfter), I believe sdk validation is too restrictive. Basically it's preventing minting to aninvestor that cannot buy until a future date, which is a bug, because they should still be able to receive issuance.

Yes, we're refactoring all that part to avoid this kind of problems. Thanks!


Need to think of what execute_step and re-run mode mean for an orchestrated mode

In execution modes, these both are valid and quite easy to understand.
What does these two ways mean, when we are in rendered modes?

There should be a mechanism where the original_run_id is exposed as an input variable and execute_node does a verification of the status using: _is_step_eligible_for_rerun and decides.


chore(main): release 0.37.0

:robot: I have created a release beep boop
0.37.0 (2023-06-24)
Features

advanced html export (14523f9)
advanced html export (41e77f3)
Merge pull request #94 from samuele-cozzi:feature/advanced-html-export (14523f9)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/samuele-cozzi/obsidian-marp-slides/releases/tag/0.37.0 :sunflower:


Understanding PipelineML and pipeline_ml

Hi @Galileo-Galilei. As I mentioned in other issue, I'm working currently with integrating my training and inference pipelines with MLPipeline. Unfortunately I'm confused with handling inputs and outputs, I can't wrap my head around it.
Context
My training pipeline is built from three other pipelines: de_pipeline (data engineering), fe_pipeline (feature engineering) and md_pipeline (training aka. modeling).
My inference pipeline is buit from the same pipelines but with predict argument which change their behavior (they're using previously saved models for imputer and prediction.
In my current implementation it looks like this:
     de_pipeline_predict = pipeline(
         de.create_pipeline(predict=True),  # type: ignore
         inputs={"remote_raw": "remote_new", "imputer": "imputer"},
         namespace="new",
     )
     fe_pipeline_predict = pipeline(
         fe.create_pipeline(predict=True),  # type: ignore
         namespace="new",
     )

     # `new_preds` output would be mapped to `new.new_preds` because of
     # namespace usage, so we use map `new_preds` to `new_preds` to retain the
     # name and keep catalog clean.
     md_pipeline_predict = pipeline(
         md.create_pipeline(predict=True),  # type: ignore
         inputs={"lgbm": "lgbm"},
         outputs={"new_preds": "new_preds"},
         namespace="new",

My pipelines also getting as input parameters, obtained from kedro configuration (by that I mean conf/base/parameters.yaml).
When I'm trying to glue them together with:
     train_pipeline = de_pipeline + fe_pipeline + md_pipeline
     predict_pipeline = de_pipeline_predict + fe_pipeline_predict + md_pipeline_predict

     training = pipeline_ml(
         training=train_pipeline,
         inference=predict_pipeline,
     )

and running my training pipeline I'm getting:
kedro_mlflow.pipeline.pipeline_ml.KedroMlflowPipelineMLInputsError:
        The following inputs are free for the inference pipeline:
        - lgbm
     - remote_new
     - imputer
     - params:data_engineering
     - params:target.
        Only one free input is allowed.
        Please make sure that 'inference' pipeline inputs are 'training' pipeline outputs,
        except one.

I'm understand the issue here, but I don't know how to proceed with that ("un-free" inputs which should be obtained (automatically?) using Kedro features). I would be glad for any tips.

TL; DR: make sure that training_pipeline.outputs() and predict_pipeline.inputs() are identical (except for one value for the data to predict in the second set, which seems to be remote_new in your project.). Note: the namespace may have modified them and causes some interference and it might be a bug.

A bit of context: what is the pipeline_ml function for?
Unlike all the others functions of the plugin, this function is not intended for production: it packages a whole pipeline to make it easy to serve (in api or batch) in one command line. The goal is to share a pipeline very easily and to facilitate test and reuse between data scientists.
For production purpose, you need a tool to schedule / monitor the pipelines (like airflow for instance).
What is its goal?
Under the hood, the PipelineML class (the type of the output of pipeline_ml) is nothing but a kedro Pipeline (the "training" pipeline) which has access to another pipeline (the "predict" pipeline) (you can see it in the code here).
When the KedroPipelineHook detects that the pipeline you are trying to run (with kedro run) is not a standard Pipeline but a PipelineML, it tries to log it in mlflow with the KedroPipelineModel class which is actually the class that contains all the code logic.
This class is inspired from mlflow example on how to create a custom mlflow model. Basically, it is a class that implements a predict method which will be called automatically when serving the model, and a load_context method which manages the inputs your predict method needs. Inded, any logged model that respects this format can benefits from mlflow capabilites, including model service.
How does it works?
If you have read the KedroPipelineModel code described above, you can see that the KedroPipelineModel needs 2 elements to be logged in mlflow :

the predict function (here, your kedro pipeline used for prediction)
the data required for the predict function to work (here your lightgbm model, your imputer and a couple of parameters)

You can fill these arguments by hand but it can be a bit tedious and this is where the pipeline_ml comes into play: your predict pipeline is a higher order function, i.e. a function generated by the training pipeline. All the arguments your predict pipeline needs are generated by the training pipeline, and the pipeline_ml binds them together: it should have all the informations needed for logging. When the training pipeline is run, the associated "predict" is logged.
To do so, it applies the following process:

the pipeline_ml check that training_pipeline.outputs() = predict_pipeline.inputs()-{input_name}. This means that all predict_pipeline.inputs() are outputs of a terminal node in the training_pipeline.
when the PipelineML will be logged, a DataCatalog with the corresponding items as keys will be stored.
the artifacts must be persisted locally (it is not needed to declare them as MlflowDataSet though, the plugin uploads them whatever if they are on the disk) and they will be uploaded to mlflow with the model to ensure they can be accessed.

How to fix your bug
The error comes from the fact that training_pipeline.outputs() and  predict_pipeline.inputs() do not have the same entries.
It may either comes from the fact that you do not use the same name for entries in the model (fix that!) or that the namespace introduces a prefix that changes the entries names. In the second case, it may a bug to investigate (I confess I have not tried pipeline_ml with namespaces which are quite recent in Kedro). Your pipeline should look like this (I'm coding on the fly, the code is not tested):
full_pipeline= Pipeline(
        [
            node(
                func=preprocess,
                inputs=dict(data="raw_data"),
                outputs="preprocessed_data",
                tags=["training", "inference"]
            ),
            node(
                func=fit_imputer,
                inputs=dict(data="preprocessed_data"),
                outputs="imputer",
                tags=["training"]
            ),
            node(
                func=transform_imputer,
                inputs=dict(data="preprocessed_data"),
                outputs="imputed_data",
                tags=["training", "inference"]
            ),
            node(
                func=train_model,
                inputs=dict(data="imputed_data"),
                outputs="model",
                tags=["training"]
            ),
            node(
                func=predict,
                inputs=dict(data="imputed_data"),
                outputs="predictions",
                tags=["inference"]
            ),

        ]
    )

### create the pipeline like you. Use kedro viz to see what's going on!
train_pipeline=full_pipeline.only_nodes_with_tags("training") # print the pipeline and check that train_pipeline.outputs={imputer, model}
predict_pipeline=full_pipeline.only_nodes_with_tags("inference") # print the pipeline and check that predict_pipeline.inputs={raw_data, imputer, model}

training = pipeline_ml(
         training=train_pipeline,
         inference=predict_pipeline,
         input_name="raw_data"
)

If you still struggle with the function and needs additional help, can you please share :

the result of training_pipeline.outputs(), predict_pipeline.inputs() and training.input_name (you must pass this argument)
the actual values of training_pipeline and predict_pipeline (i.e. the list of nodes). If you can show me code in a github repo it will make things easier to debug.

Additional infos
I will publish a detailed example in the docs this weekend, if you can wait until this it should make the explanation more clear I guess.

Hi @Galileo-Galilei, thanks for your great work!
My understanding of pipeline_ml might be wrong, but I believe the requirement that training_pipeline.outputs() and predict_pipeline.inputs() are identical might be a bit too restrictive. Consider the following pipeline, which matches text strings to predefined labels:
def create_pipeline(**kwargs):
    return Pipeline(
        [
            node(
                name="Split Data",
                func=split_data,
                inputs=["text_samples", "parameters"],
                outputs=["X_train", "X_test", "y_train", "y_test"],
                tags=["training"],
            ),
            node(
                name="Fit MultiLabelBinarizer",
                func=fit_label_binarizer,
                inputs="y_train",
                outputs="mlb",
                tags=["training"],
            ),
            node(
                name="Transform Labels",
                func=transform_labels,
                inputs=["mlb", "y_train", "y_test"],
                outputs=["Y_train", "Y_test"],
                tags=["training"],
            ),
            node(
                name="Train Model",
                func=train_model,
                inputs=["X_train", "Y_train"],
                outputs="classifier",
                tags=["training"],
            ),
            node(
                name="Evaluate Model",
                func=evaluate_model,
                inputs=["classifier", "X_test", "Y_test"],
                outputs=None,
                tags=["evaluation"],
            ),
            node(
                name="Make Prediction",
                func=make_prediction,
                inputs=["classifier", "mlb", "features"],
                outputs=None,
                tags=["inference"],
            ),
        ]
    )

Nodes:
def split_data(text_samples: pd.DataFrame, parameters: Dict) -> List:
    # extract features
    X = text_samples["features"].values

    # extract labels
    y = text_samples["labels"].values

    # split dataset into train and test data
    X_train, X_test, y_train, y_test = train_test_split(
        X, y, test_size=parameters["test_size"], random_state=parameters["random_state"]
    )

    return [X_train, X_test, y_train, y_test]

def fit_label_binarizer(y_train: np.ndarray) -> MultiLabelBinarizer:
    # multi label binarizer to transform data labels
    mlb = MultiLabelBinarizer()

    # fit the mlb on the train label data
    mlb.fit(y_train)

    return mlb

def transform_labels(mlb: MultiLabelBinarizer, y_train: np.ndarray, y_test: np.ndarray) -> List:
    # transform train label data
    Y_train = mlb.transform(y_train)

    # transform test label data
    Y_test = mlb.transform(y_test)

    return [Y_train, Y_test]

def train_model(X_train: np.ndarray, Y_train: np.ndarray) -> Pipeline:
    # scikit-learn classifier pipeline
    classifier = Pipeline(
        [
            ("vectorizer", CountVectorizer()),
            ("tfidf", TfidfTransformer()),
            ("clf", OneVsRestClassifier(LinearSVC())),
        ]
    )

    # fit the classifier on the train data
    classifier.fit(X_train, Y_train)

    return classifier

def evaluate_model(classifier: Pipeline, X_test: np.ndarray, Y_test: np.ndarray):
    # make prediction with test data
    predicted = classifier.predict(X_test)

    # accuracy score of the trained classifier
    accu = accuracy_score(Y_test, predicted)

    # log accuracy
    logger = logging.getLogger(__name__)
    logger.info("Model has an accuracy of %.3f", accu)

def make_prediction(classifier: Pipeline, mlb: MultiLabelBinarizer, features: np.ndarray) -> List:
    # model inference on features
    predicted = classifier.predict(features)

    # inverse transform prediction matrix back to string labels
    all_labels = mlb.inverse_transform(predicted)

    # map input values to predicted label
    predictions = []
    for item, labels in zip(values, all_labels):
        predictions.append({"value": item, "label": labels})

    # return predictions as list of dicts
    return predictions

The inference part does not only need access to the trained model but to the fitted MultiLabelBinarizer as well. Is this supported by pipeline_ml?

Hello @laurids-reichardt, glad to see that you're playing around with the plugin!
Regarding your question, the access to other data (encoder, binarizer, ...) than the ml model is not only "possible" but exactly what pipeline_ml is designed for, because it is a very common pattern in ml applications.
A few remarks on pipeline_ml:

You are right that the condition training_pipeline.outputs() = predict_pipeline.inputs()-{input_name} is too restrictive: actually, we only need that predict_pipeline.inputs() are included in training_pipeline.outputs() (but the pipeline may have other outputs, like metrics for instance). Nevertheless, I think it has no impact on what you are trying to do.
Mlflow models only accept one entry in their predict function, which should be a pandas.DataFrame. This is not a requirement of the plugin but of core mlflow, and I cannot change this (even if I find it too restrictive). Moreover, you cannot passs parameters at the runtime in the API, which is very restrictive too (e.g. you need to decide when you log the API if the labels are "inverse encoded" or not, you cannot let it as a parameter for the user).

The good news are that I think your code should almost work "as is". Can you check the following items:

Are both classifier and mlb persisted in the catalog.yml (as pickle.PicleDataSet for instance)?. It is necessary to keep track of the objects for further reuse. They should appear in the mlflow ui in model/artifacts folder.
You will need to turn the features arguments of the make_prediction to a pandas.DataFrame to ensure to be able to serve your pipeline as an API (see above)
Is your pipeline properly declared as a pipeline_ml with  input_name=features in your create_pipelines function?
Your make_predictions does not return anything in the pipeline: it must return an object (predictions?) which is not persisted in the catalog.yml and is retruened in a MemoryDataSet at the end of the pipeline.

In case these elements are not enough to solve your problem, what is the error message you get ? Can you share a sample of the data you use to make the problem reproducible?

Yeah, thanks for the quick answer! The hotfix works. For reference, the url is: git+https://github.com/Galileo-Galilei/kedro-mlflow.git@hotfix-pipeline-ml

Indeed, wrong copy pasting, sorry.
Does It "works" only means that it is properly stored in mlflow or did you set the API up and tried it out?

Here's my current implementation: https://github.com/laurids-reichardt/kedro-examples/blob/kedro-mlflow-hotfix2/text-classification/src/text_classification/pipelines/pipeline.py
kedro run --pipeline=kedro_mlflow runs without issues and logs the mlb and classifier as artifacts inside the mlruns folder.
However I get the following error while trying to make some predictions:
❯ mlflow models predict -i ./predict_input.csv -m ./mlruns/1/887715ed7000444fae966f99376ea870/artifacts/text_classification --no-conda
2020/07/19 23:46:55 INFO mlflow.models.cli: Selected backend for flavor 'python_function'
Traceback (most recent call last):
  File "/Users/laurids/Workspace/kedro-example/.direnv/python-3.7.7/bin/mlflow", line 8, in <module>
    sys.exit(cli())
  File "/Users/laurids/Workspace/kedro-example/.direnv/python-3.7.7/lib/python3.7/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/Users/laurids/Workspace/kedro-example/.direnv/python-3.7.7/lib/python3.7/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/Users/laurids/Workspace/kedro-example/.direnv/python-3.7.7/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/laurids/Workspace/kedro-example/.direnv/python-3.7.7/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/laurids/Workspace/kedro-example/.direnv/python-3.7.7/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/laurids/Workspace/kedro-example/.direnv/python-3.7.7/lib/python3.7/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/Users/laurids/Workspace/kedro-example/.direnv/python-3.7.7/lib/python3.7/site-packages/mlflow/models/cli.py", line 93, in predict
    json_format=json_format)
  File "/Users/laurids/Workspace/kedro-example/.direnv/python-3.7.7/lib/python3.7/site-packages/mlflow/pyfunc/backend.py", line 65, in predict
    json_format)
  File "/Users/laurids/Workspace/kedro-example/.direnv/python-3.7.7/lib/python3.7/site-packages/mlflow/pyfunc/scoring_server/__init__.py", line 222, in _predict
    pyfunc_model = load_model(model_uri)
  File "/Users/laurids/Workspace/kedro-example/.direnv/python-3.7.7/lib/python3.7/site-packages/mlflow/pyfunc/__init__.py", line 466, in load_model
    model_impl = importlib.import_module(conf[MAIN])._load_pyfunc(data_path)
  File "/Users/laurids/Workspace/kedro-example/.direnv/python-3.7.7/lib/python3.7/site-packages/mlflow/pyfunc/model.py", line 209, in _load_pyfunc
    python_model = cloudpickle.load(f)
ModuleNotFoundError: No module named 'text_classification'

My current guess would be that the issue stems from the fact that I use pyenv+venv to resolve my dependencies instead of conda. I'll investigate further and report back.

It sounds like your own package is not installed as a python package. What does pip show text_classification  return? In your active environment and at the root of your kedro project , can you try:
cd src
pip install -e .

You're right,  pip install -e ./src did the trick. Should read up on Python modules. 😃
Now it works without issues. Thanks for your great support!
❯ model_id=5372a2d2198b443382922a67c3dc3a40; mlflow models predict -i ./predict_input.csv -m ./mlruns/1/${model_id}/artifacts/text_classification --no-conda -t 'csv'
2020/07/20 11:49:40 INFO mlflow.models.cli: Selected backend for flavor 'python_function'
/Users/laurids/Workspace/kedro-example/.direnv/python-3.7.7/lib/python3.7/site-packages/fsspec/implementations/local.py:33: FutureWarning: The default value of auto_mkdir=True has been deprecated and will be changed to auto_mkdir=False by default in a future release.
  FutureWarning,
{"predictions": [{"value": "The weather in london is rainy as always.", "label": ["new york"]}, {"value": "England just lost the football game.", "label": ["london"]}, {"value": "New York is called the Big Apple.", "label": ["new york"]}]}%

I converted the scikit-learn classifier pipeline to a kedro pipeline as well: https://github.com/laurids-reichardt/kedro-examples/blob/master/text-classification/docs/kedro-pipeline.svg

I have just added unit tests, updated the changelog and merged this fix to develop. It will be released to pypi soon. I let the issue opened because apart from this bugfix, it is the best documentation of the pipeline_ml function so far.
Short digression on module
Regarding the module, I always recommend to install your kedro package as a module. In you don't, you can perform relative import between your scripts, but they depend on your working directory. This may lead to annoying issues because:

the working directory may be set by your IDE (typically, VSCode set it to the location of the first script you launch the interactive window from). It is very error prone because it changes across your different VSCode sessions (if you launch a notebook at the root of the kedro project, or a script inside the src/pipelines/ folder it will define you working directory for the whole session...).
It even depends on the launcher you use (the Vscode Interactive window, the python of your active environment in the console and Jupyter may have different behaviours)
Even Kedro itself (in the first versions, I haven't check if they changed this) was messing up with your working directory when calling some commands and it have lead to bug in the past (when a command failed and did not restore the path)

For all these reasons, I found it much more stable to install your project as a python package with pip.
The -e flag means that you install the package in editable mode, which means that it is not installed in the directory of your virtual env (C:\Users\YOU\Anaconda3\envs\YOUR_ENV) but it points towards your local project (try pip freeze and look for your package to see what I mean). This means that any changes in your code is immediately taken into account without reinstalling the package.
A better way to specify environment in kedro-mlflow
Note that with all this in mind, you can specifiy the conda_env arg of MlflowPipelineHook to ensure that your model will be reproducible for anyone which can pip install your module (from github for instance)
from your_package import __version__as pkg_version # <-- add this
from kedro_mlflow.framework.hooks import MlflowNodeHook, MlflowPipelineHook
from pk.pipeline import create_pipelines

class ProjectContext(KedroContext):
    """Users can override the remaining methods from the parent class here,
    or create new ones (e.g. as required by plugins)
    """

    project_name = "YOUR PROJECT NAME"
    project_version = "0.16.X"
    hooks = (
        MlflowNodeHook(flatten_dict_params=False),
        MlflowPipelineHook(model_name="YOUR_PYTHON_PACKAGE",
                           conda_env={ "python": YOUR_PYTHON_VERSION,
                                       "dependencies": {f"your_package=={pkg_version}"}) # <-- and this
    )

This issue is closed since :

Detailed documentation is now available on readthedocs
An example with code is available in the kedro-mlflow-tutorial repo

Feel free to reopen if needed.


New kwargsql sequence operations any' and each'.

This will help us write the Docido search v3 YAML configuration.

Coverage remained the same at 92.541% when pulling b66f6ac5f6ccc26645cfd7493ab8328e0b64bfce on feat/kwargsql_sequence_operations into 1a710b6978824d5a9a9c26f09ab1a9919f1e9bdc on master.


Update Firefox logo

The Firefox logo that is used in FreeOTP is still the old one from 2017.
I suggest updating it to the modern Firefox logo.

Technically the proper logo to use would be this one, since it's a Firefox Account, not a browser:

I can use the browser logo instead if @justin-stephenson is ok with that. The existing one was using that anyway.

I can use the browser logo instead if @justin-stephenson is ok with that. The existing one was using that anyway.
Related browser/fox logo: https://fontawesome.com/icons/firefox-browser?f=brands&s=solid Firefox account logo: https://fontawesome.com/icons/firefox?f=brands&s=solid

I'm fine with either.

So "Firefox Account" has been renamed to "Mozilla Account".
I think we should therefore also change its name in FreeOTP and update to the logo @albeec13 suggested.

So "Firefox Account" has been renamed to "Mozilla Account". I think we should therefore also change its name in FreeOTP and update to the logo @albeec13 suggested.

Change the name where? The FontAwesome icons are associated with their name string stored in https://github.com/freeotp/freeotp-android/tree/master/mobile/src/main/res/drawable
You can submit a PR to duplicate/copy this file fa_firefox.xml as needed.

I meant the name that appears next to the token generator in the app.


automake: 1.16 -> 1.17

Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Breaks at least gnutls:

/build/gnutls-3.8.6/build-aux/missing: line 81: automake-1.16: command not found

Switching to draft.

Added gnutls: use autoreconfHook, do not rely on ./configure's reconfigure to fix gnutls build failure.


Finetuning on the frontground/background of VOC2012

I want to change the VOC2012 semantic segmentation task(21-class, include background) to a frontground/background task(2-class, all the class is assigned to frontground).
I don't want to change the png image.
I want to change the code to achieve the effect.
I changed the code as the following:

In deeplab_resnet/image_reader.py, I add the code in the line 122:

line 121:       label = tf.image.decode_png(label_contents, channels=1)
line 122:       label = tf.cast(tf.not_equal(label, 0), tf.int8)

ps: I want to change all the non-background label to 1, and all the background label is 0.

In train.py:
n_classes = 2

In deeplab_resnet/model.py:
I replace 21 with 2 in the calls to atrous convolution.(as you said in #12)

In train.py:

restore_var = [v for v in trainable if not v.name.startswith('fc1_voc12_c')]
not_restore_var = [v for v in trainable if v.name.startswith('fc1_voc12_c')]

optim = optimiser.minimize(reduced_loss, var_list=not_restore_var)

saver = tf.train.Saver(var_list=restore_var, max_to_keep=40)
if args.restore_from is not None:
     load(saver, sess, args.restore_from)

The code is same as #12
However, it can't converge.
step 0  loss = 76.737
step 1   loss = 42903.938
step 3  loss = 16467024.000
step 4 loss = nan
step 5 loss = nan
step 6 loss = nan
step 7 loss = nan
...
I run it 6000 steps, but the loss is still nan.
If you don't mind, could you please help me with this problem?
I have spent a dozen of hours to read the code and try to realize this function.
I am almost crazy.......orz orz orz orz orz
update: I find that the utils.py should to be changed, and the image_reader.py should not.
And I am trying it. And it is so hard.....orz

I think I know how to change the labels:
In the line 163 of train.py, I add the code:
line 161                   gt = tf.cast(tf.gather(raw_gt, indices), tf.int32)
line 162                  prediction = tf.gather(raw_prediction, indices)
line 163                  gt = tf.cast(tf.not_equal(gt, 0), tf.int32)  #### added line

Does it right?

Hi
I don't have access to the code at the moment, so can only give you some
tips: 1) check the summary output and make sure that your images are being
read correctly: i.e., there are 2 colours - black (background) + something
else (foreground); 2) try to reduce the learning rate by some factor (e.g.
0.1) until the training stops diverging.
And I think you don't need to change the line 163 if you are using the most
recent code.
On 25 Feb 2017 9:30 pm, "Fansiee"<EMAIL_ADDRESS>wrote:

I think I know how to change the labels:
In the line 163 of train.py, I add the code:
line 161                   gt = tf.cast(tf.gather(raw_gt, indices), tf.int32)
line 162                  prediction = tf.gather(raw_prediction, indices)
line 163                  gt = tf.cast(tf.not_equal(gt, 0), tf.int32)  #### added line
Does it right?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/DrSleep/tensorflow-deeplab-resnet/issues/40#issuecomment-282481040,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHemmPYdEnIDPDG27lbBwVWSeofgLGqOks5rgB7egaJpZM4ML7fQ
.

https://github.com/DrSleep/tensorflow-deeplab-resnet#using-your-dataset


New version with newer binary sensors failed with message AttributeError: 'NoneType' object has no attribute 'passengerseat'

Describe the bug
New version with newer binary sensors failed with message
AttributeError: 'NoneType' object has no attribute 'passengerseat'
To Reproduce
Initiating costom component after upgrade to latest version failed with message
previos version without binary sensors worked ok.
Expected behavior
Finish initialization as previous version.
Screenshots
This error originated from a custom integration.
Logger: homeassistant
Source: custom_components/toyota/binary_sensor.py:72
Integration: Toyota Connected Services (documentation, issues)
First occurred: 6:30:55 PM (7 occurrences)
Last logged: 6:40:07 PM
Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 134, in _handle_refresh_interval
await self._async_refresh(log_failures=True, scheduled=True)
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 265, in _async_refresh
update_callback()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 325, in _handle_coordinator_update
self.async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 464, in async_write_ha_state
self._async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 498, in _async_write_ha_state
state = self._stringify_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 470, in _stringify_state
state = self.state
File "/usr/src/homeassistant/homeassistant/components/binary_sensor/init.py", line 178, in state
return STATE_ON if self.is_on else STATE_OFF
File "/config/custom_components/toyota/binary_sensor.py", line 72, in is_on
window = getattr(
AttributeError: 'NoneType' object has no attribute 'passengerseat'
Additional context
Add any other context about the problem here.

ver 1.1.3 corrected that; thanks


Submit the application of AdMeta

Project Abstract
AdMeta is a Metaverse advertisement platform that focuses on privacy-preserving.
AdMeta uses a TEE-based DID service to identify target groups for advertisers, and with the usage of zero-knowledge proof, AdMeta guarantees not to collect any user data. AdMeta builds multiple forms of ad assets (e.g. billboards, wall paintings) in Metaverse platforms like Decentraland, Bit.Country, to allow land holders to integrate our products easily. Qualified conversions let both users and publishers get rewards from advertisers.
For which grant level are you applying?

[ ] Level 1:  Up to $10,000, 2 approvals
[x] Level 2:  Up to $50,000, 3 approvals
[ ] Level 3:  Unlimited, 5 approvals (for > $100k Web3 Foundation Council approval)

Application Checklist

[x] The application template has been copied, renamed ( project_name.md) and updated.
[x] A BTC or Ethereum (DAI/USDT) address for the payment of the milestones is provided inside the application.
[x] I have read and acknowledged the terms and conditions.
[x] The software delivered for this grant will be released under an open-source license specified in the application.
[x] The initial PR contains only one commit (squash and force-push if needed).
[x] The grant will only be announced once the first milestone has been accepted.

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

Hi @h4n0, thank you for your application! We will look into it as soon as possible.

And I have one additional question regarding the business model, which we usually don’t try to focus on as part of the application process: Why are you focusing on metaverse, when as far as I know, no one has figured out how to decentralize regular advertisement and the regular advertisement market at this stage is much bigger/more profitable.

Thanks for the application. I have a few initial questions: Why do you want to use TEE as well as zero knowledge proofs? And if you plan to use zero knowledge proofs could you provide more information about the technical implementation? In general, a few projects are working on decentralized and privacy persevering ad-systems (usually not metaverse specific). The biggest issue is that it requires a lot of un-chain transactions to prove that people viewed/interacted with the ad. That’s why, for example, braver is still completely centralized. How do you plan to solve this issue (e.g. state channels?)?

Thanks for the quick feedback.

About the zero-knowledge proof, my description might be a bit misleading. We use TEE to store all sensitive data, like users' personal data, behavior data, and preferences. We also do the matching between users and ads inside TEE, which ensures that no sensitive data will be exposed during the matching process. We are not planning to use any zero-knowledge proof algorithms for the first version of our product, just simply put sensitive data accessing functions in TEE.
About the proof of users' views/clicks, we plan to make every single ad unique from each other. E.g. A company ordered 100 impressions for the same ad, and we will first generate 100 unique IDs for all 100 impressions. With these 100 unique IDs, we build a Merkle tree, which will be stored on chain. A qualified view or click of this ad will give user this ad's unique ID, and with this ID, users can claim rewards. We will simplify the whole process by using Browser extensions in Milestone 3, but the technical details remain the same.

And I have one additional question regarding the business model, which we usually don’t try to focus on as part of the application process: Why are you focusing on metaverse, when as far as I know, no one has figured out how to decentralize regular advertisement and the regular advertisement market at this stage is much bigger/more profitable.

This is a good question. As you also mentioned, brave browser tries to have a similar implemented in a regular advertisement market. However, as non-Web3 users are not familiar with crypto wallets, they have to provide a custodial wallet, which has lots of limitations. Also, because of the incompatibility between Web2 and Web3, they compromise their product into a centralized service.
While in Metaverse, all users have learned how to use a crypto wallet, and they won't have steep learning curves to interact with our blockchain as well, therefore it allows us to design our product in a more decentralized way, like the above answer I mentioned. Moreover, in Metaverse, the ads can be with more interactive, dynamic forms, unlike the traditional online ads. So that we can make ads fun, interesting, and we want users at least to hate ads less, or even like them ;).

About the zero-knowledge proof, my description might be a bit misleading. We use TEE to store all sensitive data, like users' personal data, behavior data, and preferences. We also do the matching between users and ads inside TEE, which ensures that no sensitive data will be exposed during the matching process. We are not planning to use any zero-knowledge proof algorithms for the first version of our product, just simply put sensitive data and data-accessing functions in TEE.
About the proof of users' views/clicks, we plan to make every single ad unique from each other. E.g. A company ordered 100 impressions for the same ad, and we will first generate 100 unique IDs for all 100 impressions. With these 100 unique IDs, we build a Merkle tree, which will be stored on chain. A qualified view or click of this ad will give user this ad's unique ID, and with this ID, users can claim rewards. We will simplify the whole process by using Browser extensions in Milestone 3, but the technical details remain the same.

Thanks for the reply. Could you update the application accordingly? If you have a unique id for every impression (=transaction), this will very quickly become very expensive and doesn’t sound scalable to me on a blockchain (even on polkadot) or maybe I’m missing something here.

About the zero-knowledge proof, my description might be a bit misleading. We use TEE to store all sensitive data, like users' personal data, behavior data, and preferences. We also do the matching between users and ads inside TEE, which ensures that no sensitive data will be exposed during the matching process. We are not planning to use any zero-knowledge proof algorithms for the first version of our product, just simply put sensitive data and data-accessing functions in TEE.
About the proof of users' views/clicks, we plan to make every single ad unique from each other. E.g. A company ordered 100 impressions for the same ad, and we will first generate 100 unique IDs for all 100 impressions. With these 100 unique IDs, we build a Merkle tree, which will be stored on chain. A qualified view or click of this ad will give user this ad's unique ID, and with this ID, users can claim rewards. We will simplify the whole process by using Browser extensions in Milestone 3, but the technical details remain the same.

Thanks for the reply. Could you update the application accordingly? If you have a unique id for every impression (=transaction), this will very quickly become very expensive and doesn’t sound scalable to me on a blockchain (even on polkadot) or maybe I’m missing something here.

Thanks, I'll update it.
One impression/click unique id does not necessarily mean a claim transaction. We recommend users collect a certain amount of ids and claim them one time. Also because of the transaction fee, users will tend to collect and claim ids as many as possible, to be more economical. Because the reward of one impression ad could be probably less than the transaction fee for claiming, and we will of course leverage the transaction fee and the minimum reward amount.
In addition, the Merkle tree claiming method I mentioned in my previous answer ensures we store only the Merkle root in each impression ad, and the complete Merkle tree will be stored offchain, just for Merkle proof generation. To verify if one unique id is part of the Merkle tree, the time complexity is O(lgn), where n is the number of ads, therefore scalable is not a big issue so far. We will consider to optimize our current algorithm later, e.g. record users' uid when claiming and distribute rewards periodically (like per day, per week), to reduce the onchain execution time.

Thanks for the quick reply. Regarding an additional manual claim process, this sounds like it also creates a few additional problems. For example what if users don’t claim their rewards. Do advertisement firms in this case also need to wait for the payment? Anyway, in general, I would be willing to go ahead with milestone 1 at this stage. My main concern regarding milestone 2 + 3 is that they are protocol specific. For example is decentraland fully open source? Are there potentially other projects you could support? .

Thanks, yes we will refine our protocol in detail. Decentraland is just used for demo, and we are not a product only on Decentraland. We also contacted Bit.Country, which has onboarded on Kusama, and they showed great interest in our products as well. Our goal is to provide our API and it will be used by any new Metaverse platforms.

The faster way to get the necessary approval would probably for now to just apply for milestone 1 and we sign a follow up grant, once you implemented this milestone

This sounds good to us. We can just apply for milestone 1 for now. How should I change my current application? Should I just remove the milestone 2 and 3?

Thanks for the suggestions and questions!
I removed the milestone 2 and 3 parts, and added a sum of them in the section "Further Plans"

I have a few questions:
First, regarding your comment:

just simply put sensitive data and data-accessing functions in TEE.

Could you explain how you are planning to do this? Will you require each user to own their own TEE-capable device? How else would your users submit their sensitive data to the "TEE-blockchain" - since all Tx's are, by blockchain's nature, public? Is there any encryption of in-flight data happening anywhere, and if so, could you describe this in more detail?
Also, your architecture diagram still contains the zero knowledge proof component, I suggest you update that please, if it's no longer part of your design.

I have a few questions: First, regarding your comment:

just simply put sensitive data and data-accessing functions in TEE.

Could you explain how you are planning to do this? Will you require each user to own their own TEE-capable device? How else would your users submit their sensitive data to the "TEE-blockchain" - since all Tx's are, by blockchain's nature, public? Is there any encryption of in-flight data happening anywhere, and if so, could you describe this in more detail?

Sure. We'll use the TEE solution from IntegriTEE, who is also the technical partner of Litentry. This solution builds a side-chain beside a parachain, which is also a Substrate based blockchain network. The difference is, side-chain nodes are all TEE capable computers (in this case Intel SGX computers are used). All transactions that happen on parachain will be synced on side-chain. User will encrypt their sensitive data first(probably not by themselves but via our app), and send transactions to our parachain, who then "forward" this encrypted data to the side-chain (Technically speaking, it's not forwarding, but pooling from side-chain). On side-chain, these data will be decrypted for further proceeding.
And by means of this, sensitive data, the matching process and the claiming process won't be exposed in our parachain, because all these are on side-chain. Parachain only receives the result if execution is successful or not, which will be again public.

Also, your architecture diagram still contains the zero knowledge proof component, I suggest you update that please, if it's no longer part of your design.

Thanks for the correction. I've updated the source of the diagram and it should be correct now.

User will encrypt their sensitive data first(probably not by themselves but via our app)

How exactly will that happen? How do you ensure that only the TEE has the keys to decrypt the user's data, and that users don't need to trust your app (you could just be encrypting with your own keys, for example, and that way have access to all of users' data).

User will encrypt their sensitive data first(probably not by themselves but via our app)

How exactly will that happen? How do you ensure that only the TEE has the keys to decrypt the user's data, and that users don't need to trust your app (you could just be encrypting with your own keys, for example, and that way have access to all of users' data).

There is an asymmetric RSA key pair in TEE network, and private key is shared between TEE nodes, which is called the shielding key, while public key is known for everyone. Our app will use the public key of the shielding key to sign for users' data, and the TEE workers can decrypt it with the private key of the shielding key.

Hi @h4n0. Would you mind providing an update on your grant work? According to the roadmap, you were planning to deliver M1 in January. We are not strict with delivery deadlines, but if your work is significantly delayed due to unforeseen circumstances, you should submit an amendment with an updated timeline.

Hi @semuelle , thanks for the reminder. We are still working on our product. As all of us are currently working as part-time on AdMeta, the timeline will not be exactly like what we mentioned.

Hey @h4n0, not a problem. Could you modify the duration of the milestones in the contract to reflect a more realistic timeline then, so that we have an idea of what to expect?

Sorry for the late reply.
Sure, I've created a new PR updating the duration to 6 months.

Hey @h4n0, checking in again. Could you please submit another amendment, or let us know in case you're no longer interested?

Hi @alxs .
Thank you for the check up. We have finished most parts of our milestone 1 and now are preparing for testing, docker and deployment.
I'll therefore update the plan and inform you once everything is ready.

@h4n0 friendly reminder

Hey @alxs
Thanks for the reminder. I would apologize again, as I'm still working on the documentation and articles we promised in the list, I hope I can finish it in two weeks.
Cheers

Sounds good @h4n0. In that case, we look forward to receving your delivery.


Improper Decoding result after scanning

Hi @serratus , you have created one of the best barcode scanners on web till date :+1: no doubt about that , but as you also know it is far from being a stable one, because of certain basic issues like improper decoding value.
I tried to decode a barcode  using quaggaJs & it decoded it ~3 seconds(which is just what i needed), but ~40% of the time it decoded the barcode with wrong value, i know there has been a similar issue earlier (#36 - Barcodes not detecting corectly ), which you have already addressed it, but looks like something is still missing.
FYI,
Device - NEXUS 5
Browser - Chrome v 46 on Android
lib version - quaggaJS v 0.11.6
Here is a demo link to JSFiddle.
below is the screen shot of the same

I understand you may be busy and may not be able to look into this, but atleast if you can give me some hints on where to start-off with , then i can give a try to fix the issue.
thanks in advance

Hi @dreamweiver, thanks for your feedback and sorry or the late reply.
I'm aware of these limitations and currently tapping in the dark on what's causing the problems here. Your example seems to produce a very high rate of false positives. What also surprises me the variations of results you get, there is not even a consistency.
For now, the only suggestion would be to only use one decoder at a time, and don't use multiple. Do you know which of the decoders produces the most errors?

Hi @serratus , my requirement was to have decoder that would decode multiple barcode, so i was trying with Code 39 and Code 128.
In the above shared picture, i was trying to decode Code 128, though i didnt try with code 39, so iam not sure if this inconsistency is present while decoding other codes as well.

I have the same inconsistencies using UPC and EAN decoders on live stream. I get different values, but sometimes they are consistent:<PHONE_NUMBER>527,8480881338072,8480881338072.

Hello @milani
I was able to get correct readings by hiding/cutting out the other barcode on the top.
Initially I too was getting different readings, but once I hid the top portion, I got the correct value.
Looks like multiple barcodes are confusing Quagga.
I'm using the latest version BTW.

This might actually be an interesting test, and I don't know that this would help, but I'd be interested in hearing if so . . .
Perhaps adding a reader to the list that can read the upper barcode, would allow the UPC reader to focus on the UPC versus the area that is detected with the other reader?  If not, that might be an interesting feature someone could potentially implement -- blacklisting an area of the image if a successful barcode is found within an area, and then not scanning that same area further with the other readers.    For as little as I know about the internals of the lib, maybe it already does that?

@ericblade There is this issue:   #164 where this was discussed. Setting the multiple flag to true should apparently do the trick.

That is also an idea.  Set multiple true, and implement some basic validation in your onDecoded .. ?


Run package-set commands without spago.dhall present

Some commands such as verify-set and list-packages don't work if a spago.dhall file is missing from the current directory. This can feel weird in a monorepo setup where (for example) there's a root packages.dhall and multiple spago.dhalls in sub-directories, because it means the commands must be run from a sub-directory away from the actual package-set definition. This is also the opposite behaviour from commands like upgrade-set and freeze which can only be run in the same directory as packages.dhall.
I guess we should go through the commands, figure out whether they're a "requires packages.dhall" or a "requires spago.dhall", and fix them appropriately - I'm not sure how much reorganisation this might require. The Spago help text already informally sorts commands into "project" and "package-set" lists so we could also sync up with that.
This likely relates to #349.

@elliotdavies good point, and yes this kind of relates to #349, but in a funny way: if we have commands search for the packages.dhall then they would fail in folders where there isn't one
So we'd need the resolution from #349, or some kind of fallback like "search for the packages.dhall first, if not found just read the spago.dhall and get the PackageSet from there"
There is no particular reason why verify requires a spago.dhall, but the reason why list-packages does is that you can pass --filter=transitive and --filter=direct, in which case Spago would need the list of dependencies in the config.
On the other hand I was thinking about splitting that command into spago ls package-set (which wouldn't require a spago.dhall) and spago ls deps and spago ls transitive (which would).
The next release is going to be breaking anyways so this could be a good moment to implement this


Document how to get a privileged container

No one has been asking me for how to get privileged access to a container, so will close this for now. A google search should suffice too.


LND with Neutrino never finishes syncing after restart

Background
I run LND with a Neutrino backend on the Bitcoin testnet chain. During the initial sync, the node has 3 peers and syncs the entire testnet chain. However, even after the latest block is synced, no incoming transactions are recognised, so lncli walletbalance returns only 0s for all three sections although the address should be funded (as can be seen on e.g. BlockCypher. I then stop and restart the LND node. When restarted, the node syncs the latest blocks, but never sets the synced_to_chain flag to true although the testnet block height is equal to the block height as e.g. on BlockCypher. Also, no funding transactions are recognised as during the initial sync. I deleted the LND folder and re-synced the entire chain twice now, but the problems persist.
Your environment

lnd: 0.4.2-beta
Darwin (macOS)
Backend version not applicable, since neutrino-mode is used

Steps to reproduce

Remove all previous LND files in e.g. ~/.lnd/
Start LND in neutrino mode with

lnd --bitcoin.active --bitcoin.testnet --debuglevel=debug --bitcoin.node=neutrino --neutrino.connect=faucet.lightning.community

Let the LND node sync fully.
Create a new address with lncli newaddress np2wkh
Send some Bitcoins to that address. Wait for confirmations.
Check walletbalance with lncli walletbalance
See Expected behaviour 1. and Actual Behaviour 1.
Stop and restart the LND node with the same commands as previously.
See Expected behaviour 2. and Actual Behaviour 2.

Expected behaviour

lncli walletbalance shows the funds that were send to the address.
LND syncs and eventually sets the synced_to_chain flag to true. lncli walletbalance shows the funds that were sent to the address.

Actual behaviour

lncli walletbalance shows only 0s for all three sections.
LND never sets synced_to_chain to true and doesn't show funds in walletbalance.  Shows the following output:

// Note: I removed the timestamps for brevity
[INF] CMGR: DNS discovery failed on seed x49.seed.tbtc.petertodd.org: lookup x49.seed.tbtc.petertodd.org: no such host

// The next output is printed over 1000 times
[DBG] BTCN: Sending getcfheaders to <IP_ADDRESS>:18333 (outbound)

// Eventually, this is printed
[DBG] BTCN: Sending getblocks (locator<PHONE_NUMBER>00001268a4b20345424065a93daafab687dd7a85db7324623c5152, stop<PHONE_NUMBER>000000000000000000000000000000000000000000000000000000) to <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Sending getheaders (locator<PHONE_NUMBER>00001268a4b20345424065a93daafab687dd7a85db7324623c5152, stop<PHONE_NUMBER>000011d5cce43f3941a11d44a42ccccde67f7773c23ef58ada7d01) to <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Received inv (block<PHONE_NUMBER>000011d5cce43f3941a11d44a42ccccde67f7773c23ef58ada7d01) from <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Received headers (num 1) from <IP_ADDRESS>:18333 (outbound)
[INF] BTCN: Processed 1 block in the last 12.26s (height 1353458, 2018-07-14 08:51:39 +0200 CEST)
[DBG] BTCN: Sending getcfheaders to <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Sending getcfheaders to <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Received cfheaders from <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Rescan got out of order block<PHONE_NUMBER>000011d5cce43f3941a11d44a42ccccde67f7773c23ef58ada7d01 with prevblock<PHONE_NUMBER>00001268a4b20345424065a93daafab687dd7a85db7324623c5152

// From here on, the following lines are repeated every now and then
[DBG] BTCN: Received ping from <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Sending pong to <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Sending ping to <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Received pong from <IP_ADDRESS>:18333 (outbound)

Related Issues
#511
#1424
Additional Info
lncli getinfo shows:
{
    "identity_pubkey": "03ca1948523a57f8482db73e305a7be97ab2ea6151de13c60bbb4047d44105958d",
    "alias": "03ca1948523a57f8482d",
    "num_pending_channels": 0,
    "num_active_channels": 0,
    "num_peers": 0,
    "block_height": 1353475,
    "block_hash": "0000000000000047e5b0dc7229ee7c8d44197898a901f5059afdc8fbeed63f46",
    "synced_to_chain": false,
    "testnet": true,
    "chains": [
        "bitcoin"
    ],
    "uris": [
    ],
    "best_header_timestamp": "1531518389",
    "version": "0.4.2-beta commit=bc5bfeb479d5123ad3c9cfc8bf9636bb1535802e"
}

lncli listpeers shows:
{
    "peers": [
    ]
}

Just tested the above using Docker instead and received the same problems.

What btcd version are you using to sync? If you're using the faucet, then it uses a new version of the neutrino protocol that wasn't packaged with 0.4.2 beta .

Hmm, I'm not actively using any btcd instance, but only run the packaged lnd release 0.4.2 beta. Alright, so I need to update my local lnd instance. Where can I find out which version the faucet is running?

Background
I run LND with a Neutrino backend on the Bitcoin testnet chain. During the initial sync, the node has 3 peers and syncs the entire testnet chain. However, even after the latest block is synced, no incoming transactions are recognised, so lncli walletbalance returns only 0s for all three sections although the address should be funded (as can be seen on e.g. BlockCypher. I then stop and restart the LND node. When restarted, the node syncs the latest blocks, but never sets the synced_to_chain flag to true although the testnet block height is equal to the block height as e.g. on BlockCypher. Also, no funding transactions are recognised as during the initial sync. I deleted the LND folder and re-synced the entire chain twice now, but the problems persist.
Your environment
* `lnd`: `0.4.2-beta`

* Darwin (macOS)

* Backend version not applicable, since `neutrino`-mode is used

Steps to reproduce
1. Remove all previous `LND` files in e.g. `~/.lnd/`

2. Start `LND` in `neutrino` mode with

lnd --bitcoin.active --bitcoin.testnet --debuglevel=debug --bitcoin.node=neutrino --neutrino.connect=faucet.lightning.community

1. Let the `LND` node sync fully.

2. Create a new address with `lncli newaddress np2wkh`

3. Send some Bitcoins to that address. Wait for confirmations.

4. Check `walletbalance` with `lncli walletbalance`

5. See `Expected behaviour 1.` and `Actual Behaviour 1.`

6. Stop and restart the `LND` node with the same commands as previously.

7. See `Expected behaviour 2.` and `Actual Behaviour 2.`

Expected behaviour
1. `lncli walletbalance` shows the funds that were send to the address.

2. `LND` syncs and eventually sets the `synced_to_chain` flag to `true`. `lncli walletbalance` shows the funds that were sent to the address.

Actual behaviour
1. `lncli walletbalance` shows only `0`s for all three sections.

2. `LND` never sets `synced_to_chain` to `true` and doesn't show funds in `walletbalance`.  Shows the following output:

// Note: I removed the timestamps for brevity
[INF] CMGR: DNS discovery failed on seed x49.seed.tbtc.petertodd.org: lookup x49.seed.tbtc.petertodd.org: no such host

// The next output is printed over 1000 times
[DBG] BTCN: Sending getcfheaders to <IP_ADDRESS>:18333 (outbound)

// Eventually, this is printed
[DBG] BTCN: Sending getblocks (locator<PHONE_NUMBER>00001268a4b20345424065a93daafab687dd7a85db7324623c5152, stop<PHONE_NUMBER>000000000000000000000000000000000000000000000000000000) to <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Sending getheaders (locator<PHONE_NUMBER>00001268a4b20345424065a93daafab687dd7a85db7324623c5152, stop<PHONE_NUMBER>000011d5cce43f3941a11d44a42ccccde67f7773c23ef58ada7d01) to <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Received inv (block<PHONE_NUMBER>000011d5cce43f3941a11d44a42ccccde67f7773c23ef58ada7d01) from <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Received headers (num 1) from <IP_ADDRESS>:18333 (outbound)
[INF] BTCN: Processed 1 block in the last 12.26s (height 1353458, 2018-07-14 08:51:39 +0200 CEST)
[DBG] BTCN: Sending getcfheaders to <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Sending getcfheaders to <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Received cfheaders from <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Rescan got out of order block<PHONE_NUMBER>000011d5cce43f3941a11d44a42ccccde67f7773c23ef58ada7d01 with prevblock<PHONE_NUMBER>00001268a4b20345424065a93daafab687dd7a85db7324623c5152

// From here on, the following lines are repeated every now and then
[DBG] BTCN: Received ping from <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Sending pong to <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Sending ping to <IP_ADDRESS>:18333 (outbound)
[DBG] BTCN: Received pong from <IP_ADDRESS>:18333 (outbound)

Related Issues
#511
#1424
Additional Info
lncli getinfo shows:
{
    "identity_pubkey": "03ca1948523a57f8482db73e305a7be97ab2ea6151de13c60bbb4047d44105958d",
    "alias": "03ca1948523a57f8482d",
    "num_pending_channels": 0,
    "num_active_channels": 0,
    "num_peers": 0,
    "block_height": 1353475,
    "block_hash": "0000000000000047e5b0dc7229ee7c8d44197898a901f5059afdc8fbeed63f46",
    "synced_to_chain": false,
    "testnet": true,
    "chains": [
        "bitcoin"
    ],
    "uris": [
    ],
    "best_header_timestamp": "1531518389",
    "version": "0.4.2-beta commit=bc5bfeb479d5123ad3c9cfc8bf9636bb1535802e"
}

lncli listpeers shows:
{
    "peers": [
    ]
}
``

you get it why this was happening i am having the exact same issue

@vyomeshaudi6 This is quite an old issue. Could you please open a new one if you see this with the latest version?


Update sbt-scalafix to 0.9.32

Updates ch.epfl.scala:sbt-scalafix from 0.9.31 to 0.9.32.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "ch.epfl.scala", artifactId = "sbt-scalafix" } ]

labels: sbt-plugin-update, early-semver-minor, semver-spec-patch

Codecov Report

Merging #517 (4eb6314) into release/next (ef1d9ac) will not change coverage.
The diff coverage is n/a.

@@              Coverage Diff              @@
##           release/next     #517   +/-   ##
=============================================
  Coverage         57.16%   57.16%
=============================================
  Files                66       66
  Lines              1473     1473
  Branches             50       50
=============================================
  Hits                842      842
  Misses              631      631

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 ef1d9ac...4eb6314. Read the comment docs.


Transifex integration (translation management)

Hey guys,
as I've been translating the rest of the messages to german a couple of weeks ago, I've been wondering whether we could improve the translation workflow somehow.
I'm fearing the situation when translations are drifting apart because their maintainers doesn't watch changes to the english master message files...
I remembered that I once signed up for Transifex (though never used it until now), which offers free translation management for Open-Source projects, and created an IDPF organization and an EpubCheck project:
https://www.transifex.com/projects/p/epubcheck/
I added all current translations to the transifex project and set up the transifex commandline integration (http://docs.transifex.com/developer/client/) with this PullRequest.
This is how translating messages in Transifex looks like (if you signed up):
https://www.transifex.com/projects/p/epubcheck/translate/#fr/ErrorsWarnings/35761294

I think, Transifex makes translation management a bit easier, as it automatically keeps the english message files up to date with the github repo and translators can easily see when new messages need to be translated.

However, it doesn't (automatically) syncs itself with GitHub – this has to be done by hand at the moment (but: there exists tools for syncing – see below). A manual workflow for this could look like the following:

a contributor translates/adds/changes messages at the transifex project

someone of the epubcheck core team

pulls changes from transifex to his local repository with tx pull -a
then pushes changes to the github repo manually

a contributor translates/adds/changes messages at the github project (PulLRequest, push)

someone of the epubcheck core team

updates his local github repository
then pushes changes to the transifex repo manually with tx push -s -t

If you want to test the transifex integration, sign up at transifex for free and @rdeltour or me will add you as a contributor to the project.
Next steps include:

setting up the transifex commandline client (http://docs.transifex.com/developer/client/setup)

install python and pip (http://pip.readthedocs.org/en/latest/installing.html)
install the transifex client: sudo pip install --upgrade transifex-client
create a ~/.transifexrc file with your transifex login credentials (http://docs.transifex.com/developer/client/setup#transifexrc)

pull translations from transifex repository to your local git repo: tx pull -a

Wanna give it a try and tell me what you think?
TODOs
The transifex integration is just a first draft for this task. There are still a few issues to solve:

maven integration?

it would be nice to pull transifex changes to the github repository automatically before building and testing epubcheck

syncing the transifex and github repositories

http://blog.transifex.com/post/67760039192/github-transifex-integration
https://github.com/jsilland/txgh

special char escaping

when pulling message files from transifex which include "special characters" (like `!:/, transifex automatically escapes these characters:

example 1

github repo: file_not_found=Fichier introuvable : '%1$s'
transifex checkout: file_not_found=Fichier introuvable \: '%1$s'

example 2

github repo: argument_needed=Es wird mindestens ein Parameter erwartet!
transifex checkout: argument_needed=Es wird mindestens ein Parameter erwartet\!

I don't know if this behaviour is okay for the java integration?!

multi-line messages

pulling message files from transifex which include multi-line messages (e.g. the EpubCheck help message) results in a one-liner:

help_text = EpubCheck v%1$s\n\nPour lancer cet outil, le premier argument doit être le nom (avec le chemin)\ndu fichier à vérifier.\n\nSi un fichier non-epub est vérifié, la version epub du fichier\ndoit être fournie en utilisant -v et le type du fichier en utilisant -mode.\nLa version par défaut est 3.0.\n\nModes et versions supportés \: \n--mode opf -v 2.0\n--mode opf -v 3.0\n--mode xhtml -v 2.0\n--mode xhtml -v 3.0\n--mode svg -v 2.0\n--mode svg -v 3.0\n--mode nav -v 3.0\n--mode mo  -v 3.0 // Pour la vérification des Media Overlays\n--mode exp  // Pour des archives EPUB éclatés\n\nL'outil accepte aussi les options suivantes \:\n--save \t       \= sauve l'epub créé depuis l'epub éclaté\n--out <file>     \= émet un fichier XML de validation (utilisé - pour émettre dans stdout).\n--xmp <file>     \= émet un fichier XMP de validation (utilisé - pour émettre dans stdout).\n--json <file>    \= émet un fichier JSON de validation (utilisé - pour émettre dans stdout)\n-m <file>        \= identique à --mode\n-o <file>         \= identique à --out\n-x <file>        \= identique à --xmp\n-j <file>        \= identique à --json\n--failonwarnings[+|-] \= Par défautn l'outil renvoie 1 si des erreurs sont trouvées et 0 s'il n'y a pas d'erreur.\n                        En utilisant --failonwarnings le processus sortira avec un status 1\n                        si des avertissements ou des erreurs sont trouvés et 0 seulement s'il n'y a ni erreur ni avertissement.\n-q, --quiet      \= aucun message émis sur la console, seulement les erreurs, seulement sur la sortie\n-f, --fatal      \= n'émet que les erreurs fatales sur le sortie\n-e, --error      \= n'émet que les erreurs et les erreurs fatales sur le sortie\n-w, --warn       \= émet les erreurs fatales, les erreurs et les avertissements sur la sortie\n-u, --usage      \= inclis aussi les message d'utilisation des epub sur la sortie\n                    (par défaut à OFF); si activé, les messages d'utilisation seront toujours inclus dans la sortie\n\n-l, --listChecks [<file>] \= listes les identifiants de message et leur degré de sévérité dans un fichier de personnalitation des messages dans le fichier  <file>\n                          ou la console\n-c, --customMessages [<file>] \= remplace les niveaux de sévérité des messages par ceux du fichier de personnalitation des messages défini dans <file>\n\n-h, -? ou --help \= affiche ce message d'aide\n

I'm open for suggestions and your opinions regarding this topic.

Is it too much overhead?
Shall we just don't care about outdated translations?
Are there better tools for translation management?
How to solve some of the TODOs?

Cheers,
Tobias

My two cents : until there is full integration between GitHub/mvn and Transifex, using the latter seems to bring more problems than benefits.
A few comments on my experience writing the Italian translation:

I had to figure out on my own, mostly extrapolating from the preexisting translations like FR and DE, what characters should be escaped (and how to do that) in the various message files
placing somewhere the Jing EN templates might be helpful (I worked from the DE ones)
the Italian help message (the one printed when epubcheck is executed with -h) has lines with at most 80 characters (78 actually) for old fashioned die-hard consolers like me

Rebased this branch on current master (epubcheck 4.0.0)

Even though there's still no fully automated GitHub <-> Transifex workflow, @rdeltour and I decided to merge this first step of the Transifex integration to master in 4.0.1
I wrote a bash script wich solves issues with special char escaping and multi-line messages (for details see first post on the top) which works on top of the Transifex Commandline Client.
I'll doing some rework today or tomorrow and will push it to the PR. This script could eventually be used in a Travis or Maven integration in the future...
Also I set up a wiki page about contributing translations: https://github.com/IDPF/epubcheck/wiki/Translating I'm going to add some information soon on how to pull translations from Transifex and push to GitHub.

With f3c67b4 I added a bash script to pull and normalize Transifex translations as described in my last comment.
To run this script you need to have a Transifex account and install the Transifex Commandline Client! Instructions: http://docs.transifex.com/client/
You need to run this script from the repository's root directory!
e.g. ./src/build/transifex-pull.sh --all
usage: transifex-pull.sh [--all | <2-digit-country-code>]
examples:
  transifex-pull.sh --all
  transifex-pull.sh de

Note: tested on Mac OS X only!

@rdeltour ready to merge! Once this is done, I'm going to perform a transifex-pull on the master branch to initialy normalize the current translations.
This will delete comments in message properties files like
# This is the German translation of MessageBundle.properties file
# Translation by Tobias Fischer (https://github.com/tofi86)

and will replace them with the default comments from the original Message properties file
# This is the default MessageBundle.properties file

This is how Transifex handles comments in source files: it just copies them over to the translated file. no chance to get custom comments through the process.

This is weird. @rdeltour's merge of this branch didn't include all commits. master is missing 4c25396 and f3c67b4. Going to merge these manually.

@rdeltour's merge of this branch didn't include all commits.

argh. maybe I forgot to pull before rebasing? Sorry for the hassle, let me know if I can help.

@rdeltour no worries. Seems to be merged fine now. Double commit's though, but it works...


Filepiles do not show  avatar, only author's name

It happens in recent upgrade.
The facepile in old/new comments only show author's name, not the avatar.
I've checked that the comment meta do have semantic_linkbacks_avatar.
My current theme would show the comment manually by using
 <?php Linkbacks_Handler::show_mentions(); ?>

Seems to only happen with some themes, of my three blogs only one shows this problem (if memory serves me right it's the 2011 theme, in a rush just now, will check later)

I debugged that $allowed_comment_types  in pre_get_avatar_data() do not have webmention.
The avatar shows after I tried to re-save webmention setting page.
While the case is solved, may consider why the setting is lost during upgrade.

Webmention is set in the webmention plugin, because webmention has a setting for showing an avatar now. Will have to see about the default.


Feat: support prettier Comments on Changelog.md when updating a dependency.

So far Sentry/JavaScript, Sentry/Capacitor and Sentry/React-Native are using this format, currently the update changelog script is failing due to the presence of this comment session before the ## Unreleased header.
Run /home/runner/work/_temp/ghwf/updater/scripts/update-changelog.ps1 `
Found changelog: /home/runner/work/sentry-react-native/sentry-react-native/CHANGELOG.md
Exception: /home/runner/work/_temp/ghwf/updater/scripts/update-changelog.ps1:40
Line |
  40 |          throw "Unexpected changelog line - expecting a version header …
     |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     | Unexpected changelog line - expecting a version header at this point,
     | such as '## Unreleased', but found: '<!-- prettier-ignore-start -->'
Error: Process completed with exit code 1.

This PR allows those fields to be properly detected and also adds test to it.
Example of changelog with the comment:
# Changelog

<!-- prettier-ignore-start -->
> [!IMPORTANT]
> If you are upgrading to the `1.x` versions of the Sentry SDK from `0.x` or below,
> make sure you follow our [migration guide](https://docs.sentry.io/platforms/SDK/migration/) first.
<!-- prettier-ignore-end -->

## Unreleased

### Features

- Add support for prettier-ignore notes on `CHANGELOG.md` ...

## 2.10.0

Also, can you add a changelog entry as well?

Also, can you add a changelog entry as well?

Sure thing

Thank you @lucas-zimerman


crashes when another file is opened outside of the current work folder

This just started happening but it has been a few months since I used Brackets. But if I open Brackets it loads my current project folder and runs fine with no issue while opening multiple files in the same working folder. If however, I open another file outside of the current working folder, it crashes
I set the working folder, then open a PHP file
Then I set split view to vertical and open another version of the same file but from a different folder.
Expected: The ability to work with both files open
Actual: I can view both of them for about 30 to 45 seconds then the Brackets just crashes. I can duplicate issue if I do not use split view
Windows 10 pro version 1067 build: 14393.447
Brackets: Release 1.8 build 1.8.0-17108

This just started happening but it has been a few months since I used Brackets.  But if I open Brackets it loads my current project folder and runs fine with no issue while opening multiple files in the same working folder.  If however, I open another file outside of the current working folder, it crashes

I set the working folder, then open a PHP file

Then I set split view to vertical and open another version of the same file but from a different folder.

Expected: The ability to work with both files open
Actual: I can view both of them for about 30 to 45 seconds then the Brackets just crashes.  I can duplicate issue if I do not use split view
Windows 10 pro version 1067 build: 14393.447
Brackets: Release 1.8 build 1.8.0-17108

Tried to reproduce the issue. Opened a html file and set split view to vertical and opened another version of same file from different folder, brackets didn't crash. Version used: Release 1.8 build 1.8.0-17108. Could you reproduce it even now?

I can no longer reproduce but I haven't use Brackets that much since I had
the original issue. I ended up using my other app dreamweaver for that
particular task at hand. I will give it another go.  I really like bracket
awesome selection & edit tools.
Regards
David Terrazas
On Fri, Jan 6, 2017 at 12:00 AM, TMonika<EMAIL_ADDRESS>wrote:

Tried to reproduce the issue. Opened a html file and set split view to
vertical and opened another version of same file from different folder,
brackets didn't crash. Version used: Release 1.8 build 1.8.0-17108. Could
you reproduce it even now?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/adobe/brackets/issues/12987#issuecomment-270831733,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFqE72Bs9oChUq9-YDVR5Dp_ITXax21pks5rPcpWgaJpZM4LPVwb
.

--
David Terrazas
Web Designer/Developer
Colgate University
450H Case/Geyer
315-228-6586 or<PHONE_NUMBER>
M-F 6 am to 3 pm Eastern Time
*"I do not feel obliged to believe that the same God who has endowed us
with sense, reason, and intellect has intended us to forgo their use."
**Galileo
Galilei *


Start command fails if electron isn't at the root of node_modules

[x] I have read the contribution documentation for this project.
[x] I agree to follow the code of conduct that this project follows, as appropriate.
[x ] I have searched the issue tracker for an issue that matches the one I want to file, without success.

Please describe your issue:
When using electron-prebuilt-compile under npm 6.x, the electron package is sometimes located under node_modules/electron-prebuilt-compile/electron rather than node_modules/electron. This means forge start cannot start the application.
Console output when you run electron-forge with the environment variable DEBUG=electron-forge:*. (Instructions on how to do so here). Please include the stack trace if one exists.
env DEBUG="electron-forge:*" npm run start                                                                                4732ms  2018-07-06 02:54:10

><EMAIL_ADDRESS>start /path/to/my/my-app
> electron-forge start

WARNING: DEBUG environment variable detected.  Progress indicators will be sent over electron-forge:lifecycle
  electron-forge:async-ora Process Started: Checking your system +0ms
  electron-forge:check-system checking system, create ~/.skip-forge-system-check to stop doing this +0ms
  electron-forge:async-ora Process Succeeded: Checking your system -- after 504ms +504ms
WARNING: DEBUG environment variable detected.  Progress indicators will be sent over electron-forge:lifecycle
  electron-forge:async-ora Process Started: Locating Application +0ms
  electron-forge:project-resolver searching for project in: /path/to/my/my-app +0ms
  electron-forge:project-resolver electron-forge compatible package.json found in /path/to/my/my-app/package.json +15ms
  electron-forge:async-ora Process Succeeded: Locating Application -- after 16ms +16ms
  electron-forge:async-ora Process Started: Preparing native dependencies +6ms
  electron-forge:async-ora Process Succeeded: Preparing native dependencies -- after 192ms +192ms

An unhandled rejection has occurred inside Forge:
Cannot find module '/path/to/my/my-app/node_modules/electron'
Error: Cannot find module '/path/to/my/my-app/node_modules/electron'
    at Function.Module._resolveFilename (module.js:536:15)
    at Function.Module._load (module.js:466:25)
    at Module.require (module.js:579:17)
    at require (internal/module.js:11:18)
    at /path/to/my/my-app/node_modules/@electron-forge/core/src/api/start.ts:60:28
    at Generator.next (<anonymous>)
    at step (/path/to/my/my-app/node_modules/@electron-forge/core/dist/api/start.js:40:221)
    at _next (/path/to/my/my-app/node_modules/@electron-forge/core/dist/api/start.js:40:409)
    at /path/to/my/my-app/node_modules/@electron-forge/core/dist/api/start.js:40:477
    at new Promise (<anonymous>)
    at /path/to/my/my-app/node_modules/@electron-forge/core/dist/api/start.js:40:97
    at forgeSpawn (/path/to/my/my-app/node_modules/@electron-forge/core/src/api/start.ts:59:9)
    at /path/to/my/my-app/node_modules/@electron-forge/core/src/api/start.ts:55:25
    at Generator.next (<anonymous>)
    at step (/path/to/my/my-app/node_modules/@electron-forge/core/dist/api/start.js:40:221)
    at _next (/path/to/my/my-app/node_modules/@electron-forge/core/dist/api/sta

What command line arguments are you passing?

What does your config.forge data in package.json look like?
"forge": {
      "packagerConfig": {},
      "plugins": [
        [
          "@electron-forge/plugin-compile"
        ]
      ],
      "makers": [
        {
          "name": "@electron-forge/maker-squirrel",
          "config": {
            "name": "my_app"
          }
        },
        {
          "name": "@electron-forge/maker-zip",
          "platforms": [
            "darwin"
          ]
        },
        {
          "name": "@electron-forge/maker-deb",
          "config": {}
        },
        {
          "name": "@electron-forge/maker-rpm",
          "config": {}
        }
      ]
    }

Please provide either a failing minimal testcase (with a link to the code) or detailed steps to
reproduce your problem. Using electron-forge init is a good starting point, if that is not the
source of your problem.
This likely requires npm 6.x to reproduce, although I can imagine it occurring under similiar situations with other package managers.

Start a new app using @electron-forge/plugin-compile as a plugin
install electron-prebuilt-compile
run npm run start

ah, I misunderstood the problem. This line https://github.com/electron-userland/electron-forge/blob/master/packages/api/core/src/api/start.ts#L60 should be allowed to fail.  replacing that line with let electronExecPath; makes it start properly.


Add instant number readout to displays

Added instant number readout to displays. Fixes issue #8

Thanks Riley! We had a race condition and I did the same thing yesterday, which is now in #242 . I'd like to keep the version in that PR, for reasons explained in the PR description there.


Shipping+payment in the review page are not updated if changed

If you change shipping or payment method after the display of Review page, new values are not displayed.

Hi @stefano73it ,
If have fixed this one, Kindly clone from our git repository.


style: add checkstyle workflow & format code style

Currently, the code style is very bad. In the past, we have no CI workflow, so the bad-smell code can be added even the check fail.
This pr aims to:

add a GitHub Actions workflow to check code style when push or pull-request to master
format old code. Since the project is too big, I'll try to add checkstyle rules one by one and make it pass

in 5a48b68, I add google check rules to code style. But old code causes so many errors that most rules are commented. Hopefully, we will uncomment them all, someday 🙏 🙏 🙏


Cannot construct scene tree in the Getting Started

Godot version:
v3.1.1.stable.official
OS/device including version:
macOS High Sierra 10.13.6
Issue description:
I'm going through the tutorial here:
https://docs.godotengine.org/en/3.1/getting_started/step_by_step/scripting.html#scene-setup
After creating a panel and then right clicking and adding a label and button as a child, they do not show up in the Scene dialog. There is a picture with the scene tree and I cannot figure out how to get it to look like that.
Might be related to #23637
Maybe I'm doing something wrong as I am just getting started but would be happy to update the docs if that is the case.
Steps to reproduce:
Create new empty project. Add Panel as root node in scene. Add Label and Button as a child node (I used right click on Panel -> Add Child Node). Both do not show up in the Scene box on the left.
Minimal reproduction project:
N/A

Any screenshot/video of this happening? Aren't there any errors in the console? Isn't the tree folded? Is filter field empty? Is this reproducible in any project or happened once? (can't reproduce it btw)

I just made a scratch project and started to do a screen recording and this time it worked. Really not sure what I did differently. Sorry for the trouble.

For the future, if you find something that works in unexpected way, make sure it is a bug and it's reproducible. Vague issues with little details usually don't get any activity for months and just get closed.


Maths Quiz Game

Describe the project
This webapp is basically for kids to practice addition.
Issue Type:

[ ] Bug Report
[ ] Feature Request
[ ] Documentation
[x] New Project

Additional context
Add any other context or screenshots about the project here.
Screenshots

If applicable, add screenshots to help explain your problem.

Game projects are not accepted


Add RPC support for spring-cloud/spring-cloud-netflix

For now, I have not set the Milestone. Reply me, if you are certain what you are going to do. @ascrutae

In spring-cloud ecosystem, by default, the server-side use embed Tomcat (uncertain the version, yet), so maybe we already supported.

In client side, here is some answers from Adrian Cole, Spring
https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/client/support/HttpAccessor.html#setRequestFactory-org.springframework.http.client.ClientHttpRequestFactory-
so default for resttemplate (the normal rest library) is standard library (HttpUrlConnection), but it can use others like okhttp.

By doing this, please set a demo about spring-resttemplete. In theory, they should use the same i/o component.

Spring Cloud Netflix  ->  REST Client: Feign  ->  ApacheHttpClient/ribbon(maybe)/okhttp

cc @pengys5

Feign is a java to http client binder inspired by Retrofit, JAXRS-2.0, and WebSocket.
Spring Cloud integrates Ribbon and Eureka to provide a load balanced http client when using Feign.
Feign provide JAX-RS,OkHttp,httpclient,HttpURLConnection.
So if we provide JAX-RS,OkHttp,httpclient,HttpURLConnection plugins, skywalking will support spring cloud restful interface.

@pengys5 I think we should close this, right? We can support spring cloud config center in next version. Agree?


Protected settings are shown in plaintext for the output on Microsoft.Compute/virtualMachines/extensions

Describe the bug
Protected settings are shown in the output on Microsoft.Compute/virtualMachines/extensions
To Reproduce
Any VM extension that has protected settings.
See image:

https://docs.microsoft.com/en-us/azure/templates/microsoft.compute/2019-07-01/virtualmachines/extensions
--> https://docs.microsoft.com/en-us/azure/templates/microsoft.compute/2019-07-01/virtualmachines/extensions#virtualmachineextensionproperties-object

Sample of output where secret is shown.

similar issue to #4
Expected behavior
Protected settings should be obfuscated.

We will be masking protectedSettings in VM and VMSS extensions from now on. The fix has been committed to an internal repo and is awaiting deployment.

Nice one. :blush:

The fix for the reported issue has been deployed to all public regions. @brwilkinson, can you confirm that it's working?
In the course of the validation on my end, I discovered that VMSS lets you specify protectedSettings on Microsoft.Compute/virtualMachineScaleSets resources as well. The fix for that is coming :)

Closing the issue. Please reopen if needed.


--add: licensing and legal disclaimers

Fixes #43

Rename app from OSE Character Generator to Old-School Character Generator to comply with OSE 3rd party license
Use "Designed for use with Old-School Essentials" instead of App Description text, and link to Necrotic Gnome website
Move all licensing and legal disclaimers to Footer key, renamed from Created-By key

Another major change we might want to discuss if we have to release the source code under a compatible open-source license. I think CC BY-SA 4.0 or GPLv3 could work, but have to double check with Necrotic Gnome. We may need to license specific parts as OGL, like the class descriptions.


Clicking events (via plotOptions) not working

I am attempting to use plotOptions to add an event when someone clicks on a bar for a column type chart, however events in the plotOptions doesn't appear to work
Here is an example of it working when using highcharts normally
http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/plotoptions/series-point-events-click-column/
However when attempting to use the exact same options code in highcharts-ng, it doesn't work. Here is an example of what I am using currently http://jsfiddle.net/7cAq3/47/

inside the plot point click event, i count call $scope functions;
point: {
events: {
                        click: function () {
							$scope.addTab();
                        }
                    }
                }

$scope.addTab(); // this not seem works

Please don't comment on closed issues. Could you create a new issue with a jsfiddle?


Rename the binary to tsd?

I filed a support case at npmjs to get hold of the tsd package name.
@blakeembrey I saw you in the other thread and noticed that you are one of the co-authors of the tsd package :).

Jeeej, this finally happened!!!! 🎉🎉🎉🎉🎉🎉🎉

// @BendingBender FYI => https://github.com/SamVerschueren/tsd/releases/tag/v0.7.0


Let lcms manage it's own pinnings

it now has a run export.
https://github.com/conda-forge/lcms2-feedstock/blob/main/recipe/meta.yaml#L15
Checklist

[ ] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.


Textures and Models

We need some more textures and models for development.
Models (and textures to go with them):

[ ] Resistor
[ ] Diode (same model as resistor)
[ ] Capacitor (Ceramic)
[ ] Capacitor (Electrolytic)
[ ] Inductor
[ ] Wire
[ ] Voltage Source
[ ] Ground Pin
[ ] Diode
[ ] 12V Battery
[ ] Knife Switch
[ ] Light

I'd prefer these were made in something like Blockbench, but I think that we could consider OBJ models too at some point (please provide Blender files for these). Feel free to make both but I think we will start with more basic Blockbench-esque models (think how Create looks right now).
Textures:

[ ] 12V Battery (think car battery or marine battery)

I have attached:

Suggested models based on a 16x16 "3D pixel" grid
Photo of an inductor
Photo of a resistor
Photo of an electrolytic capacitor (note the white line in the capacitor for the negative, please add that to the texture)
Photo of a ceramic capacitor

The knife switch is roughly modeled after this, but I'm open to interpretations of that. It's not a particularly well thought out model.