[BUG] Schema is generated using field alias

Describe the bug
Schema that is generated in FasAPI /docs endpoint is generated with alias rather than the model field when in the route configuration it is specified the route will reply with the model fields instead of the model fields' alias. Route for endpoint is using response_model to define the response schema. I tried setting response_model_by_alias to False which correctly uses the model field's instead of mode field aliases in the response however the schema is wrong in this case.
To Reproduce
Steps to reproduce the behavior with a minimum self-contained file.
Replace each part with your own scenario:

Create a file with:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Transaction(BaseModel):
    id: ObjectIdStr = Field(..., alias='_id')
    loan_id: ObjectIdStr = Field(..., alias='loanId')

@app.get("/", response_model=Transaction, response_model_by_alias=False)
def read_root():
    return {"Hello": "World"}

Open the browser and call the endpoint /docs.
Check schema response vs the actual response and notice schema generated is inconsistent with the response.

Expected behavior
Schema should use the model fields instead of using model fields' alias when response_model_by_alias=False is set.
Environment

OS: Linux / Windows / macOS
FastAPI Version: 0.44
Python version: 3.8

@rappongy I believe what he's saying is if you have an alias in a model, the response model will transform the response using the alias regardless of the response_model_by_alias value. I'm not sure ObjectIdStr is relevant!

Anyone found a workaround for this?

I have found the cause of the issue in v. 0.52.0 but it can equally be found in the master branch.
The issue stems from not passing the by_alias flag to the openapi creation code when the schemas for the app's endpoints are created in this function:
https://github.com/tiangolo/fastapi/blob/0.52.0/fastapi/utils.py#L83-L85
Using OPs code, it can be reproduced with:
client = TestClient(app)
response = client.get('/v1/swagger.json')

Thanks for providing the "How to do it" example. Can confirm that it works, but it does make the code more convoluted. It becomes even more convoluted when bringing SQL Alchemy and orm_mode into the mix. Building on the same example, I could not get something like this to work:
@app.get("/", response_model=TransactionResponse)
def read_root():
    return db.query(TransactionModel).first()

The only way I got it to work was like this:
@app.get("/", response_model=TransactionResponse)
def read_root():
    transaction = db.query(TransactionModel).first()
    return TransactionResponse(**Transaction.from_orm(transaction).dict())

Please let me know if there is a less messy way!
Here's a complete self-contained example:
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from pydantic import BaseModel, Field
from fastapi import FastAPI, Depends

Base = declarative_base()

class TransactionModel(Base):
    __tablename__ = "transactions"
    _id = Column(Integer, primary_key=True)
    loanId = Column(String)
    name = Column(String)

class Transaction(BaseModel):
    id: str = Field(..., alias="_id")
    loan_id: str = Field(..., alias="loanId")
    name: str  # to show that you can reuse fields with inheritance

    class Config:
        orm_mode = True
        allow_population_by_field_name = True

class TransactionResponse(Transaction):
    id: str
    loan_id: str

app = FastAPI()

@app.get("/", response_model=TransactionResponse)
def read_root():
    transaction = TransactionModel(_id=1, loanId='ABC', name='Hello')

    return transaction  # <-- this does not work
    # return TransactionResponse(**Transaction.from_orm(transaction).dict())  # <-- this works, but looks messy

wish I had found this thread sooner! Looks like there is a pretty good workaround above but just in case it's helpful to anyone, I was able to patch pydantic so that it shows that it will accept the alias or the field

huge danger

Is there another way around besides @Bobronium solution ?


Release

We've recently merged a pr that adds support for Python 3.11 and 3.12 as well as ARM wheels for MAC, so should cut a new release

Sounds good -- I'll push one out with the dask release later today

Seems like there was a release commit https://github.com/dask/crick/commit/2f442dd8eebf5ee7e3308815406efe0eb608c40f, but no tagged release or published package on PyPI yet.
Is the propagation of the release blocked?

#51

It would be great to get a new release and wheels on PyPI soon that are built against Numpy 2.0, too:

https://github.com/dask/crick/issues/53

I'd be happy to help expedite this, but I guess this is a maintainer's job only.

there are wheels on Pypi, i.e. https://pypi.org/project/crick/#history
Would be great if you could look into the pytest failures, that will certainly help

Ah, nice with PyPI - I guess I was just missing 0.0.6 from the GitHub releases.
Pytest failures - the ticket mentioned above is about some non-standard build process (for rpm). I'll have a look, but can probably not help there.
FWIW, on a quick local check, the test suite passes for me.

pytest
========================================================================================================================================================================== test session starts ===========================================================================================================================================================================
platform darwin -- Python 3.9.12, pytest-8.3.2, pluggy-1.5.0 -- /home/.envs/crick-test/bin/python
cachedir: .pytest_cache
rootdir: /home/crick
configfile: setup.cfg
collected 97 items

crick/tests/test_space_saving.py::test_space_saving[float-data0] PASSED                                                                                [  1%]
crick/tests/test_space_saving.py::test_space_saving[int-data1] PASSED                                                                                [  2%]
crick/tests/test_space_saving.py::test_space_saving[object-data2] PASSED                                                                                [  3%]
crick/tests/test_space_saving.py::test_space_saving[object-data3] PASSED                                                                                [  4%]
crick/tests/test_space_saving.py::test_space_saving[object-data4] PASSED                                                                                [  5%]
crick/tests/test_space_saving.py::test_space_saving[float-data5] PASSED                                                                                [  6%]
crick/tests/test_space_saving.py::test_add_matches_update PASSED                                                                                [  7%]
crick/tests/test_space_saving.py::test_init PASSED                                                                                [  8%]
crick/tests/test_space_saving.py::test_algorithm PASSED                                                                                [  9%]
crick/tests/test_space_saving.py::test_object_reference_counting PASSED                                                                                [ 10%]
crick/tests/test_space_saving.py::test_object_hash_errors PASSED                                                                                [ 11%]
crick/tests/test_space_saving.py::test_weights PASSED                                                                                [ 12%]
crick/tests/test_space_saving.py::test_add_raises PASSED                                                                                [ 13%]
crick/tests/test_space_saving.py::test_update_raises PASSED                                                                                [ 14%]
crick/tests/test_space_saving.py::test_topk_invariants PASSED                                                                                [ 15%]
crick/tests/test_space_saving.py::test_serialize[float] PASSED                                                                                [ 16%]
crick/tests/test_space_saving.py::test_serialize[int] PASSED                                                                                [ 17%]
crick/tests/test_space_saving.py::test_serialize[object] PASSED                                                                                [ 18%]
crick/tests/test_space_saving.py::test_merge_algorithm[s10-s20] PASSED                                                                                [ 19%]
crick/tests/test_space_saving.py::test_merge_algorithm[s11-s21] PASSED                                                                                [ 20%]
crick/tests/test_space_saving.py::test_merge_algorithm[s12-s22] PASSED                                                                                [ 21%]
crick/tests/test_space_saving.py::test_merge_algorithm[s13-s23] PASSED                                                                                [ 22%]
crick/tests/test_space_saving.py::test_merge_algorithm[s14-s24] PASSED                                                                                [ 23%]
crick/tests/test_space_saving.py::test_merge_algorithm[s15-s25] PASSED                                                                                [ 24%]
crick/tests/test_space_saving.py::test_merge_algorithm[s16-s26] PASSED                                                                                [ 25%]
crick/tests/test_space_saving.py::test_merge_algorithm[s17-s27] PASSED                                                                                [ 26%]
crick/tests/test_space_saving.py::test_merge_algorithm[s18-s28] PASSED                                                                                [ 27%]
crick/tests/test_space_saving.py::test_merge_algorithm[s19-s29] PASSED                                                                                [ 28%]
crick/tests/test_space_saving.py::test_merge_algorithm[s110-s210] PASSED                                                                                [ 29%]
crick/tests/test_space_saving.py::test_merge_algorithm[s111-s211] PASSED                                                                                [ 30%]
crick/tests/test_space_saving.py::test_merge_errors PASSED                                                                                [ 31%]
crick/tests/test_stats.py::test_basic_stats[x0] PASSED                                                                                [ 32%]
crick/tests/test_stats.py::test_basic_stats[x1] PASSED                                                                                [ 34%]
crick/tests/test_stats.py::test_basic_stats[x2] PASSED                                                                                [ 35%]
crick/tests/test_stats.py::test_basic_stats[x3] PASSED                                                                                [ 36%]
crick/tests/test_stats.py::test_basic_stats[x4] PASSED                                                                                [ 37%]
crick/tests/test_stats.py::test_skew[True-x0] PASSED                                                                                [ 38%]
crick/tests/test_stats.py::test_skew[True-x1] PASSED                                                                                [ 39%]
crick/tests/test_stats.py::test_skew[True-x2] PASSED                                                                                [ 40%]
crick/tests/test_stats.py::test_skew[True-x3] PASSED                                                                                [ 41%]
crick/tests/test_stats.py::test_skew[True-x4] PASSED                                                                                [ 42%]
crick/tests/test_stats.py::test_skew[False-x0] PASSED                                                                                [ 43%]
crick/tests/test_stats.py::test_skew[False-x1] PASSED                                                                                [ 44%]
crick/tests/test_stats.py::test_skew[False-x2] PASSED                                                                                [ 45%]
crick/tests/test_stats.py::test_skew[False-x3] PASSED                                                                                [ 46%]
crick/tests/test_stats.py::test_skew[False-x4] PASSED                                                                                [ 47%]
crick/tests/test_stats.py::test_kurt[True-True-x0] PASSED                                                                                [ 48%]
crick/tests/test_stats.py::test_kurt[True-True-x1] PASSED                                                                                [ 49%]
crick/tests/test_stats.py::test_kurt[True-True-x2] PASSED                                                                                [ 50%]
crick/tests/test_stats.py::test_kurt[True-True-x3] PASSED                                                                                [ 51%]
crick/tests/test_stats.py::test_kurt[True-True-x4] PASSED                                                                                [ 52%]
crick/tests/test_stats.py::test_kurt[True-False-x0] PASSED                                                                                [ 53%]
crick/tests/test_stats.py::test_kurt[True-False-x1] PASSED                                                                                [ 54%]
crick/tests/test_stats.py::test_kurt[True-False-x2] PASSED                                                                                [ 55%]
crick/tests/test_stats.py::test_kurt[True-False-x3] PASSED                                                                                [ 56%]
crick/tests/test_stats.py::test_kurt[True-False-x4] PASSED                                                                                [ 57%]
crick/tests/test_stats.py::test_kurt[False-True-x0] PASSED                                                                                [ 58%]
crick/tests/test_stats.py::test_kurt[False-True-x1] PASSED                                                                                [ 59%]
crick/tests/test_stats.py::test_kurt[False-True-x2] PASSED                                                                                [ 60%]
crick/tests/test_stats.py::test_kurt[False-True-x3] PASSED                                                                                [ 61%]
crick/tests/test_stats.py::test_kurt[False-True-x4] PASSED                                                                                [ 62%]
crick/tests/test_stats.py::test_kurt[False-False-x0] PASSED                                                                                [ 63%]
crick/tests/test_stats.py::test_kurt[False-False-x1] PASSED                                                                                [ 64%]
crick/tests/test_stats.py::test_kurt[False-False-x2] PASSED                                                                                [ 65%]
crick/tests/test_stats.py::test_kurt[False-False-x3] PASSED                                                                                [ 67%]
crick/tests/test_stats.py::test_kurt[False-False-x4] PASSED                                                                                [ 68%]
crick/tests/test_stats.py::test_pickle[x0] PASSED                                                                                [ 69%]
crick/tests/test_stats.py::test_pickle[x1] PASSED                                                                                [ 70%]
crick/tests/test_stats.py::test_repr PASSED                                                                                [ 71%]
crick/tests/test_stats.py::test_weights PASSED                                                                                [ 72%]
crick/tests/test_stats.py::test_add_update_errors PASSED                                                                                [ 73%]
crick/tests/test_stats.py::test_merge PASSED                                                                                [ 74%]
crick/tests/test_tdigest.py::test_distributions[data0] PASSED                                                                                [ 75%]
crick/tests/test_tdigest.py::test_distributions[data1] PASSED                                                                                [ 76%]
crick/tests/test_tdigest.py::test_distributions[data2] PASSED                                                                                [ 77%]
crick/tests/test_tdigest.py::test_distributions[data3] PASSED                                                                                [ 78%]
crick/tests/test_tdigest.py::test_distributions[data4] PASSED                                                                                [ 79%]
crick/tests/test_tdigest.py::test_distributions[data5] PASSED                                                                                [ 80%]
crick/tests/test_tdigest.py::test_distributions[data6] PASSED                                                                                [ 81%]
crick/tests/test_tdigest.py::test_distributions[data7] PASSED                                                                                [ 82%]
crick/tests/test_tdigest.py::test_init PASSED                                                                                [ 83%]
crick/tests/test_tdigest.py::test_repr PASSED                                                                                [ 84%]
crick/tests/test_tdigest.py::test_empty PASSED                                                                                [ 85%]
crick/tests/test_tdigest.py::test_single PASSED                                                                                [ 86%]
crick/tests/test_tdigest.py::test_nonfinite PASSED                                                                                [ 87%]
crick/tests/test_tdigest.py::test_small_w PASSED                                                                                [ 88%]
crick/tests/test_tdigest.py::test_update_non_numeric_errors PASSED                                                                                [ 89%]
crick/tests/test_tdigest.py::test_quantile_and_cdf_non_numeric PASSED                                                                                [ 90%]
crick/tests/test_tdigest.py::test_quantile_and_cdf_shape PASSED                                                                                [ 91%]
crick/tests/test_tdigest.py::test_histogram PASSED                                                                                [ 92%]
crick/tests/test_tdigest.py::test_histogram_small_n PASSED                                                                                [ 93%]
crick/tests/test_tdigest.py::test_histogram_empty PASSED                                                                                [ 94%]
crick/tests/test_tdigest.py::test_histogram_errors PASSED                                                                                [ 95%]
crick/tests/test_tdigest.py::test_weights PASSED                                                                                [ 96%]
crick/tests/test_tdigest.py::test_serialize PASSED                                                                                [ 97%]
crick/tests/test_tdigest.py::test_merge PASSED                                                                                [ 98%]
crick/tests/test_tdigest.py::test_scale PASSED                                                                                [100%]

============================================================================================================================================================================ warnings summary ============================================================================================================================================================================
crick/tests/test_stats.py::test_skew[True-x3]
crick/tests/test_stats.py::test_skew[False-x3]
  /Users/jonassolvsteen/Code/crick/crick/tests/test_stats.py:62: RuntimeWarning: Precision loss occurred in moment calculation due to catastrophic cancellation. This occurs when the data are nearly identical. Results may be unreliable.
    sol = stats.skew(x[~np.isnan(x)], bias=bias) if len(x) else np.nan

crick/tests/test_stats.py::test_kurt[True-True-x3]
crick/tests/test_stats.py::test_kurt[True-False-x3]
crick/tests/test_stats.py::test_kurt[False-True-x3]
crick/tests/test_stats.py::test_kurt[False-False-x3]
  /Users/jonassolvsteen/Code/crick/crick/tests/test_stats.py:85: RuntimeWarning: Precision loss occurred in moment calculation due to catastrophic cancellation. This occurs when the data are nearly identical.

Here's a GitHub release for 0.0.6 https://github.com/dask/crick/releases/tag/0.0.6


Refactor update base image's form info

This PR creates GraphQL fragment for data into UpdateBaseImage form and uses it in the BaseImage page. It also gets rid of relay/unused-fields ESlint warning for the mentioned page.
This PR also gets rid of relay/unused-fields ESlint warning for the BaseImage page.

Closing as superseded by #505


⚠ Bofrost.lu has degraded performance

In ea15242, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1095 ms

Resolved: Bofrost.lu performance has improved in 55efe94 after 6 minutes.


Anyone stil using this?

Apparently not. It'd be nice to know if it was dropped because the code is a mess, or if it could be maintained by someone else.

It's a promising project, would be really nice if it can get maintained by someone else

It'd be nice to know if it was dropped

A google away 2016. But don't worry it is open source and anybody can take the examples, documents and engine and create the html5 game of their dreams...

because the code is a mess,

Got any references or examples what needs in-proving, before making such negativity?

You misunderstood me. Sorry. I meant that it would be nice to know if it was dropped because the code is a mess, not that it would be nice to know if it was dropped because the code is a mess.

@carlsmith thanks for clearing that, I was also overzealous, so need to apologize as well.

Mature projects are normally maintained by somebody,

As for qici it seems they moved onto another engine(lazer). qici is based on phaser 2.3(current v2.9) and they made changes to phaser 2.3 that makes it hard to upgrade, more info in this comment.

few people will start a project with abandoned libraries

True, and it saddens me because I like qici. I just hope everything gets nicely preserved on github for educational and historical purposes.

it looks like no one else is going to.

Yes it seems no-one at the moment have moved up to the plate to try and swing the bat.
hype and dev
Qici caught my eye at the end of its hype train. Gamedev is hard even with a tool and documentation like this. Its not the code, dragging or dropping that makes it hard/easy. Its the understanding of the entity model, component systems and how game objects/worlds interact.
Qici makes this a lot easier, but at a bit of a steep learning curve and you might need to be willing to use google translate for the Chinese.
what I think the problem is/was
But I feel there a backstory with the first interaction on github, and I don't want to create something if there is nothing, so this might just be me taking crazy pills.
The github community stepped a bit on toes by just decompiling the proprietary editor code. And without any other input suggesting the name needs to change... Im sticking to gamedev is HARD and even with a great engine, docs, examples, cookbooks it is still difficult to pickup if you don't have someone showing you the way.


The settings page can not be displayed

I using NodeBB v1.4.6.
The browser does not show the new page after click Elasticsearch, and then I refreshed the page, the browser displays such an error message:
/admin/plugins/elasticsearch

Failed to lookup view "admin/plugins/elasticsearch" in views directory "/Volumes/Home/NodeBB/build/public/templates"

Did you find any solution to this ? I have the same issue.

in the log of nodebb, I have this error:

/assets/templates/admin/plugins/elasticsearch.tpl  404 NOT FOUND

I fixed this issue by running this command in my forum folder:
./nodebb build


 Also wio always generates the example files output.h, output.cpp, and the tests/main.cpp. These should ONLY be optional like with a --example flag when creating. Otherwise it should generate a blank project.
The information should be in a README or wiki

Okay, I will make the example files optional. Fair point to add a flag for people who want an example. In terms of comments, I will make it so that it generates these comments the first time and after that, with an update, it won't generate them anymore


caffe training speed  is very slow

@Tomcli   Another question: when I use my own image and data (using host-mount) for caffe training, I find it spends a long time for just 100 iters, from the log I find it spends most time on data Transform、Prefetch batch, etc. I don't know how it works?   Thank you.
caffe gpu-manifest.yml:

caffe training logs:

@Tomcli    I am also confused about the number of gpus and learners, what I understand is each learner can use the number of gpus I set, eg:

gpus is set 2, learners is also set 2, so each learner uses 2 gpus, 2 learners use 4 gpus, what I say is right?  If it is right, what I want to know is that each learner runs the same code for training, I mean each learner just runs independently and saves 2 different models (2 learners for training).
Or what I just say is wrong, although it has 2 learners, and each learner has 2 gpus, it will just save one model for the training job, I mean the training job uses 4 gpus for distributed training.
I don't know which one is right or both are wrong.
Can you explain the relationship between gpus and learners?
Thank you.

Hi @Eric-Zhang1990, the bottleneck of your Caffe job is the CPU specs. With 0.5 CPU, preprocessing will take significantly more time than training the actual model. For our Caffe example running on GPU, I will recommend to put at least 2 cpus.
For the manifest specs, you are correct that the amount of gpus, cpus, and memory on the manifest are for each learner. you can find the details of the manifest specs at https://github.com/IBM/FfDL/blob/master/docs/user-guide.md#24-creating-manifest-file
Thanks.

@Tomcli   Thank you for your kind reply. I see the info at https://github.com/IBM/FfDL/blob/master/docs/user-guide.md#24-creating-manifest-file, I also run multi learners for one training job, what I am confused is if I use multi learners for one job, what I want to know is that the number of models I get is equal to number of learners, or although I use multi learners for one training job, I just get one model?
Thank you.

@Tomcli   Today I want to run   using FfDL, but I encounter the following error, do you have run some bigger project on FfDL successfully?

@Tomcli  I want to run maskrcnn-benchmark project (https://github.com/facebookresearch/maskrcnn-benchmark),

but I find NOTE in https://github.com/IBM/FfDL/blob/master/docs/user-guide.md#24-creating-manifest-file (Note that all model definition files has to be in the first level of the zip file and there are no nested directories in the zip file.), which means I can't run job which has multi directories, right?
However, all our projects have multi directories, how can I run them on FfDL?
Thank you.


Architecture, choose stack

[ ] backend
[ ] frontend

as this is a real-time game, we will use web sockets for real-time updates.
let's set some boundaries: 13 players max are allowed in a single game and 100 concurrent games at the same time.
so it's like 1300 concurrent connections if we will use 1 connection per client. such amount of connections should be handled by a single server. it looks like it should be easy enough for any stack :) but I would like to play around with some new ruby gems or to check what's new in Elixir world.

polyphony looks promising https://digital-fabric.github.io/polyphony/getting-started/overview/#taking-polyphony-for-a-spin

Phoenix also looks promising https://hexdocs.pm/phoenix/Phoenix.Channel.html#content
But it will take time to properly set the whole Elixir infrastructure on my side. So maybe later.


Update in security settings

In the document, the third option was confusing and updated to Enabled Microsoft network client: Digitally sign communications (if server agrees).
This is also placed in the rest of the policy sections.
https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/smbv1-microsoft-network-server-digitally-sign-communications-always
https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/smbv1-microsoft-network-client-digitally-sign-communications-if-server-agrees
https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/smbv1-microsoft-network-server-digitally-sign-communications-always
Problem: https://github.com/MicrosoftDocs/windows-itpro-docs/issues/4883

Thanks for merging this PR @Dansimp!


Support browser monitoring script for use with next/script

Feature Description
At the moment you can get the script snippet for the browser monitoring via newrelic.getBrowserTimingHeader() in the getServerSideProps method. This is a full string including

It looks like my issue is a duplicate to #62. But maybe we can use this issue to extend the docs and typescript types of the page.

Hi @fmacherey, I'm glad you found #62. We will update the docs in that ticket. It's just we haven't prioritized this work yet due to other priorities.


Question about the action Token and image augmentation

action_token_out = transformer_out[:, :, 0, :].
Hello, i don't know why directly take the first dimension of the output as the action_token_out. After your grouping, the grouped input should follow this order: spatial_context_feature + region_feature + action_token + other obs feature. Would the dimension be changed when they pass through the transformer_decoder?
In addition, about the image augmentation (padding + random_crop), how many crops did you take? I saw around the code, only take the default value:  num_crops=1. Doesn't the global feature really get lost if there is only one? Because i saw your code, the feature map is extracted from the cropped image.
Could you help me figure out why and how? Thanks a lot

Hi,

Hello, i don't know why directly take the first dimension of the output as the action_token_out. After your grouping, the grouped input should follow this order: spatial_context_feature + region_feature + action_token + other obs feature. Would the dimension be changed when they pass through the transformer_decoder?

https://github.com/UT-Austin-RPL/VIOLA/blob/1e8b5ae90e73a1c2a33a369323117cd8d7b0ef36/viola_bc/modules.py#L2194
you can see that action token is always assumed to be the first one.

In addition, about the image augmentation (padding + random_crop), how many crops did you take? I saw around the code, only take the default value: num_crops=1. Doesn't the global feature really get lost if there is only one? Because i saw your code, the feature map is extracted from the cropped image.

The random cropping is just for shifting pixels by 4 or 8 (I forgot the exact numbers). So the cropped image should contain most of the information even after random cropping.


Standardize/configure date format for CSV files for plans, users

I should see the same formatting for dates in all downloaded CSV files. Current date format is configured correctly for US plans data (screenshot 1 - MM/DD/YY). It should be the same for US users data (screenshot 2). And DD/MM/YY for UK plans and users data.
if you prefer a different format @sjDCC i'm fine with anything as long as it's standardized for all CSVs.
US plans CSV file

US users CSV file (incorrect date formatting)

I would prefer them to be DD/MM/YY. Just checked on DMPonline and that's what we use in My Dashboard

Given that a different mode is prevalent in each of our contexts, should we write out months with an abbreviated form instead (e.g. 23 Oct 2018) or make this a variable to configure per instance (if not too difficult / lots of work)?
Agree that it should be consistent across all tables and downloads

date field config looking good. closing issue.


Simple flow assistance needed

Hi there
I have been able to get to a point where node-red sees my instance of voice2json installed via deb package on raspberry pi.
Unfortunately the documentation is a bit vague as there are no simple flow examples to work from.
I have added words to the vocab file and sentences.ini and is transcribed perfectly from cli.  But I need a flow to run on boot to be triggered by a sentence to trigger a relay for 20 seconds.  I can already manually trigger the relay part of the flow but voice is still not running like it should
Urgently need assistance
Regards

There are examples for every node in the examples category. They are described in the readme sections for every single node. There is also this part in the wiki that’s is still work in progress.
Can you describe your setup to me?
Do you want to start listening for a wake-word from the start of nodered and when this wake word is spoken start recording a command to be transcribed?
Please describe in more detail what you want to achieve.
If you already wrote your sentences to the sentences.ini from outside nodered the first step will be to make a new voice2json configuration from any of the nodes and enter the path to your language profile folder. Than click the load sentences button so that you can see and edit those sentences from within nodered. I guess you already trained the profile.
For further steps you will have to give me more details on your setup and what exactly you want to achieve. Johannes

Raspberry Pi 3b  + Rasbian lite
debian package of voice2json installed
usb audio device is set as default and only and works via voice2json cli
I need to trigger a flow that handles a relay via gpio.  That flow currently works in manual execute
voice2json input  needs to trigger that flow.  attatched is relay trigger flow

If I need to use a wake word thats fine actually preferable and then
request with intent and then trigger the relay flow
On Wed, 15 Jul 2020, 17:56 Johannes Kropf<EMAIL_ADDRESS>wrote:

There are examples for every node in the examples category. They are
described in the readme sections for every single node. If you import them
from the examples section of the the nodered import menu every example flow
comes with a comment node that describes its usage. There is also this
part
https://github.com/johanneskropf/node-red-contrib-voice2json/wiki/Getting-started---Step-by-step-tutorial
in the wiki that’s is still work in progress.
Can you describe your setup to me?
Do you want to start listening for a wake-word from the start of nodered
and when this wake word is spoken start recording a command to be
transcribed?
Please describe in more detail what you want to achieve.
If you already wrote your sentences to the sentences.ini from outside
nodered the first step will be to make a new voice2json configuration from
any of the nodes and enter the path to your language profile folder. Than
click the load sentences button so that you can see and edit those
sentences from within nodered. I guess you already trained the profile.
For further steps you will have to give me more details on your setup and
what exactly you want to achieve. Johannes
edit
Ps you can also find me over on the nodered or Rhasspy forum as JGKK
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/johanneskropf/node-red-contrib-voice2json/issues/3#issuecomment-658839332,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AOR3576OWNQBRC7OBIIGHSTR3XGSDANCNFSM4O2UN3CQ
.

Lets start simple.
So you will need a microphone node like either node-red-contrib-contrib-sox-utils or the mic node to get the audio stream from your mic into nodered.
Lets start without a wakeword and with a manually triggered recording.

[{"id":"8949ab64.5f43e8","type":"tab","label":"Flow 3","disabled":false,"info":""},{"id":"de8c0877.6c7f8","type":"inject","z":"8949ab64.5f43e8","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"start","payloadType":"str","x":210,"y":220,"wires":[["302c2a0.672d856"]]},{"id":"302c2a0.672d856","type":"sox-record","z":"8949ab64.5f43e8","name":"","buttonStart":"msg","inputs":1,"inputSource":"1,0","byteOrder":"-L","encoding":"signed-integer","channels":1,"rate":16000,"bits":16,"gain":"0","lowpass":8000,"showDuration":false,"durationType":"forever","durationLength":0,"silenceDetection":"nothing","silenceDuration":"2.0","silenceThreshold":"2.0","outputFormat":"stream","manualPath":"","debugOutput":false,"x":370,"y":220,"wires":[["e5c055d7.ba08c"],[]]},{"id":"e5c055d7.ba08c","type":"voice2json-record-command","z":"8949ab64.5f43e8","name":"","voice2JsonConfig":"d282ff11.6aa1e8","inputField":"payload","outputField":"payload","x":610,"y":220,"wires":[["379a4a1f.625106","cd96691a.f23098"]]},{"id":"379a4a1f.625106","type":"change","z":"8949ab64.5f43e8","name":"stop","rules":[{"t":"set","p":"payload","pt":"msg","to":"stop","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":450,"y":280,"wires":[["302c2a0.672d856"]]},{"id":"cd96691a.f23098","type":"voice2json-stt","z":"8949ab64.5f43e8","name":"","voice2JsonConfig":"d282ff11.6aa1e8","inputField":"payload","controlField":"control","outputField":"payload","autoStart":true,"x":860,"y":220,"wires":[["c1bcc853.9ec218"]]},{"id":"c1bcc853.9ec218","type":"debug","z":"8949ab64.5f43e8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1050,"y":220,"wires":[]},{"id":"d282ff11.6aa1e8","type":"voice2json-config","z":"","profilePath":"/home/pi/de_kaldi-zamia","name":"","sentences":"[GetTime]\nwie spät ist es\nsag mir die uhrzeit\n\n[GetTemperature]\nwie ist die temperatur\nwie (heiß | kalt) ist es\n\n[GetGarageState]\nist das garagentor (offen | geschlossen)\n\n[ChangeLightState]\nlight_name = (wohnzimmerlampe | garagenlicht) {name}\nlight_state = (ein | aus) {state}\nschalte (die | das) <light_name> <light_state>","slots":[{"fileName":"rhasspy/number","managedBy":"external","fileContent":null,"executable":true}],"removeSlots":false}]

This needs sox-utils nodes and sox installed.
When you imported that flow choose your microphone in the record node and change the config to your voice2json config in the voice2json node.
Now if you inject start it will start recording your command from the microphone stream and than send the recorded command to the stt node where it will be transcribed and than output an object that include the transcription. Get back to me if you have questions. Once you have it working get back to me and we will work from there.

Hi there, many thanks, will get to it right now :-) and test

The steps to add a profile folder that already has sentences is as follows (just to make sure):

Open any of the voice2json nodes
click on the config dropdown and click add new
in the config screen that opens put in the absolute path to the location of the language profile folder you want to use
click the load sentences button in the top left of the sentences edit window and confirm to load existing sentences
give a unique name to the config
save config and set the voice2json nodes you want to use to this saved config
if the profile is not trained yet set a train node to the config and inject a msg.payload of train
the functions for each node are described in the info tab on the right side

Training and voice2json palette nodes are already installed.
On Wed, 15 Jul 2020, 18:29 Johannes Kropf<EMAIL_ADDRESS>wrote:

The steps to add a profile folder that already has sentences is as follows
(just to make sure):

Open any of the voice2json nodes
click on the config dropdown and click add new
in the config screen that opens put in the absolute path to the
location of the language profile folder you want to use
click the load sentences button in the top left of the sentences
edit window and confirm to load existing sentences
give a unique name to the config
save config and set the voice2json nodes you want to use to this
saved config
if the profile is not trained yet set a train node to the config and
inject a msg.payload of train
the functions for each node are described in the info tab on the
right side

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/johanneskropf/node-red-contrib-voice2json/issues/3#issuecomment-658865528,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AOR357YK3EGKPCWREKAYB6DR3XKNDANCNFSM4O2UN3CQ
.

Have you checked that the record node is set up properly? connect a debug to the second output and click the checkbox for debug output at the bottom of the node config. And show me the debug output.

You will have to inject start by clicking on the inject node everytime you want to start recording a command in the example i posted above. Just to make sure thats understood.

Ok I picked that up so I tested with your flow and added extra output to the debug node and that worked.  Then I copied it to a new flow, took out the stop node and triggered so it keeps listening. and this is the out put

But I think I do understand the importance of having a wake word as it then listens for the command withou voice2json going bonkers  so the first one with the stop added also works so its to add a wake word and then link that intent or sentence to trigger my relay flow .  Thank you for you help thus far, awaiting your reply

Right now when you press start without the stop when it detected that you finished speaking the command it will start recording/listening for a command again. So if you don’t speak a second command it will time out after 30 seconds and throw an error and than try to record a command again.
So if you would try to use it this way in a real world scenario it would send any speech everytime you finished speaking to the stt node. This would give you a lot of random transcriptions and false positives as the stt node would try to transcribe anything you say that wasn’t even meant for it and try fit it into the limited language model defined by your sentences.
This why you need some way to only trigger the recording of a command when you actually want to speak one. That’s why there is wake words like hey siri , alexa or ok google and so on in every assistant as they wouldn’t work otherwise. As they have no way to know what is a command or what is just random audio/conversation without a trigger that precedes the command. This doesn’t have to be a wakeword. This could also be a button connected to a raspberry pi’s gpios or a button in a dashboard.
Voice2json comes with the hey mycroft wake word preinstalled as it uses mycroft precise engine for wake word detection.
But you can also train your own wake word for precise and define that in the profile.yml. But be aware that training your own precise model is quite an involved process.
So to summarize: The wake word acts as a gate so that only speech gets recorded for command transcription that is actually intended for the assistant/voice2json and actually includes a command.

Here is the same flow with an added wake word (by default hey mycroft)

[{"id":"8949ab64.5f43e8","type":"tab","label":"Flow 3","disabled":false,"info":""},{"id":"de8c0877.6c7f8","type":"inject","z":"8949ab64.5f43e8","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"start","payloadType":"str","x":210,"y":220,"wires":[["302c2a0.672d856"]]},{"id":"302c2a0.672d856","type":"sox-record","z":"8949ab64.5f43e8","name":"","buttonStart":"msg","inputs":1,"inputSource":"1,0","byteOrder":"-L","encoding":"signed-integer","channels":1,"rate":16000,"bits":16,"gain":"0","lowpass":8000,"showDuration":false,"durationType":"forever","durationLength":0,"silenceDetection":"nothing","silenceDuration":"2.0","silenceThreshold":"2.0","outputFormat":"stream","manualPath":"","debugOutput":false,"x":370,"y":220,"wires":[["cf71d299.5ca778"],[]]},{"id":"e5c055d7.ba08c","type":"voice2json-record-command","z":"8949ab64.5f43e8","name":"","voice2JsonConfig":"d282ff11.6aa1e8","inputField":"payload","outputField":"payload","x":850,"y":220,"wires":[["379a4a1f.625106","cd96691a.f23098"]]},{"id":"379a4a1f.625106","type":"change","z":"8949ab64.5f43e8","name":"listen","rules":[{"t":"set","p":"control","pt":"msg","to":"listen","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":280,"wires":[["cf71d299.5ca778"]]},{"id":"cd96691a.f23098","type":"voice2json-stt","z":"8949ab64.5f43e8","name":"","voice2JsonConfig":"d282ff11.6aa1e8","inputField":"payload","controlField":"control","outputField":"payload","autoStart":true,"x":1100,"y":220,"wires":[["c1bcc853.9ec218"]]},{"id":"c1bcc853.9ec218","type":"debug","z":"8949ab64.5f43e8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1290,"y":220,"wires":[]},{"id":"cf71d299.5ca778","type":"voice2json-wait-wake","z":"8949ab64.5f43e8","name":"","voice2JsonConfig":"d282ff11.6aa1e8","inputField":"payload","controlField":"control","outputField":"payload","nonContinousListen":true,"x":580,"y":220,"wires":[["66c5eb62.a0180c"],["e5c055d7.ba08c"]]},{"id":"66c5eb62.a0180c","type":"debug","z":"8949ab64.5f43e8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":790,"y":160,"wires":[]},{"id":"d282ff11.6aa1e8","type":"voice2json-config","z":"","profilePath":"/home/pi/de_kaldi-zamia","name":"","sentences":"[GetTime]\nwie spät ist es\nsag mir die uhrzeit\n\n[GetTemperature]\nwie ist die temperatur\nwie (heiß | kalt) ist es\n\n[GetGarageState]\nist das garagentor (offen | geschlossen)\n\n[ChangeLightState]\nlight_name = (wohnzimmerlampe | garagenlicht) {name}\nlight_state = (ein | aus) {state}\nschalte (die | das) <light_name> <light_state>","slots":[{"fileName":"rhasspy/number","managedBy":"external","fileContent":null,"executable":true}],"removeSlots":false}]

Of course do t forget to set the correct voice2json profile in all nodes and correctly configure the record node for your input device before deploying (so same as for the previous flow).
Here once you have injected start once it will continue to listen for a wakeword forever and everytime it hears it it will start recording a command. Once it things the command was finished it starts listening for a wake word again.

ok let me create another tab and run.  Many thanks.  Will get back in a few.

I really recommend you also read this section and the linked parts in the voice2json documentation
https://github.com/johanneskropf/node-red-contrib-voice2json#advanced-topics

Well the wake word method works :-) -  I would need to make the wakeword hello, as where this is being used its needs to be that simple

Just a slight wrinkle still need to manually start the flow by clicking on the blue tab on the inject node

The documentation on training a very basic wakeword model can be found here:
https://github.com/MycroftAI/mycroft-precise/wiki/Training-your-own-wake-word#how-to-train-your-own-wake-word
be aware that such a short phrase as hello will give you lots of false positives.
To auto start set the start inject node to inject once after 10 seconds or something from the inject nodes config.

Ah ok, I will look to for another wake word, many thanks for the assist.  Let me make some backups first and then experiment as this is very close to working :-)

I managed to get it all working many thanks
[
{
"id": "80cde23.fdcfb2",
"type": "tab",
"label": "wakeword",
"disabled": false,
"info": ""
},
{
"id": "38e0c57c.a4530a",
"type": "inject",
"z": "80cde23.fdcfb2",
"name": "",
"props": [
{
"p": "payload"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": "5",
"topic": "",
"payload": "start",
"payloadType": "str",
"x": 110,
"y": 400,
"wires": [
[
"78fa719a.b761a"
]
]
},
{
"id": "78fa719a.b761a",
"type": "sox-record",
"z": "80cde23.fdcfb2",
"name": "",
"buttonStart": "msg",
"inputs": 1,
"inputSource": "0,0",
"byteOrder": "-L",
"encoding": "signed-integer",
"channels": 1,
"rate": 16000,
"bits": 16,
"gain": "0",
"lowpass": 8000,
"showDuration": false,
"durationType": "forever",
"durationLength": 0,
"silenceDetection": "nothing",
"silenceDuration": "2.0",
"silenceThreshold": "2.0",
"outputFormat": "stream",
"manualPath": "",
"debugOutput": false,
"x": 270,
"y": 140,
"wires": [
[
"e8b85f5e.ed926"
],
[]
]
},
{
"id": "82e25186.6ea89",
"type": "voice2json-record-command",
"z": "80cde23.fdcfb2",
"name": "",
"voice2JsonConfig": "aa3ded1f.a0f4d",
"inputField": "payload",
"outputField": "payload",
"x": 730,
"y": 240,
"wires": [
[
"af12f0aa.66484",
"210b3e1a.d60882"
]
]
},
{
"id": "af12f0aa.66484",
"type": "change",
"z": "80cde23.fdcfb2",
"name": "listen",
"rules": [
{
"t": "set",
"p": "control",
"pt": "msg",
"to": "listen",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 570,
"y": 480,
"wires": [
[
"e8b85f5e.ed926"
]
]
},
{
"id": "210b3e1a.d60882",
"type": "voice2json-stt",
"z": "80cde23.fdcfb2",
"name": "",
"voice2JsonConfig": "aa3ded1f.a0f4d",
"inputField": "payload",
"controlField": "control",
"outputField": "payload",
"autoStart": true,
"x": 940,
"y": 180,
"wires": [
[
"66d867d2.1d0458",
"37a7238c.e9f1ac"
]
]
},
{
"id": "66d867d2.1d0458",
"type": "debug",
"z": "80cde23.fdcfb2",
"name": "main",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1150,
"y": 180,
"wires": []
},
{
"id": "e8b85f5e.ed926",
"type": "voice2json-wait-wake",
"z": "80cde23.fdcfb2",
"name": "",
"voice2JsonConfig": "aa3ded1f.a0f4d",
"inputField": "payload",
"controlField": "control",
"outputField": "payload",
"nonContinousListen": true,
"x": 460,
"y": 240,
"wires": [
[],
[
"82e25186.6ea89"
]
]
},
{
"id": "9f2c59d6.f72718",
"type": "trigger",
"z": "80cde23.fdcfb2",
"name": "",
"op1": "0",
"op2": "1",
"op1type": "num",
"op2type": "num",
"duration": "20",
"extend": false,
"units": "s",
"reset": "",
"bytopic": "topic",
"topic": "topic",
"outputs": 1,
"x": 1290,
"y": 300,
"wires": [
[
"1bf8ffa2.e7934"
]
]
},
{
"id": "1bf8ffa2.e7934",
"type": "rpi-gpio out",
"z": "80cde23.fdcfb2",
"name": "",
"pin": "11",
"set": true,
"level": "1",
"freq": "",
"out": "out",
"x": 1320,
"y": 420,
"wires": []
},
{
"id": "37a7238c.e9f1ac",
"type": "function",
"z": "80cde23.fdcfb2",
"name": "outputTrue",
"func": "if (msg.payload.text == 'turn on the dispenser') {\nmsg.payload = 0\nreturn msg\n}",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"x": 1060,
"y": 380,
"wires": [
[
"9f2c59d6.f72718",
"f0f20a96.1a0d68"
]
]
},
{
"id": "f0f20a96.1a0d68",
"type": "debug",
"z": "80cde23.fdcfb2",
"name": "FunctionDebugOut",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "payload",
"targetType": "msg",
"statusVal": "",
"statusType": "auto",
"x": 1300,
"y": 600,
"wires": []
},
{
"id": "aa3ded1f.a0f4d",
"type": "voice2json-config",
"z": "",
"profilePath": "/home/pi/.config/voice2json/",
"name": "enUsKaldi",
"sentences": "[GetTime]\nwhat time is it\ntell me the time\n\n[GetTemperature]\nwhats the temperature\nhow (hot | cold) is it\n\n[GetGarageState]\nis the garage door (open | closed)\n\n[ChangeLightState]\nlight_name = ((living room lamp | garage light) {name}) | <ChangeLightColor.light_name>\nlight_state = (on | off) {state}\n\nturn <light_state> [the] <light_name>\nturn [the] <light_name> <light_state>\n\n[ChangeLightColor]\nlight_name = (bedroom light) {name}\ncolor = (red | green | blue) {color}\n\nset [the] <light_name> [to] \nmake [the] <light_name> \n\n[ChangeDispenserState]\ndispenser_name = ((dispenser) {name})\ndispenser_state = (on | off) {state}\n\nturn <dispenser_state> [the] <dispenser_name>\nturn [the] <dispenser_name> <dispenser_state>\n",
"slots": [
{
"fileName": "rhasspy/number",
"managedBy": "external",
"fileContent": null,
"executable": true
}
],
"removeSlots": false
}
]


Incompatible pytz version

flexget 3.1.74 requires pytz 2017.x version, but it can't work when loading plugins:
AttributeError: module 'pytz' has no attribute 'BaseTzInfo'

only after i uninstall pytz 2017.x version, and install the latest version pytz 2020.x, flexget finally starts up, but show a incompatible
warning.

Dupe of #2749 ?

yes, seem to be the same


Add details for demo nights

Update demos section with final dates, itineraries, and expectation (should be approved by project support team and presidents)

Include:

A little context on the purpose of demo nights in preparation for the final showcase (format and expectations)
Time limit: 15 minutes
Suggested talking points and questions to address in the demos
Technical requirements for setup and demoing
Pre-work / milestones that should be complete by each particular demo night
Dates and presentation order for each demo night
(Pizza afterwards as a reward?)

 Complete pitch night docs


Jarvis(assistant).

Script Title - Jarvis(assistant) .
Brief -
Our virtual assistant will able to do the followings things-
Weather forecasting, Launch Games, Launch Windows Applications, Open Websites, tells you about almost everything you ask, tells you date and time, greetings, news, etc.
You can interact with your laptop’s microphone/console. The response generated by the assistant will display on the console or as a speech via the speaker
Instructions

Create a new folder for your script and file/folder name should be appropriate.
Create a README.md in your folder for program Instructions
add requirements.txt if needed

Programming Language

[x] Python

Happy Coding

Seems pretty good idea, go ahead

Done with the task.


Question on mocking graphql.Newclient

Thank you for this excellent package! Made writing some scripts with Go and our GraphQL API (specifically this GraphQL API which has been amazing https://github.com/hasura/graphql-engine).
We are using Hasura with Lambda event functions, which takes a events.APIGatewayProxyRequest. Since we are using the "serverless" functionality we decided to use Go for Lambda and started writing unit tests against our Hasura API.
My question is to make sure I am on the right track, I have used some of your test code to get myself pretty far, so thank you, but I am stuck on one specific problem. Here are the steps I have taken so far:

Create a new test server
Write the example JSON response
Pass srv.URL to graphql.NewClient(srv.URL)

Here is a sample of the test:
srv := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    w.WriteHeader(http.StatusOK)
    io.WriteString(w, `{
	"data": {
		"insert_bookings": {
		"returning": [
			{
			"id": "TX123456789",
			"created_at": "2019-06-19T00:08:16.547491+00:00",
			"updated_at": "2019-06-19T00:08:16.547491+00:00"
			}
		]
		},
		"insert_booking_events": {
		"returning": [
			{
			"id": "bdeee2fe-7318-46bd-9b16-6c47ba12129a",
			"vehicle_bookings_id": "TX123456789",
			"status": "completed",
			"created_at": "2019-06-19T00:08:16.547491+00:00",
			"updated_at": "2019-06-19T00:08:16.547491+00:00"
			}
		]
		}
	}
	}`)
}))
defer srv.Close()

However, when running the tests, I am getting an error with unsupported protocol scheme "" that is coming from:
if err := client.Run(context.Background(), req, &resp); err != nil {
	log.Fatal(err)
}

Any help or pointers would be greatly appreciated!

Hi @jasonmccallister ,
This error means that the call has been done with a url missing the trailing http:// or https://.
Are you sure you have the https:// in srv.URL? Did you print it to be sure?
Did you try to enable the logs in the client? client.Log = func(s string) { log.Println(s) } (with client being your graphql client).
Note: I have no affiliation with this project, just a user.
Thanks
Joseph

@aerostitch that makes sense, however, I double checked the srv.URL contains the protocol in the test as it comes from httptest.NewTSLServer(). I took the same approach on the tests provided in the package but could not figure it out.

Did you try with httptest.NewServer() instead of the TLS version? I use that in my tests and it works pretty well.

I did try that first, then I switched to TLS after. Also, I did not mention this in the original response but thank you for taking the time to respond!


error when searchChatMessages: receive 27 valid messages out of 26 in 27 messages

[ 1][t 4][1589817461.682636023][MessagesManager.cpp:8244][#1][!Td]      Receive 27 valid messages out of 26 in 27 messages

log.txt

The server returned wrong total count of messages. TDLib fixed the total count to the correct value and outputed a warning about wrong server response. Then the client received a correct response from TDLib. Everything works as expected there in TDLib.


Java calls tippecanoe and expects to get the return value

I tried to use java to call the tippecanoe service and expect to get the return value, but it didn't give me the same result as I entered the command in the terminal.

  public static void main(String[] args) {

        try {
            String[] cmd = new String[]{"/bin/sh","-c", "tippecanoe -o /home/xiaofsu/file/typhoonFile/typhoon.mbtiles -l typhoon -z12 -r1 -f -pf -pk /home/xiaofsu/file/typhoonFile/typhoon.geojson"};

            Process ps = Runtime.getRuntime().exec(cmd);

            BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
            StringBuffer sb = new StringBuffer();
            String line;
            while ((line = br.readLine()) != null) {
                sb.append(line).append("\n");
            }
            String result = sb.toString();
            System.out.println(result);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Did not output anything：

Use the command to output these things

tippecanoe Version:

I want to get some output, so I can judge whether the generated file is successful. At present, I can only judge whether the file is 0KB after waiting for the result to return an empty string. Or is it true that the 0KB file is the correct logic?

The messages you are looking for are written to stderr instead of to stdout because they are diagnostic information, not the output of processing. If you want to redirect them to stdout so you can read them from a pipe, add 2>&1 to the end of the command line that you pass to sh -c.
The way to distinguish a successful run from an error is to check Process.exitValue() when the subprocess completes.

I tried your method and I think he is correct and can be used normally. Thank you.
import java.io.IOException;

public class Test {
    public static void main(String[] args) throws Exception {
        try {
            String[] cmd = new String[]{"/bin/sh","-c", "tippecanoe -o /home/xiaofsu/file/typhoonFile/typhoon.mbtiles -l typhoon -z12 -r1 -f -pf -pk /home/xiaofsu/file/typhoonFile/typhoon.geojson"};

            Process ps = Runtime.getRuntime().exec(cmd);
            ps.waitFor();
            int i = ps.exitValue();//true is 0 ,false is 1
            System.out.println(i);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


"data-mejsoptions" ignored

After a few tests, I came to the conclusion that the attribute "data-mejsoptions" of the VIDEO tag was ignored so I traced the code to understand why.
And I found this:
		if (typeof o == 'undefined') {
			o = t.$node.data('mejsoptions');
		}

So in fact it's ignored only if the constructor was already given a set of options, and also it's not parsed so it's just a string. It would be better to add these options to the constructor's, something like:
o = $.extend(o, JSON.parse(t.$node.data('mejsoptions')));

I'm doing a lot of reusable code so I think it could be a great help (and also it would be less puzzling when trying to figure out why some code doesn't work).

@gregfr Is this still an issue? Currently, after those lines you stated there are other more that actually do the work you describe as a solution:
// extend default options
t.options = $.extend({},mejs.MepDefaults,o);

Closing this issue since no answer has been posted in more than 2 weeks. If you'd like to reopen this, let us know. Thanks!


Add documentation on how to handle the actions and inputs from Adaptive Cards

Hello,
There seems to be a lack of documentation on how to handle actions and inputs from Adaptive Cards. Could you please add some examples? Also, how can adaptive cards be used in Waterfall dialog steps?

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

ID: ed5a1c8d-c61b-4130-1ecb-e25d7b8cc4ad
Version Independent ID: ba796614-7173-b45f-f9eb-6a3c3fe55b09
Content: Add rich card attachments to messages - Bot Service
Content Source: articles/nodejs/bot-builder-nodejs-send-rich-cards.md
Product: bot-framework
GitHub Login: @v-ducvo
Microsoft Alias: v-ducvo

@blueelvis Does the comparable v4 topic help, specifically the Process events within rich cards section?

@JonathanFingold - It has very little documentation. :(


Streamlit hackathon

Following the rules of the metahackathon here
https://github.com/meta-introspector/meta-meme/issues/80
If you're planning to build an AI-driven GUI generator for gRPC data interfaces using Streamlit, here's a more Streamlit-specific plan:

Streamlit Setup:

Start by setting up a Streamlit development environment.

Data Interface Analysis:

Develop a parser or AI model that can analyze gRPC data interfaces.

Streamlit UI Generation:

Create Streamlit components for representing different data types (e.g., input fields, dropdowns, buttons).
Define the layout and structure of the Streamlit app.

AI Model Integration:

Integrate your AI model within the Streamlit app.
Develop a logic that interprets the data interface and decides how to generate a Streamlit GUI based on the data types.

Template Engine:

Implement a template engine within Streamlit that generates the user interface components dynamically based on the AI's decisions.

User Customization:

Allow users to customize the generated Streamlit GUI, such as layout, styling, and interaction.

AI Training:

Train and fine-tune your AI model on gRPC data interfaces to improve the quality of the generated Streamlit GUIs.

Testing and Validation:

Rigorously test the generated Streamlit GUIs against the original data interfaces to ensure accuracy and usability.

Deployment and Sharing:

Deploy the Streamlit app, making it accessible to users who want to generate GUIs for their gRPC data interfaces.
Consider options for sharing Streamlit apps, such as Streamlit sharing or hosting on your own server.

Documentation and Tutorials:

Create documentation and tutorials specific to your Streamlit-based GUI generator to help users effectively use the tool.

User Community:

Foster a user community around your Streamlit app, allowing developers to share their experiences and collaborate.

Feedback Loop:

Continuously gather feedback from users to enhance the AI model and improve the quality of generated Streamlit GUIs.

By utilizing Streamlit as the framework for your GUI generator, you can streamline the development of user-friendly interfaces for gRPC data interfaces while benefiting from Streamlit's simplicity and interactivity.

use this code to redact the data https://github.com/jmikedupont2/https-lablab.ai-event-llama-2-hackathon-with-clarifai-introspector/blob/main/src/introspector/clarify/model/new.py we can use this for our first gui

Of course, we can start by inspecting the global variables in Python. Here's how you can proceed:

Initial Setup:

Begin with your Streamlit app that allows users to select Python modules for exploration.

List Globals:

Add a button or input field that, when clicked, triggers the inspection of global variables.

Inspect Globals:

When the user interacts with this button, your app should use Python's globals() function to retrieve a dictionary of global variables.

Display Results:

Display the names and values of these global variables in a user-friendly manner within your Streamlit app.

Repeat or Refine:

Allow users to continue inspecting global variables or provide options to refine their queries.

This will provide a basic starting point for inspecting global variables in Python through your Streamlit app. You can then expand upon this foundation to add more functionality and features as needed.

Using emojis to represent predicates like isinstance and str is a creative approach. It can simplify rule creation and make it more visually intuitive. Here's how you can incorporate this idea into your rule-based system:

Emoji Predicates:

Assign emojis to common predicates and operators, such as isinstance, str, and, or, not, etc. For example, you can use 🧐 for isinstance and 📝 for str.

Rule Creation:

Allow users to construct rules using emojis and regular text. For instance, they can create a rule like 🧐+📝=is-str to check if an object is an instance of a string.

Rule Evaluation:

Implement the rule evaluation engine to interpret emojis and execute corresponding predicates and operations. When a rule like 🧐+📝=is-str is applied, it checks if the object is an instance of a string.

Emoji Display:

Display emojis alongside the rules and objects, making it clear which predicates are being used for classification.

Interactive Editing:

Allow users to interactively edit rules by selecting emojis and specifying conditions. They can combine emojis to create complex rules visually.

Visualization:

Visualize the rule structure, showing how emojis, predicates, and objects are connected in a graphical format.

Error Handling:

Implement error handling and validation to ensure that the rules are well-formed and make sense.

This approach leverages the familiarity of emojis to simplify the rule creation process and can be especially helpful for users who may not be experienced with programming or formal rule syntax. It adds a playful and user-friendly dimension to your rule-based system.

Expanding the concept to represent exotic types and data flow diagrams sounds like an intriguing way to provide users with a comprehensive view of your system. Here's how you can approach this:

Exotic Type Representation:

Identify exotic or less common types within your system and represent them with unique emojis. Ensure that each exotic type has a clear emoji association for easy recognition.

Frequency Visualization:

Display a frequency count alongside each emoji to indicate how often that type or class is used within the system. This gives users an idea of the significance of each component.

Recursive Generation:

Show how emojis are recursively generated by breaking down complex types into their constituent parts. This can be displayed as a hierarchical tree or nested diagrams, illustrating the composition of types.

Data Flow Diagrams:

Integrate data flow diagrams to demonstrate how information flows through the system. Use arrows or connectors to illustrate the direction of data movement between classes and methods.

Interactive Exploration:

Make the representation interactive, allowing users to click on emojis or types to drill down into more detailed views. This enables users to explore exotic types and data flow in-depth.

Dynamic Updates:

Ensure that the visualization remains up-to-date with the actual system. If there are changes in type usage or data flow, the visualization should reflect these modifications.

Documentation and Descriptions:

Provide tooltips or pop-up descriptions for each emoji or type to give users more information about what they represent and how they are used.

Highlight Unusual Patterns:

Use color-coding or visual cues to highlight unusual or unexpected patterns in the data flow or type composition. This can help users quickly identify areas that may require attention.

By combining emojis, frequency counts, recursive generation, and data flow diagrams, you create a comprehensive and visually engaging representation of your system. Users can explore both the common and exotic components while gaining insights into how data flows through the system.

https://github.com/meta-introspector/https-streamlit.io-community-llm-hackathon-2023 created repo


Support Visual Basic projects for Dynamic Compilation

Would be helpful for those who make use of Visual Basic.

I think it should be possible to detect at compile or runtime which language is being used rather than duplicating the logic like this.

Thought so too. I just took your earlier suggestion (that was a while back). It'd be cool to support all .NET-supported languages as well.

You should be able to test for whether the assemblies Microsoft.CSharp or Microsoft.VisualBasic are loaded in the startup assembly.

Closing in favor of .NET 6 Hot Reload


French have

Hello and thank you for NUMBERTEXT() and MONEYTEXT() Calc functions! They are very handy! But for French language, they do not respect administrative documents official rules. It's now been over 20 years that the French have to use hyphens instead of spaces in all compound numerals therein. Below is an excerpt of the French Republic Official Journal published on December 6, 1990 (see https://www.vjf.cnrs.fr/orthographe/PDF/JODA.pdf page 14). Would some of you be so kind to provide us with an update respecting these rules. Hoping so and thanking you in advance, with kind regards, @4560041.

6 décembre 1990
Journal officiel de la République française
Edition des documents administratifs
Trait d'union : on lie par des traits d'union les numéraux formant un nombre complexe, inférieur ou supérieur à cent.
Exemples : elle a vingt-quatre ans, cet ouvrage date de l'année quatre-vingt-neuf, elle a cent-deux ans, cette maison a deux-cents ans, il lit les pages cent-trente-deux et deux-cent-soixante-et-onze, il possède sept-cent-mille-trois-cent-vingt-et-un francs.

Automatic translation
December 6, 1990
Official Journal of the French Republic
Editing of administrative documents
Hyphen: Numerals forming a complex number, less than or greater than one hundred, are linked by hyphens.
Examples: she is twenty-four years old, this work dates from the year eighty-nine, she is one hundred and two years old, this house is two hundred years old, he reads pages one hundred and thirty-two and two hundred seventy-one, he has seven hundred thousand three hundred and twenty-one francs.

Until then, here is a workaround for MONEYTEXT():
LOWER(REGEX(MONEYTEXT(A1, "EUR", "fr"), "(?<! et) (?!euros?|et )", "-", "g"))

Dear Contributor,
Fixed in https://github.com/Numbertext/libnumbertext/commit/88130131146eeef13b3dfd2ef574e90cfac509a5
Next version of libnumbertext and NUMBERTEXT/MONEYTEXT extension will be released this year.
Thanks for the bug report and for the nice workaround!
Best regards,
László


Adding new script to help with T2T Migrations

Issue:
Adding new script
Reason:
This script is to help with T2T Migrations

Build failing:
Failed to have all docs in mkdocs.yml: D:\a\1\s\docs\Admin\CrossTenantMailboxMigrationValidation.md
Please update the mkdocs.yml at the root to include the new doc in the hierarchy.

Please re-run .build\CodeFormatter.ps1 -Save and commit the changes. We added a new rule.

Build failing:
Failed to have all docs in mkdocs.yml: D:\a\1\s\docs\Admin\CrossTenantMailboxMigrationValidation.md
Please update the mkdocs.yml at the root to include the new doc in the hierarchy.

@tweekerz this one is missing 🙂

Fixed requested items and re-ran .build\CodeFormatter.ps1 -Save as well as updated mkdocs.yml

I don't know why there are double comments to everything...


pollingGetActivity's Authorization header is "Bearer undefined" when directLine's secret is empty string and webSocket is false

Hi Sirs,
I use "samples/fullwindow/index.html" and directLine's secret set to empty string, webSocket set to false. code are below,
directLine: {
        secret: '',
      token: params['t'],
        domain: params['domain'],
        webSocket: false
      }

I found polling request's Authorization header is always "Bearer undefined", because checkConnection method will set directLine's token to undefined (conversation.token is undefined) when secret is empty.
May not set Authorization header when secret and token are empty string?
Thanks.

I post issue to BotFramework-DirectLineJS


Optimize range checker execution trace finalization / length check

Currently, the 8-bit range check table is built twice when the execution trace is finalized.

It is built during the call to RangeChecker::trace_len when the maximum length of the execution trace is being computed in finalize_trace.
It is built during the range.into_trace call before the range checker's trace is combined into the final execution trace.

Ideally, it would be better to build this table just once. It is probably also worth checking the finalization of other processors to ensure there are no similar duplicated computations.

@grjte - I'd like to pick this up, if it's available?

Closed by #438


[SPARK-9570][Docs][YARN]Consistent recommendation for submitting spark apps to YARN, -master yarn --deploy-mode x vs -master yarn-x'

Issue link: https://issues.apache.org/jira/browse/SPARK-9570
Previous PR: #8071
Changes made:

Added the deploy-mode syntax in favor of yarn-cluster method of submission
Requesting review.

Can one of the admins verify this patch?

I believe you'll need to search/grep through the code as well, and other docs, to find more occurrences of yarn-client and yarn-cluster. I recall it appears in more log and exception messages.
(not a big deal but you might squash and force-push your branch to clean up the commit history, which is already longish. It gets squashed on merge anyway but sometimes can make the history of the review clearer. Also, you generally rebase rather than merge from master when updating a pull request -- I see merge commits in the history.)

@nssalian Could you address @srowen's comments? My high level suggestion is that we should just remove all documentation that references yarn-client and yarn-cluster and use the new notation. For backward compatibility we should still accept these, but I think it's confusing to have both notations documented.
Also, I'm pretty sure there are still many relevant places this patch doesn't address. E.g. SparkSubmit still parses the master and deploy mode from yarn-client and yarn-cluster.

@andrewor14 will address them. Have not had a chance to do this. Will do it by the end of this week.

@nssalian if you have some time, would be good to bring this up to date so we can go forward or not with it.

@srowen  Thank you for the note. Will get it done asap.

@nssalian are you working on this one? you can close the PR if you're not going to proceed with this particular change. It would be great to get something like this merged.

@srowen thank you for the note. Haven't had a chance these past few weeks.
Should get it done today.

Corrected the nits. Will search the whole project for other places that I have missed.

That's pretty much all I could find. The rest seem to be code pointing to the option of using yarn-cluster, yarn-client and how Spark parses them.
Please let me know if I have missed anything. I went through the code looking for --master, yarn-client, yarn-cluster and deploy

This has a merge conflict now, sorry. It might be easier even to squash all your commits, then rebase, if you're up for it. In any event, it does just need a rebase on master and a force push.

@nssalian I'd like to resolve this at last. This has outstanding comments and needs a rebase. Do you want to do that or should I take over?

@srowen please go ahead.
Thank you.

See https://github.com/apache/spark/pull/8968 now. Do you mind closing this PR?

Closing in favor of #8968


RuntimeError: Unrecognized tensor type ID: AutocastCUDA

Hi, when I run the codes, it raised the following error:
......site-packages/DCNv4/functions/dcnv4_func.py", line 103, in forward
output = ext.dcnv4_forward(*args)
RuntimeError: Unrecognized tensor type ID: AutocastCUDA

dcnv4_im2col_cuda.cuh:341: void dcnv4_im2col_cuda(cudaStream_t, const scalar_t*, const scalar_t*, scalar_t*, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, at::opmath_type<scalar_t>, int, int, int, bool, int) [with scalar_t = float; cudaStream_t = CUstream_st*; at::opmath_type<scalar_t> = float]: Assertion `D % d_stride == 0' failed.

i have same question. does this question have been solved？


metrics woot woot

Are you a current Fivetran customer?

fivetran made PR
What change(s) does this PR introduce?

adds metrics to the dbt package
Did you update the CHANGELOG?

[x] Yes

Does this PR introduce a breaking change?

[ ] Yes (please provide breaking change details below.)
[x] No  (please provide an explanation as to how the change is non-breaking below.)

Did you update the dbt_project.yml files with the version upgrade (please leverage standard semantic versioning)? (In both your main project and integration_tests)

[x] Yes

Is this PR in response to a previously created Bug or Feature Request

[ ] Yes, Issue/Feature [link bug/feature number here]
[x] No

How did you test the PR changes?

[ ] CircleCi
[x] Local (please provide additional testing details below) and in Hex

Select which warehouse(s) were used to test the PR

[ ] BigQuery
[ ] Redshift
[x] Snowflake
[ ] Postgres
[ ] Databricks
[ ] Other (provide details below)

Provide an emoji that best describes your current mood

🌯
Feedback
We are so excited you decided to contribute to the Fivetran community dbt package! We continue to work to improve the packages and would greatly appreciate your feedback on our existing dbt packages or what you'd like to see next.

@fivetran-jamie is there a way to get CircleCi to pass? Or will it not be able to pass until dbt-labs/dbt_metrics v0.4.0 is released?


Slider: side labels

Description
There should be a class for putting the label on the side of the slider: https://spectrum.adobe.com/page/slider/#Label-position
Screenshots
This should be possible:

Environment

Spectrum CSS version: 74000c8

Additional context
Trying to upstream this to minimize changes in the CSS "fork" in the React Spectrum repo: https://github.com/adobe/react-spectrum/pull/1083
I've tried to implement this, though it's not perfect: https://reactspectrum.blob.core.windows.net/reactspectrum/797685ea11c15e51df80889902724c7a0073d78d/storybook/index.html?path=/story/slider--labelposition-side
CSS:
https://github.com/adobe/react-spectrum/blob/797685ea11c15e51df80889902724c7a0073d78d/packages/%40adobe/spectrum-css-temp/components/slider/skin.css#L308-L325

@Deanna-w1 let's look at this one when we migrate and work on Slider.


Add iOS targets to Cargo.toml

Depends on https://github.com/alexcrichton/ssh2-rs/pull/35.

I believe libgit2 attempts to use Security.framework wherever possible, so in theory the openssl dep shouldn't be necessary?

Oh, I think I see now. Then it's the cfgs in libgit2-sys/lib.rs that need adjusting instead. I'll open a new PR for that.


Fix TS version warnings on lint run

fixes #510

@e111077 please review

Awaiting internal review. Should get done around Monday


Custom Prometheus version is ignored

No matter the version configured, the Prometheus image will always be the same: quay.io/prometheus/prometheus:v2.29.1.
Steps to Reproduce the Problem
Given this configuration
parameters:
  prometheus:
    instances:
      some:
        prometheus:
          enabled: true
          config:
            version: v1.33.7

Actual Behavior
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
# ...
spec:
  image: quay.io/prometheus/prometheus:v2.29.1
  version: v1.33.7
# ...

Expected Behavior
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
# ...
spec:
  image: quay.io/prometheus/prometheus:v1.33.7
  version: v1.33.7
# ...

Turned out to be PEBCAK. Instead:
parameters:
  prometheus:
    instances:
      some:
        common:
          versions:
            prometheus: 1.33.7

This is the way.


Update lithuanian currency to EUR (since 2015-01-01)

Thank you! Very observant :-)

Very Lithuanian :) Thanks for quick merge. I also suggest to make a new "bugfix" release :)

I already made a new release/tag on both libraries :-)
On Jul 31, 2015 2:24 PM, "Edvinas Klovas"<EMAIL_ADDRESS>wrote:

Very Lithuanian :) Thanks for quick merge. I also suggest to make a new
"bugfix" release :)
—
Reply to this email directly or view it on GitHub
https://github.com/alcohol/iso3166/pull/1#issuecomment-126674534.


Extract code for drawing the right side of a statement input.

Resolves
None
Proposed Changes
Cleanup of code in renderDrawRight_
Reason for Changes
Code readability: breaks rendering code into named pieces with explanations of what each piece of code does and where it expects to start drawing.  There's no change in behaviour.
Test Coverage
Visually confirmed that all blocks render and look good in the vertical playground.

Friendly ping.


Automatic uploads to registry

Which components does the task require to be changed? (think hard pls)
snforge, sncast
Description
Since the registry is up (scarbs.xyz) we should think about automatically uploading new versions to it on our CI.
For now this can be achieved by curl. After scarb 2.8.0 there should be support for uploads using it.

Child issues:
https://github.com/foundry-rs/starknet-foundry/issues/2462 (Remove scarb version constraint for foundry_std registry uploads)
https://github.com/foundry-rs/starknet-foundry/issues/2463 (Add publish workflow for snforge_scarb_plugin)


support titleForDeleteConfirmationButtonForRowAt

Hi ,
Chould you support titleForDeleteConfirmationButtonForRowAt
so we can change the text title of delete button !

It will be great if you can create a PR, I will merge it in 👍


Support one click installation of more operations systems.

Mac Os X, and all configurations listed on the CasADi website

imeplement by b785e54d6a1b2a6c574752c3cb9bfb88479c9d1b
will be merge into master soon


Multi target net45 452

I updated the project so it support multiple .NET Frameworks (from 4.0 to 4.5.2). I used Caitlyn ( http://caitlyn.codeplex.com/ )
I also had to disable the auto packaging because of a NuGet bug in 2.8.50926.
Finally, I can also add a Powershell script that build the both nuget package, it would be simple too.

Can you provide some more context on why you would like to see this change made? Swashbuckle currently targets .NET 4.0, but should be consumable by applications targeting .NET 4.5 or 4.5.1, 4.5.2, etc. In fact, I use it on a number of projects that target .NET 4.5.2. The only value I can see for actually compling Swashbuckle specifically to .NET 4.5 or later was if it wanted to make use of features that are only available in 4.5 or greater. However, I don't necessarily see any of those features in your pull request.

Hi Andy,
We have a project that is on 4.5.1 that is deployed on an Azure Web Services. I had the exact same issue as in here:
https://github.com/domaindrivendev/Swashbuckle/issues/75
We have set the bindingRedirect and nothing worked. I think it's because we use "Microsoft.AspNet.WebApi.Core 5.2.3" and you guys use 4.0.x. Both are incompatible as far as I know. This is why I forked your (awesome) project and made this custom version. Now, it works perfectly.
The bug can only be seen when there's a new filter added (like an IOperationFilter).

I'm running into this issue as well on the current 5.1.5 version (using webapi 5.2.3 on .net v4.5):
A first chance exception of type 'System.IO.FileNotFoundException' occurred in Swashbuckle.Core.dll
Additional information: Could not load file or assembly 'System.Net.Http, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

@jayoungers, try to clone the latest version of Swashbuckle and change the targeted .Net version. You might have to update some dependent packages (I think there's at least one, Microsoft.AspNet.WebApi.Core, the problematic one) and it should work.
It's also why I tried to find an alternative with my pull request, so Swashbuckle would work on both 4.0- and 4.5+.

I updated the framework version along with the nuget packages (had to also upgrade the nuget.exe included with the solution - I didn't even know each solution had its own version of nuget), and referenced Swashbuckle.Core.dll in my project.
Everything starts up great without any issues; however, actually going to the Swagger UI piece throws a bunch of asset not found exceptions from the asset provider.  Outside of the core.dll file, what else did you need to add to get the Swagger UI piece to function?
Thanks!

I used to work on a Windows Azure app that was using .Net Framework 4.5.2 and I had a similar issue.
Since you have updated the framework, it's hard to say from here. I think you can try the solution in this issue: https://github.com/domaindrivendev/Swashbuckle/issues/75


How to send automated mail

Hi, I want to use TaskScheduler in my Blazor project. There are ways to implement automatic mailing of user notifications.
Thanks

The Windows Task Scheduler allows you to send a fixed email message to a fixed recipient based on a system trigger. It uses PowerShell to actually perform the email action. Unless you need to react to a system event, I would encourage you to look at other SMTP libraries or PowerShell to do mailing.

The Windows Task Scheduler allows you to send a fixed email message to a fixed recipient based on a system trigger. It uses PowerShell to actually perform the email action. Unless you need to react to a system event, I would encourage you to look at other SMTP libraries or PowerShell to do mailing.

Thanks for your feedback

Thanks for your feedback


NETOBSERV-1697: Add retry around netlinkSubscribeAt

Description
while netns is getting it was noticed the associated netnsHandle keep changing for sometime then become stable and at that point netlinkSubscribeAt will succeed
so added retry loop and avoid the early creation of netnshandle till things become more stable
Dependencies
n/a
Checklist
If you are not familiar with our processes or don't know what to answer in the list below, let us know in a comment: the maintainers will take care of that.

[ ] Will this change affect NetObserv / Network Observability operator? If not, you can ignore the rest of this checklist.
[ ] Is this PR backed with a JIRA ticket? If so, make sure it is written as a title prefix (in general, PRs affecting the NetObserv/Network Observability product should be backed with a JIRA ticket - especially if they bring user facing changes).
[ ] Does this PR require product documentation?

[ ] If so, make sure the JIRA epic is labelled with "documentation" and provides a description relevant for doc writers, such as use cases or scenarios. Any required step to activate or configure the feature should be documented there, such as new CRD knobs.

[ ] Does this PR require a product release notes entry?

[ ] If so, fill in "Release Note Text" in the JIRA.

[ ] Is there anything else the QE team should know before testing? E.g: configuration changes, environment setup, etc.

[ ] If so, make sure it is described in the JIRA ticket.

QE requirements (check 1 from the list):

[ ] Standard QE validation, with pre-merge tests unless stated otherwise.
[ ] Regression tests only (e.g. refactoring with no user-facing change).
[ ] No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

/ok-to-test

/ok-to-test

/ok-to-test

Thanks!
/lgtm

/ok-to-test

/label qe-approved

/ok-to-test

/lgtm

/approve


Add Official Discord Server Link In Community.

Recently Django has launched its official discord server, it should be included under the community list.
Link: https://discord.com/invite/xcRH6mN4fa
It is also in the official Django community page.

Closing because this isn't an issue and #174 proposes adding it.


Map Popups

Overview
Have simple map popups on click for points or polygons.
UI
A simple popup with text on click based on what was clicked. E.g.:

Shopping Centre Layer: popup with shopping centre name
Boundary: popup with SA1 code and maybe some general stats

SCRAPPED
Replaced with data display side panel


Multi modules: Execution failed for task ':checkServiceApolloDuplicates' in alpha-04.

Hi!
After upgrading to alpha-04, my project cannot compile, it shows an error:
Execution failed for task ':checkServiceApolloDuplicates'.
> duplicate Type 'ResolverKey(kind=CustomScalarTarget, id=Long)' generated in modules: api-graphql-kp,graphql-kp
  Use 'alwaysGenerateTypesMatching' in a parent module to generate the type only once

Cause: duplicate Type 'ResolverKey(kind=CustomScalarTarget, id=Long)' generated in modules: api-graphql-kp,graphql-kp
Use 'alwaysGenerateTypesMatching' in a parent module to generate the type only once

I tried adding to the parent and child modules - it does not help:
alwaysGenerateTypesMatching.set(emptyList())
My environment:
Parent module:
plugins {
    kotlin("multiplatform")
    id("com.android.library")
    id("com.apollographql.apollo3").version(Versions.apollo)
}

apollo {
    packageName.set("ru.kinopoisk.shared.api.graphqlkp.models")
    generateOperationOutput.set(true)
    generateApolloMetadata.set(true)
    alwaysGenerateTypesMatching.set(emptyList())

    customScalarsMapping.set(mapOf(
        "Long" to "kotlin.Long"
    ))
}

Child module:
plugins {
    kotlin("multiplatform")
    id("com.android.library")
    id("com.apollographql.apollo3").version(Versions.apollo)
}

apollo {
    packageName.set("ru.kinopoisk.shared.movielist.api.graphqlkp.models")
    generateOperationOutput.set(true)
    generateApolloMetadata.set(true)
    alwaysGenerateTypesMatching.set(emptyList())
}

dependencies {
    apolloMetadata(project(Modules.API.graphqlkp))
}

Looks like you have only 2 modules?

graphql-kp: parent module?
api-graphql-kp: child module?

If that's the case, it's most likely a bug. api-graphql-kp should see that the custom scalar is generated in graphql-kp and not generate it. I'll look into it.
In all cases, can you try setting this in your root module?
apollo {
    alwaysGenerateTypesMatching.set(listOf("CustomScalarTarget"))
}

Found the bug. It's there: https://github.com/apollographql/apollo-android/blob/09e654447c87dd8c4177b796c590878ce8ee380d/apollo-compiler/src/main/kotlin/com/apollographql/apollo3/compiler/codegen/kotlin/KotlinCodeGen.kt#L80.
This generates a false positive entry even if no code is actually generated :/. I'll try to think of a workaround. If not, I'll make a quick fix.

Fix is there: https://github.com/apollographql/apollo-android/pull/3341. Thanks for catching this. It'll be in next version.
In the meantime, you should be able to workaround this issue by adding this to your root project build.gradle.kts:
tasks.all {
  if (name == "checkServiceApolloDuplicates") {
    enabled = false
  }
}

Fix is there: #3341. Thanks for catching this. It'll be in next version.
In the meantime, you should be able to workaround this issue by adding this to your root project build.gradle.kts:
tasks.all {
  if (name == "checkServiceApolloDuplicates") {
    enabled = false
  }
}

That will disable the check. If you have no real duplicates (and not false positives like this one), this should do the trick.

Thank you, it helped! I will wait for alpha 05 with a fix to remove this temporary solution.

Fixed in alpha05

@martinbonnin Hi!
I upgraded to alpha06 and now I have another problem.

The Long type began to come as Any type.
I have my own CustomScalarAdapter and it worked in alpha04.

Yikes, sorry about that. I can reproduce here: https://github.com/apollographql/apollo-android/commit/04f86d21eb2e3cbe575bf856585f476b27bf8227. Will dig into this.

3.0.0-alpha07-SNAPSHOT should have the fix now.

3.0.0-alpha07-SNAPSHOT should have the fix now.

I checked it, now it works perfectly.

Thanks for the heads up 🙏 . I'm still looking into that other IndexOutOfBands error and I'll make a new alpha, certainly next week.

I have the following setup with beta-02:
Network modules:
plugins {
    id("com.android.library")
    id("com.apollographql.apollo3").version(Versions.apollo)
}

apollo {
    packageName.set("package.network")
    generateApolloMetadata.set(true) // Allow GraphQL query generation for multi-module project
    alwaysGenerateTypesMatching.set(listOf(".*"))
}

App module:
plugins {
    id("com.android.application")
    id("com.apollographql.apollo3").version(Versions.apollo)
}

apollo {
     packageName.set("package.app")
}

dynamicFeatures.apply {
    add(":dynamicModule")
}

with query:

query GetAvailableDevices {
    entities {
        id
    }
}

Dynamic module
plugins {
    id("com.android.dynamic-feature")
    id("com.apollographql.apollo3").version(Versions.apollo)
}

apollo {
    packageName.set("package.dynamicModule")
}

with query:

query GetAvailableDevices {
    entities {
        id
    }
}

The modules have the following relation:
[network]<--[app]<--[dynamic]
I'm getting the following error with this setup:
Execution failed for task ':checkServiceApolloDuplicates'.
> duplicate Type 'ResolverKey(kind=SchemaType, id=GetAvailableDevices)' generated in modules: app,dynamicModule
  Use 'alwaysGenerateTypesMatching' in a parent module to generate the type only once

I have tried to set alwaysGenerateTypesMatching in the network module and also in the app module and in the dynamic module. Looks like none of them works.
I have tried it with the following setup
alwaysGenerateTypesMatching.set(emptyList())
alwaysGenerateTypesMatching.set(listOf(".*"))
The only thing that works is to set
alwaysGenerateTypesMatching.set(listOf("GetAvailableDevices"))
in the network module, but I would like to avoid it since there will be a lot of these types.
Looks like a bug to me or I misunderstood the documentation somehow. @martinbonnin