[BUG] Cohere Blueprint issue

What is the bug?
When ingesting data using Cohere's blueprint and neural search the ingestion pipeline returns:
{
  "took": 0,
  "ingest_took": 2,
  "errors": true,
  "items": [
    {
      "create": {
        "_index": "cohere-index",
        "_id": "1",
        "status": 400,
        "error": {
          "type": "illegal_argument_exception",
          "reason": "Must provide pre_process_function for predict action to process text docs input."
        }
      }
    },
  ]
}

How can one reproduce the bug?
Steps to reproduce the behavior:
DevTools reproduction:
# Create Connector:
POST /_plugins/_ml/connectors/_create
{
   "name": "Cohere Connector",
   "description": "External connector for connections into Cohere",
   "version": "1.0",
   "protocol": "http",
   "credential": {
           "cohere_key": "<INSERT KEY>"
       },
    "parameters": {
      "model": "embed-english-v2.0",
      "truncate": "END"
    },
   "actions": [{
       "action_type": "predict",
       "method": "POST",
       "url": "https://api.cohere.ai/v1/embed",
       "headers": {
               "Authorization": "Bearer ${credential.cohere_key}"
           },
       "request_body": "{ \"texts\": ${parameters.texts}, \"truncate\": \"${parameters.truncate}\", \"model\": \"${parameters.model}\" }"
       }]
}

# Create a model related to the cluster
POST /_plugins/_ml/models/_register
{
    "name": "embed-english-v2.0",
    "function_name": "remote",
    "description": "test model",
    "connector_id": "9vxqm4oBYFYMFuLi9oOR"
}

# Deploy the model
POST /_plugins/_ml/models/_Pxrm4oBYFYMFuLiG4PH/_deploy

PUT _ingest/pipeline/cohere-ingest-pipeline
{
  "description": "Cohere Neural Search Pipeline",
  "processors" : [
    {
      "text_embedding": {
        "model_id": "_Pxrm4oBYFYMFuLiG4PH",
        "field_map": {
          "content": "content_embedding"
        }
      }
    }
  ]
}

# Create KNN index. Note* need to match space to model space. eg embed-english-v2.0 recommends cosine similarity
PUT /cohere-index
{
	"settings": {
		"index.knn": true,
		"default_pipeline": "cohere-ingest-pipeline"
	},
	"mappings": {
		"properties": {
			"content_embedding": {
				"type": "knn_vector",
				"dimension": 4096,
				"method": {
					"name": "hnsw",
					"space_type": "cosinesimil",
					"engine": "nmslib"
				}
			},
			"content": {
				"type": "text"
			}
		}
	}
}

POST /_bulk
{ "create" : { "_index" : "cohere-index", "_id" : "1" } }
{ "content":"Testing neural search"}
{ "create" : { "_index" : "cohere-index", "_id" : "2" } }
{ "content":"What are we doing"}
{ "create" : { "_index" : "cohere-index", "_id" : "3" } }
{ "content":"This should exist"}

GET /cohere-index/_search
{
  "query": {
    "bool" : {
      "should" : [
        {
          "script_score": {
              "neural": {
                "content_embedding": {
                  "query_text": "How do I ingest to opensearch",
                  "k": 10
              }
            },
            "script": {
              "source": "_score * 1.5"
            }
          }
        }
        ,
        {
          "script_score": {
            "query": {
              "match": { "content": "I want information about the new compression algorithems in OpenSearch" }
            },
            "script": {
              "source": "_score * 1.7"
            }
          }
        }
      ]
    }
  }
}

What is the expected behavior?
Expect data to be ingested.
What is your host/environment?

OpenSearch: 2.9

I tested this on 2.10 , it works
Step 1. Create model group
POST /_plugins/_ml/model_groups/_register
{
  "name": "my_remote_model_group_cohere",
  "description": "This is a test group"
}

response
{
	"model_group_id": "wySNm4oBRiMywALe-EvK",
	"status": "CREATED"
}

Step 2. Create connector
POST /_plugins/_ml/connectors/_create
{
	"name": "Cohere enbmedding",
	"description": "my test connector",
	"version": "1.0",
	"protocol": "http",
	"credential": {
		"cohere_key": "<your_cohere_key>"
	},
	"parameters": {
		"model": "embed-english-v2.0",
		"truncate": "END"
	},
	"actions": [
		{
			"action_type": "predict",
			"method": "POST",
			"url": "https://api.cohere.ai/v1/embed",
			"headers": {
				"Authorization": "Bearer ${credential.cohere_key}"
			},
			"request_body": "{ \"texts\": ${parameters.texts}, \"truncate\": \"${parameters.truncate}\", \"model\": \"${parameters.model}\" }",
			"pre_process_function": "connector.pre_process.cohere.embedding",
			"post_process_function": "connector.post_process.cohere.embedding"
		}
	]
}

Response
{
	"connector_id": "2SSRm4oBRiMywALecEuh"
}

Step 3. Register model
POST /_plugins/_ml/models/_register?deploy=true
{
	"name": "Cohere embedding model",
	"function_name": "remote",
	"model_group_id": "wySNm4oBRiMywALe-EvK",
	"description": "test model",
	"connector_id": "2SSRm4oBRiMywALecEuh"
}

Response
{
	"task_id": "4CSSm4oBRiMywALeRktD",
	"status": "CREATED"
}

Then use get task API to find model id
GET /_plugins/_ml/tasks/4CSSm4oBRiMywALeRktD

response
{
	"model_id": "4SSSm4oBRiMywALeRktd",
	"task_type": "REGISTER_MODEL",
	"function_name": "REMOTE",
	"state": "COMPLETED",
	"worker_node": [
		"lkN3LiY3SfmR6DRUO7SR3Q"
	],
	"create_time":<PHONE_NUMBER>347,
	"last_update_time":<PHONE_NUMBER>384,
	"is_async": false
}

Step 4. Predict
POST /_plugins/_ml/models/4SSSm4oBRiMywALeRktd/_predict
{
  "parameters": {
    "texts": ["Say this is a test"]
  }
}

Response
{
	"inference_results": [
		{
			"output": [
				{
					"name": "sentence_embedding",
					"data_type": "FLOAT32",
					"shape": [
						4096
					],
					"data": [
						-0.77246094,
						-0.12927246,
						-0.52490234,
                                                 ...
					]
				}
			]
		}
	]
}

@ylwu-amzn okay this is working in 2.9 with the predict endpoint. Seems there is still an issue with ingestion as I am getting the following when using _bulk with the ingestion pipeline. Does the text_embedding step of the ingestion pipeline get created as a part of ML Commons or does that live elsewhere?
    {
      "create": {
        "_index": "cohere-index",
        "_id": "1",
        "status": 400,
        "error": {
          "type": "illegal_argument_exception",
          "reason": "Invalid JSON in payload"
        }
      }
    }

Ingestion pipeline is in neural-search plugin. Can you share your knn index and ingestion pipeline setting? Need to reproduce this issue to debug

Thanks for the debugging @ylwu-amzn! For future people who find this thread the issues have been resolved in the blueprint. There was a parameter that should have  $parameters.texts but was incorrectly put into the java code as $parameters.prompt. I've updated the blueprint to reflect $parameters.prompt until the java code can be fixed.
The second issue was with the pre/post process functions that were missing in the templates. These have been added in PR #1351.


Fix version

Currently the installed plugin is reported as "0.3.4" which is clearly wrong.

Hm, not on all devices. Maybe a cache or old version?

Yep, gem uninstall fastlane-plugin-ionic and then bundle install fixed it.


Allow passing of command line arguments via file

Is your feature request related to a problem? Please describe.

We rely on AZ CLI to maintain our service infra. One of the things that we do is configure Web Access Firewall rules to allow access to endpoints only to certain IP address ranges. Unfortunately, the list of IP address ranges is too long and we're running into a problem with command line length (at least on Windows). I.e., when fully constructed, az cdn waf policy custom-rule set command line results in "The command line is too long" error message, not an actual functionality being performed.
Describe the solution you'd like

That'd be great if we could pass command line args via file instead of listing them all in the command line.
For example, 7-zip allows using @listfile when it comes to passing a list of files:
Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...] [@listfile]
[...]
<Switches>
  -ai[r[-|0]]{@listfile|!wildcard} : Include archives
  -ax[r[-|0]]{@listfile|!wildcard} : eXclude archives

Given that AZ CLI has a diverse set of commands, I'd go with something like az @argfile to avoid figuring out which specific commands must be updated to allow passing a file instead of a list of args.

@jiasli to take a look


Docs sample changes default namespace.

I followed the default docs getting started guide on a mac today, and got this error:
Compiling aspnetcoreapp for .NETCoreApp,Version=v1.0
/usr/local/share/dotnet/dotnet compile-csc @/Users/colin/Projects/dotnet/aspnetcoreapp/obj/Debug/netcoreapp1.0/dotnet-compile.rsp returned Exit Code 1
/Users/colin/Projects/dotnet/aspnetcoreapp/Program.cs(12,29): error CS0246: The type or namespace name 'Startup' could not be found (are you missing a using directive or an assembly reference?)

A quick inspection revealed that the namespace declarations are not the same.
With my setup (latest dotnet core setup as of today) running a dotnet new gave me a Program.cs namespace of namespace ConsoleApplication, rather than the project/folder name as shown in the guide of namespace aspnetcoreapp. Clearly, because the namespaces don't match and there is no full qualification of Startup, it can't find the class leading to the above error.
Unless I'm misunderstanding the intended behavior, this is just a missing highlight on step 6 showing the namespace change (or alternately fully qualifying including the namespace).
I will submit a pull request with a fix shortly.

fixed buy https://github.com/aspnet/Docs/pull/1653


Keccak/32bit

This PR creates a 32-bit decomposition gate to be used in composition with the Keccak Xor gate in this PR.

Just for continuity of this conversation, I am pasting here a comment I wrote to Matthew so we can all be aware of a potential change for this gate:
Actually, regarding the current decomposition gate, I had an algebra question that was worrying me. The current gate decomposes 2 64-bit words into 32-bit halves (each), and just checks for each whether word = hi * 2^32 + lo. Now, it checks if word is a 64-bit word thanks to a range check (thus in total checking 2 words means 3 rows), but it does not check that hi or lo are 32bits. Is the latter needed? Meaning, could hi and lo be larger field elements such that after doing hi * 2^32 + lo they gave a 64bit word? Potentially yes, right?
Thus, if we indeed needed to check them as well I was thinking of a variant of the gate that instead checked just one word per row, but no need of range check for the 64-bit thing (as it would be implicit). It is basically a dupe of RangeCheck in the following sense:
0  - word
1  - lo_half
2  - hi_half
3  - lo_limb_0 -> 12bit plookup
4  - lo_limb_1 -> 12bit plookup
5  - hi_limb_0 -> 12bit plookup
6  - hi_limb_1 -> 12bit plookup
7  - lo_crumb_0 -> 2bit crumb constraints
8  - lo_crumb_1 -> 2bit crumb constraints
9  - lo_crumb_2 -> 2bit crumb constraints
10 - lo_crumb_3 -> 2bit crumb constraints
11 - hi_crumb_0 -> 2bit crumb constraints
12 - hi_crumb_1 -> 2bit crumb constraints
13 - hi_crumb_2 -> 2bit crumb constraints
14 - hi_crumb_3 -> 2bit crumb constraints

Then the constraints would be similar, word = hi_half * 2^32 + lo_half and lo_half = lo_limb_0 + lo_limb_1*2^12 + lo_crumb_0*2^24 + lo_crumb_1*2^26 + lo_crumb_2*2^28 + lo_crumb_3*2^30 and the same for high. Then, checking 2 words have 64bits take 2 rows instead of 3, so even if algebraically we didn’t need those checks, it still seems worth the change.

I am merging the 32-bit decomposition branch to keccak/xor for continuity before I merge both approaches following Matthew's proposal.


Task 1: Gather information related to requirement for "Alerting Workflow" in XC3

User stories
#123
Task 1

Started working on requirement and gather information for Alerting workflow.
Demo Video by Faraz
Have to do R&D:

On which level we have add alert. (before data populate on grafan then in ec2 user data). After data get populated on grafana. ( create lambda which will add alert.)
Scalable solution proposal. (for any number of panel).
Limitation and drawbacks of solution.

https://docs.google.com/document/d/1L-oyESgBCpxb5iZw4vyPFcVYngQL1DDlbH3NxlsITnA/edit#heading=h.l5e4jjtcw5hm


HystrixRequestContext to implement java.lang.AutoCloseable

Any plans? Its usage pattern prompts for Java 7 try-with-resources.

Yes, good idea.  I'll get to this in one of the upcoming releases

Switched back to Java 6 (see #722 ).  Will hold off on this until I have firmed up a better migration plan for Java

Merged into 2.0.x branch in #1175


#q7u6bES5 Working on article CRUD

What does this PR do?

This PR contains CRUD of article

Description of Task to be completed?
create the create article API
store an article to the mongodb database
How should this be manually tested?
clone this repo
In the terminal run "npm run dev"

In postman refer to this api | link "http://localhost:3000/api/v1/articles" and use post ,get and DELETE , PUT followed by ID

In body Click the form-data section and pass in this key and value pair

title : "Add a title here"

content: "add the message here"

Image : "Upload the image "

Change the text to file on uplloading the image

Finally go to create the .env file in root folder and use this link "DEVELOPMENT_DB=mongodb://<IP_ADDRESS>:27017/MyBrandDB
Add also the API key from cloudinary and add it in .env file CLOUDINARY_URL=cloudinary://387928576756634:hzIFUYDpizUTgKxncrBuqydArCo@dd95ovx7s
Any background context you want to provide?

No

What are the relevant pivotal tracker stories?

https://trello.com/c/q7u6bES5/22-blog

Screenshots (if appropriate)
![1](https://user-images.githubusercontent.com/58785988/151583266-9bf3e90c-dd87-47e8-9f6c-

d0bc0da7c94

4.png)

I have  removed the unnecessary code i think it was the error status


[ Enhancement ] Ask for confirmation before deleting a transaction

Currently if we click delete button for a transaction it directly gets deleted. It would be better if we could have a kind of confirmation asked from the user if they are sure about the deletion. It would prevent the user from accidentally deleting a transaction.

@princid could you take a look at this enhancement. If you feel this is a valid issue please add the required labels and feel free to share any suggestions regarding this.

Sure! that's a good idea actually.

@princid I have a raised a PR for this issue please review it whenever you have time

@princid I have noticed this PR have been reverted #29 , any specific reason for that ?


Fix Close process

#343 after more, close #206
maybe some #269 #123

Maybe a comment is in order above it?

also is win.close or app.quit what you want?

Thanks btw!

@rauchg yeah app.quit as well but win.close call window-all-closed event, I tried at the same time everything is fine


[requires.io] dependency update on master branch

Coverage decreased (-0.5%) to 97.662% when pulling 8ac1dec412be378dea98368576f8a1e5fc155ef7 on requires-io-master into 6da677d4a8cc7e02748d477aa839b9b4b672e7a8 on master.


Extending fims-web-app to provide a UI for the Group microservice

Description
For GSoC, I have extended the fims-web-app to provide a web UI for the Group microservice. I have consumed almost all the endpoints from the microservice and two are left which am working on
What's included?

Added Create groupDefinition, view groupDefinition and Edit
Added manage group, update group
Implemented group command (Activate, Close and Reopen)
UI for meetings and sign-off meeting

Test Steps

Pull
npm i
npm run dev

Screenshots or link to CodePen/Plunker/JSfiddle

Hello,
I have reverted the base Urls for the different services in the
proxy.conf.json file to localhost.
I have also ran

npm i
npm audit fix

to fix any vulnerabilities issues and I have updated my PRs
Regards
Ruphine Kengne
On 2 August 2018 at 14:22, Awasum Yannick<EMAIL_ADDRESS>wrote:

@kengneruphine https://github.com/kengneruphine
This commit changes the base urls of the different services:
0b00eda
https://github.com/apache/fineract-cn-fims-web-app/commit/0b00edaa8ce823c51661674793902940caeaaf22
People will not always use your cloud instance so please could you revert
the file to point to localhost for the service base Url.
Also check vulnerabilities.
After these, I think we can merge.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/apache/fineract-cn-fims-web-app/pull/6#issuecomment-409924278,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ASdvfe-QRFVsE1w3lgphBki4hMPuF7ckks5uMv0ygaJpZM4Vq2hV
.


Add type DelegateContractId

Problem
SDK currently do not support this type that is needed for contracts.
Solution
Add support
Alternatives
No response

Note that in the HAPI specification, a ContractId is a valid Key, can we extend the Key type within the SDKs to allow a ContractId to be specified rather than creating a new type/builder ?
Note sure of the ramifications of this proposal, but it would be more closely aligned to the notion of a contract acting as a key.


Add create_namespace_if_not_exists method

Resolves #709

Hi @ndrluis thank you for working on this PR.
What are your thoughts on aligning the implementation with the way create_table_if_not_exists method is currently implemented in the abstract base class Catalog? The benefit I see with this approach is that we will only have to implement it once in the abstract base class, instead of having to make the changes across different catalog implementations.

@syun64 Thank you for your review. I have made the requested change!


implement async support, fixes #9

Add a http pool, configurable via cli param
most functions annotated async and use http pool.

Future improvements suggest a clean up of logging/error handling.

Right now the pool does queue/download/err messages to std/logging, because that removes duplication of log messages at call site. But some call sites might want to handle errors specifically.
I added a quick example on manifest downloader where it returns false if the processing failed. Returning a bool for errors is a bit meh though, but it serves the purpose of the "go read logs" message I also added.

Just a quick copy/paste from elsewhere, and hacking it up over lunch - feel free to adopt/rewrite instead of merging.

Read, not ran. I'll test it out over the weekend.


Rename seed parameter in snakemake

Currently in the snakemake workflow:

random_seed specifies the overall seed parameter passed to various steps in the pipeline. This can be null (default) to not set the seed at all.
seed specifies the particular random seeds passed to split the dataset into test/train folds. The number of seeds thus determines the number of independent runs, but otherwise the split behavior is deterministic once a dataset is created. (since this "run number" is currently interpreted as the seed).

The seed parameter can thus be replaced by something clearer (like instances), and we can remove the np.seed() call deep inside the implementation for the affected steps, but keep the set_seed at the outer level.
Of course the files created by test_snakemake.py will be different, so a new hash would have to be computed.

we have train_seed and sample_seed now, in addition to random_seed, so closing this..


Update MSDN links, Part 32

@NextTurn : Thanks for your contribution! The author, @KumudD, has been notified to review your proposed change.

Hi @NextTurn - Thank you for your submission. We are addressing this item internally in the private repository in the near future. We'll close this pull request. Thanks again.


[DPLR-16229] allow replace a file to existent folder.

To allow upload to a fixed file in a project like /latest or /stable, we need to be able to upload on a directory with files.

It seems that continuous integration is broken :(
We should also fix it before continuing. Let me know if you need help, probably next week I could spend some time on it.


[Lead space] Create medium variation design specs

User story

As a [user role below]:
developer on the DDS Squad

I need to:
have the Lead space design specs

so that I can:
correctly create / change the Lead space component

Additional Information

Acceptance Criteria

[x] A Sketch file is created or updated with the Lead space design and specs
[x] Create a Box folder for the Lead space (if not already there)
[x] The design specs and pdf version are added to the Box folder
[x] Update the Agile Board epic with the spec link
[ ] Add Box folder link to the website content if it exists

Design specs can be found here https://ibm.ent.box.com/folder/94761007991?s=d9jey3rlfxqmxu059f0x9dtcx7f5ehuh
There's an extended file named component--lead-space--design-specs--v2.0 and also a simplified file named component--lead-space--simplified-design-specs--v2.0
Both files are as .sketch and .pdf.


central configuration: two very similar checkboxes in the config

When editing the configuration of a single device, there are two options related to the central configuration shown on the same panel:
[x]  Enable the control by central mode ('central_mode')
…
[ ]  Use central main configuration

It's unclear what the difference between the two is. In my personal case, I configured a central configuration after upgrading to 5.x, then wanted to reconfigure all existing climate devices to use this central configuration.
In case the configuration really needs two checkboxes related to the central configuration panel, I suggest to a) place them underneath each other instead of having a few other options inbetween, b) add a description for the 4 combination options (both unchecked, one checked, both checked), c) remove the ('central_mode') in the text as no user will ever see the variable names used internally and d) improve their naming.
For now I won't reconfigure my existing devices as I do not know what the proper combination of checked and unchecked boxes is that does not cause something I wouldn't want. :)

Hello @maia ,,
There is two features:

a central configuration that allow to centralize some configuration,
a central mode which allow to control all VTherm with a unique select entity. The select entity needs the central config but is a separate feature.

It is really not easy to explain and certainly more easier to understand when you use it.
Is it more clear now ?

Hmm, I'm not sure if I correctly understand the explanation, let me try. Is this interpretation correct?
Three modes are available:

Every Versatile Thermostat climate entity is completely configured on its own. Choose this option, if you don't want to have any kind of central configuration or management.
Some aspects of Versatile Thermostat climate entities are configured centrally. This allows to e.g. define min/max temperature, open window detection,… at a central, single instance. For each climate entity you configure you can then choose to use the central configuration or to override them with custom settings.
All Versatile Thermostat climate entities are controlled with a single entity. This requires a central configuration, only some aspects (like the room temperature sensor) are specific to the climate entities. But everything else (target temperature, preset, climate mode) is controlled with the single entity.

In case this description is more or less correct, I suggest not only to put it into the documentation but also to update the config panel itself as currently it's very confusing ("control by central mode" versus "central main configuration"). Also, if there are only three options and not 4 (no central mode possible without central configuration), this shouldn't be two checkboxes but rather three radio items (or a dropdown).

Correct. I will take that into future documentation.
Just one thing: a mode is a runtime way of working in my vocabulary and a configuration is to configure at rest (not in runtime). That is why a central configuration or a standalone configuration in not a mode.
But that is certainly only in my head.
Thanks for the head up !

README have been updated here: https://github.com/jmcollin78/versatile_thermostat/blob/main/README.md#configuration
I will see to adapt the configuration box.

Thanks. I totally agree, it's very hard to tell what is clear to everyone and what needs explanation.

Release 5.2.1


Error for Invalid promotion caused by a subscription loop is not surfaced to the user

When attempting to promote an invalid update that would form a subscription loop, the promotion appears successful, but nothing happens. Only once the user clicks into the stage will they know it failed due to this error.
What the user will see (Stage "test" has been promoted.):

What they need to find to understand that the promotion failed:

This error should surfaced on the main page instead of only on the stage's page, possibly with an icon on the stage or a pop-up message.

I think the main trouble here is that the current pop up makes it appear that the Promotion, succeeded, when really it is just acknowledging the request to promote. (The actual promotion is carried out asynchronously.)
I think a quick band-aid here could be to change the language in the current pop up and bit and use an icon that is more reflective of a pending state.

possibly with an icon on the stage

Longer term, I like this suggestion of something that makes it obvious, at a glance, that a Stage's most recent Promotion has failed.

Tentatively assigning to @rbreeze. Feel free to tackle or pass.

I'm going to solve this specific issue by updating the banner content as @krancour suggested.
Then will continue to track the larger issue of surfacing promotion failures in this issue: https://github.com/akuity/kargo/issues/1207


remove findDOMNode usage Table component

The React findDOMNode() API has been deprecated since 2018 and will be removed in React 19, the next major version. This PR removes findDOMNode usage from the Table component for compatibility with Strict Mode and to move towards React 19 compatibility. The WindowScroller and CellMeasurer components also use findDOMNode() but have existing workaround by using the registerChild from the render callback.
My solution in this PR was to add a getDOMNode method on the Grid class and call that from Table.  An alternative I considered is to  add a new ref domNodeRef to Table and use that to get the reference.
Before submitting a pull request, please complete the following checklist:

[ ] The existing test suites (npm test) all pass
[ ] For any new features or bug fixes, both positive and negative test cases have been added
[ ] For any new features, documentation has been added
[ ] For any documentation changes, the text has been proofread and is clear to both experienced users and beginners.
[ ] Format your code with prettier (yarn run prettier).
[ ] Run the Flow typechecks (yarn run typecheck).

I totally missed that this overlapped with #1855. Please close if unwanted.


Fix typo in documentation pointing to Network.PREPROD

Network should probably longterm also have values to distinguish the subnetworks

Codecov Report

Merging #152 (536e2ba) into main (f2ec54e) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #152   +/-   ##
=======================================
  Coverage   86.44%   86.44%
=======================================
  Files          26       26
  Lines        2752     2752
  Branches      651      651
=======================================
  Hits         2379     2379
  Misses        281      281
  Partials       92       92

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Revert "Auto-update"

This reverts commit eea103841f5070263cb3e8a653ca46830dd53850.

Thank you for this pull request. What's your motivation behind reverting the auto-update?

I'm closing this now.


psphinx - error on RPI, no error when using SSH? | optimize audio input? | creating langmodels for sphix?

Hello and thanks for bothering with this issue(s):

I installed Jasper somewhat successfully (using the dev-branch) with Pocketsphinx (5prealpha) for STT and Flite for TTS. Now I startet Jasper via SSH and everything worked as expected, however, when starting Jasper directly in the Pi-Console (raspbian stretch with Desktop) the debug information tells me that Pocketsphinx is not installed:
pi@raspberrypi:~ $ cd /home/pi/jasper-client/
pi@raspberrypi:~/jasper-client $ ./Jasper.py --debug
*******************************************************
*             JASPER - THE TALKING COMPUTER           *
* (c) 2015 Shubhro Saha, Charlie Marsh & Jan Holthuis *
*******************************************************
DEBUG:jasper.application:Trying to read config file: '/home/pi/.jasper/profile.yml'
WARNING:jasper.application:language not specified in profile, using 'en-US'
INFO:jasper.application:audio_engine not specified in profile, using defaults.
DEBUG:jasper.application:Using Audio engine 'pyaudio'
DEBUG:jasper.application:Using STT engine 'sphinx'
DEBUG:jasper.application:Using passive STT engine 'sphinx'
DEBUG:jasper.application:Using TTS engine 'flite-tts'
INFO:jasper.application:Using keyword 'Jasper'
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/speechhandler/joke
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/speechhandler/joke/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: joke 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/speechhandler/life
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/speechhandler/life/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: life 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/speechhandler/notifications
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/speechhandler/notifications/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: notifications 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/speechhandler/birthday
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/speechhandler/birthday/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: birthday 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/speechhandler/clock
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/speechhandler/clock/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: clock 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/speechhandler/mpdcontrol
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/speechhandler/mpdcontrol/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: mpdcontrol 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/speechhandler/gmail
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/speechhandler/gmail/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: gmail 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/speechhandler/news
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/speechhandler/news/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: news 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/speechhandler/unclear
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/speechhandler/unclear/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: unclear 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/speechhandler/hackernews
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/speechhandler/hackernews/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: hn 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/speechhandler/weather
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/speechhandler/weather/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: weather 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/tts/google-tts
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/tts/google-tts/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: google-tts 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/tts/ivona-tts
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/tts/ivona-tts/plugin.info' parsed successfully!
WARNING:jasper.pluginstore:Plugin at '/home/pi/jasper-client/plugins/tts/ivona-tts' skipped! (Reason: No module named pyvona)
Traceback (most recent call last):
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 156, in detect_plugins
    plugin_info = self.parse_plugin(root)
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 195, in parse_plugin
    self._categories_map.values())
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 51, in parse_plugin_class
    ("py", "r", imp.PKG_DIRECTORY))
  File "/home/pi/jasper-client/plugins/tts/ivona-tts/__init__.py", line 2, in <module>
    from .ivona import IvonaTTSPlugin
  File "/home/pi/jasper-client/plugins/tts/ivona-tts/ivona.py", line 4, in <module>
    import pyvona
ImportError: No module named pyvona
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/tts/flite-tts
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/tts/flite-tts/plugin.info' parsed successfully!
DEBUG:jasper.diagnose:Checking executable 'flite'...
DEBUG:jasper.diagnose:Executable 'flite' found: '/usr/bin/flite'
DEBUG:jasper.pluginstore:Found valid plugin: flite-tts 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/tts/mstranslator-tts
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/tts/mstranslator-tts/plugin.info' parsed successfully!
WARNING:jasper.pluginstore:Plugin at '/home/pi/jasper-client/plugins/tts/mstranslator-tts' skipped! (Reason: No module named mstranslator)
Traceback (most recent call last):
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 156, in detect_plugins
    plugin_info = self.parse_plugin(root)
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 195, in parse_plugin
    self._categories_map.values())
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 51, in parse_plugin_class
    ("py", "r", imp.PKG_DIRECTORY))
  File "/home/pi/jasper-client/plugins/tts/mstranslator-tts/__init__.py", line 2, in <module>
    from .plugin import MicrosoftTranslatorTTSPlugin
  File "/home/pi/jasper-client/plugins/tts/mstranslator-tts/plugin.py", line 2, in <module>
    import mstranslator
ImportError: No module named mstranslator
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/tts/osx-tts
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/tts/osx-tts/plugin.info' parsed successfully!
WARNING:jasper.pluginstore:Plugin at '/home/pi/jasper-client/plugins/tts/osx-tts' skipped! (Reason: Invalid platform!)
Traceback (most recent call last):
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 156, in detect_plugins
    plugin_info = self.parse_plugin(root)
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 195, in parse_plugin
    self._categories_map.values())
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 51, in parse_plugin_class
    ("py", "r", imp.PKG_DIRECTORY))
  File "/home/pi/jasper-client/plugins/tts/osx-tts/__init__.py", line 2, in <module>
    from .osx import MacOSXTTSPlugin
  File "/home/pi/jasper-client/plugins/tts/osx-tts/osx.py", line 13, in <module>
    raise ImportError('Invalid platform!')
ImportError: Invalid platform!
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/tts/festival-tts
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/tts/festival-tts/plugin.info' parsed successfully!
DEBUG:jasper.diagnose:Checking executable 'text2wave'...
DEBUG:jasper.diagnose:Executable 'text2wave' not found
WARNING:jasper.pluginstore:Plugin at '/home/pi/jasper-client/plugins/tts/festival-tts' skipped! (Reason: Executables "text2wave" and/or  "festival" not found!)
Traceback (most recent call last):
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 156, in detect_plugins
    plugin_info = self.parse_plugin(root)
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 195, in parse_plugin
    self._categories_map.values())
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 51, in parse_plugin_class
    ("py", "r", imp.PKG_DIRECTORY))
  File "/home/pi/jasper-client/plugins/tts/festival-tts/__init__.py", line 2, in <module>
    from .festival import FestivalTTSPlugin
  File "/home/pi/jasper-client/plugins/tts/festival-tts/festival.py", line 10, in <module>
    raise ImportError('Executables "text2wave" and/or  "festival" not found!')
ImportError: Executables "text2wave" and/or  "festival" not found!
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/tts/espeak-tts
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/tts/espeak-tts/plugin.info' parsed successfully!
DEBUG:jasper.diagnose:Checking executable 'espeak'...
DEBUG:jasper.diagnose:Executable 'espeak' not found
WARNING:jasper.pluginstore:Plugin at '/home/pi/jasper-client/plugins/tts/espeak-tts' skipped! (Reason: espeak executable not found!)
Traceback (most recent call last):
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 156, in detect_plugins
    plugin_info = self.parse_plugin(root)
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 195, in parse_plugin
    self._categories_map.values())
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 51, in parse_plugin_class
    ("py", "r", imp.PKG_DIRECTORY))
  File "/home/pi/jasper-client/plugins/tts/espeak-tts/__init__.py", line 2, in <module>
    from .espeak import EspeakTTSPlugin
  File "/home/pi/jasper-client/plugins/tts/espeak-tts/espeak.py", line 11, in <module>
    raise ImportError("espeak executable not found!")
ImportError: espeak executable not found!
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/tts/cereproc-tts
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/tts/cereproc-tts/plugin.info' parsed successfully!
WARNING:jasper.pluginstore:Plugin at '/home/pi/jasper-client/plugins/tts/cereproc-tts' skipped! (Reason: No module named suds)
Traceback (most recent call last):
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 156, in detect_plugins
    plugin_info = self.parse_plugin(root)
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 195, in parse_plugin
    self._categories_map.values())
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 51, in parse_plugin_class
    ("py", "r", imp.PKG_DIRECTORY))
  File "/home/pi/jasper-client/plugins/tts/cereproc-tts/__init__.py", line 2, in <module>
    from .cereproc import CereprocTTSPlugin
  File "/home/pi/jasper-client/plugins/tts/cereproc-tts/cereproc.py", line 3, in <module>
    import suds
ImportError: No module named suds
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/tts/pico-tts
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/tts/pico-tts/plugin.info' parsed successfully!
DEBUG:jasper.diagnose:Checking executable 'pico2wave'...
DEBUG:jasper.diagnose:Executable 'pico2wave' not found
WARNING:jasper.pluginstore:Plugin at '/home/pi/jasper-client/plugins/tts/pico-tts' skipped! (Reason: Executable 'pico2wave' not found!)
Traceback (most recent call last):
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 156, in detect_plugins
    plugin_info = self.parse_plugin(root)
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 195, in parse_plugin
    self._categories_map.values())
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 51, in parse_plugin_class
    ("py", "r", imp.PKG_DIRECTORY))
  File "/home/pi/jasper-client/plugins/tts/pico-tts/__init__.py", line 2, in <module>
    from .pico import PicoTTSPlugin
  File "/home/pi/jasper-client/plugins/tts/pico-tts/pico.py", line 13, in <module>
    raise ImportError("Executable '%s' not found!" % EXECUTABLE)
ImportError: Executable 'pico2wave' not found!
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/tts/mary-tts
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/tts/mary-tts/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: mary-tts 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/audioengine/pyaudio-ae
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/audioengine/pyaudio-ae/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: pyaudio 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/audioengine/alsa-ae
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/audioengine/alsa-ae/plugin.info' parsed successfully!
WARNING:jasper.pluginstore:Plugin at '/home/pi/jasper-client/plugins/audioengine/alsa-ae' skipped! (Reason: No module named alsaaudio)
Traceback (most recent call last):
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 156, in detect_plugins
    plugin_info = self.parse_plugin(root)
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 195, in parse_plugin
    self._categories_map.values())
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 51, in parse_plugin_class
    ("py", "r", imp.PKG_DIRECTORY))
  File "/home/pi/jasper-client/plugins/audioengine/alsa-ae/__init__.py", line 2, in <module>
    from .alsaaudioengine import AlsaAudioEnginePlugin
  File "/home/pi/jasper-client/plugins/audioengine/alsa-ae/alsaaudioengine.py", line 4, in <module>
    import alsaaudio
ImportError: No module named alsaaudio
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/stt/witai-stt
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/stt/witai-stt/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: witai-stt 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/stt/pocketsphinx-stt
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/stt/pocketsphinx-stt/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: sphinx 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/stt/kaldigstserver-stt
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/stt/kaldigstserver-stt/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: kaldigstserver-stt 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/stt/julius-stt
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/stt/julius-stt/plugin.info' parsed successfully!
DEBUG:jasper.diagnose:Checking executable 'julius'...
DEBUG:jasper.diagnose:Executable 'julius' not found
WARNING:jasper.pluginstore:Plugin at '/home/pi/jasper-client/plugins/stt/julius-stt' skipped! (Reason: Can't find julius executable)
Traceback (most recent call last):
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 156, in detect_plugins
    plugin_info = self.parse_plugin(root)
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 195, in parse_plugin
    self._categories_map.values())
  File "/home/pi/jasper-client/jasper/pluginstore.py", line 51, in parse_plugin_class
    ("py", "r", imp.PKG_DIRECTORY))
  File "/home/pi/jasper-client/plugins/stt/julius-stt/__init__.py", line 2, in <module>
    from .julius import JuliusSTTPlugin
  File "/home/pi/jasper-client/plugins/stt/julius-stt/julius.py", line 10, in <module>
    raise ImportError("Can't find julius executable")
ImportError: Can't find julius executable
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/stt/google-stt
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/stt/google-stt/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: google 1.0.0
DEBUG:jasper.pluginstore:Found plugin candidate at: /home/pi/jasper-client/plugins/stt/att-stt
DEBUG:jasper.pluginstore:Plugin info file '/home/pi/jasper-client/plugins/stt/att-stt/plugin.info' parsed successfully!
DEBUG:jasper.pluginstore:Found valid plugin: att-stt 1.0.0
INFO:pyaudio_1_0_0.pyaudioengine:Initializing PyAudio. ALSA/Jack error messages that pop up during this process are normal and can usually be safely ignored.
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'defaults.bluealsa.device'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4996:(snd_config_expand) Args evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM bluealsa
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'defaults.bluealsa.device'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4996:(snd_config_expand) Args evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM bluealsa
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
INFO:pyaudio_1_0_0.pyaudioengine:Initialization of PyAudio engine finished
DEBUG:pyaudio_1_0_0.pyaudioengine:Found 10 PyAudio devices
WARNING:jasper.application:input_device not specified in profile, defaulting to 'default' (Possible values: usb-audio-device-hw-00, sysdefault, spdif, default)
DEBUG:pyaudio_1_0_0.pyaudioengine:Found 10 PyAudio devices
DEBUG:pyaudio_1_0_0.pyaudioengine:Found 10 PyAudio devices
WARNING:jasper.application:output_device not specified in profile, defaulting to 'default' (Possible values: usb-audio-device-hw-00, bcm2835-alsa-hw-10, bcm2835-alsa-iec958-hdmi, sysdefault, front, surround40, iec958, spdif, dmix, default)
DEBUG:pyaudio_1_0_0.pyaudioengine:Found 10 PyAudio devices
WARNING:jasper.application:Plugin 'weather' skipped! (Reason: Weather location not configured!)
Traceback (most recent call last):
  File "/home/pi/jasper-client/jasper/application.py", line 179, in __init__
    plugin = info.plugin_class(info, self.config)
  File "/home/pi/jasper-client/plugins/speechhandler/weather/weather.py", line 151, in __init__
    raise ValueError('Weather location not configured!')
ValueError: Weather location not configured!
Traceback (most recent call last):
  File "./Jasper.py", line 5, in <module>
    jasper.main()
  File "/home/pi/jasper-client/jasper/__main__.py", line 48, in main
    batch_file=p_args.batch_file)
  File "/home/pi/jasper-client/jasper/application.py", line 202, in __init__
    self.config)
  File "/home/pi/jasper-client/plugins/stt/pocketsphinx-stt/sphinxplugin.py", line 38, in __init__
    raise ImportError("Pocketsphinx not installed!")
ImportError: Pocketsphinx not installed!
pi@raspberrypi:~/jasper-client $

Is this in any way normal? If yes, how is it explainable and is it possible correct that?

While installing Jasper and doing some research, I often read, that audio samples for STT were recordet at 16kHz, making 44.1kHz and 48kHz audio input rather inaccurate. Is it possible to remedy that without buying new hardware? If yes, how (e.g. code) and where (e.g. precise code part of a file).
Are there other steps to take, to optimze Pocketsphinx, like using longer keywords. (Running Jasper completely offline is important to my projects)

The Tutorial explaines, how to create Wordfile, pronunciation dictionary and language model.
I am uncertain how to achieve the same with Jasper. There are (again, dev-branch) the jasper/data/standard_phrases (not containing "JASPER").
So which files do I have to edit in which way, to change the keywords and further the welcoming-message ("How can I be of service") if this is also possible.
What do I need to pay attention to, when creating a new model?
I would really appreciate, if someone is able to answer a question or having some advice.
Thank you in advance!

I solved issue 1:
There were still remains from my old Jasper-installation (Main-Branch).
I uninstalled Sphinxbase and Pocketsphinx in pip and fully removed my old Jasper-folder.
Now everything works fine, when starting directly from the Pi console.
I am still eager for input on issue 2 and 3.

See function def _write_frames_to_file(self, frames): code at line 111.
No need to create pronunciation dictionary and language model, Jasper will create them for you.
Keyword you can chnge in profile.yml keyword: 'COMPUTER'

Thanks for your answers. Found and successfully changes both.


How to write unit tests for methods that use Knex.

(Originally posted in #1659, moved here for further discussion.)
I'm kind of in the dark on this one - the knex docs cover the barebones of transactions, but when I google "using knex.js for unit testing" and "ava.js + knex" and "ava.js + database", I couldn't find anything particularly instructive to show me a good way, so I fell back on my Ruby experience where wrapping a unit test in a transaction is a common technique for reseting the DB after each test.

@odigity I wouldn't suggest of doing that because your tests will end up using just one connection instead of connection pool and it will not represent real world usage of your app.

That did occur to me, but I was willing to accept that if it allowed me to use a simple, write-once method for implementing post-test DB cleanup.  (I did set my pool min/max to 1 to be sure.)  If there's a way to accomplish this while supporting concurrent connections, I will absolute embrace that.

Also its pretty much impossible to implement unless the application you are testing is running its queries in the same transaction that was started inside test code (you would need to start transaction in test then start your app and pass the created transaction to app so that it makes all the queries to the same transaction and nested transactions might behave starngely...).

The way I hoped/expected it to work is:

In each unit test, I create a transaction which produces trx.

I then require the module I want to test and pass the trx object to the module constructor so it will be used by the module, thus resulting in all queries happening inside the transaction.

After the module method returns (or throws error), I run my assertions on the resulting state of the DB, then call trx.rollback() to undo everything from the start to prepare for the next test.

So, that's what I'm trying to achieve and how I originally intended to achieve it.  I'm eager to learn more about:

In what whys I'm misunderstanding how Knex.js works and should be used.

Best practices for writing atomic unit tests for code that touches the database.

I apparently did a poor job googling last night, because I just tried again with "how to write atomic unit tests with knex.js", and am getting some interesting results.  Going to read through them now.  Will post again if I learn something.

Nope - got nothing.  Summary in chronological order of sources:
2016-04-21 https://medium.com/@jomaora/knex-bookshelf-mocks-and-unit-tests-cca627565d3
Strategy:  Use mock-knex.  I don't want to mock the DB - I want to test my methods against an actual MySQL DB to ensure correct behavior - but I took a look at mock-knex anyway... it may just be the worst designed library I've ever encountered.  :(
2016-04-28 http://mherman.org/blog/2016/04/28/test-driven-development-with-node/
Strategy:  Rollback/remigrate/reseed DB after each test.  That seems like a great deal of overhead for each test, and will run terribly slow.  Concurrency could be achieved by generating a UUID for each test's DB name, but that just seems like an awful solution compared to the elegance of transactions...
2015-09-23 http://stackoverflow.com/a/32749601/210867
Strategy:  Use sqlite for testing, create/destroy DB for each test.  I've covered both reasons I dislike this approach above.
So... still fishing for suggestions, and additional guidance on how Knex transactions actually work, as well as how to properly apply them to my use case.

@odigity We are doing our "unit" tests like this:

Start up system, initialize DB and run migrations

Before each test we truncate all the tables and sequences (with knex-db-manager package)

Insert data required for the test case (we use knex based objection.js ORM for that which allows us to insert nested object hierarchies with single command, it knows how to optimise inserts so that it doesn't have to do separate insert for each row in the table, but usually just one insert per table)

run 1 test and goto step 2

With e2e tests we have implemented saveState / restoreState (with pg_restore/pg_dump) methods, which allows us to roll back to certain state during the test run, so we don't have to restart test run every time when some test fails after running 20 minutes of tests.

That's similar to what I started doing yesterday because it's simple and straight-forwad and I needed to make progress.
Have you considered the strategy of wrapping tests in transactions and rolling back after as a faster alternative to truncate-all-tables?  That seems like the ideal to me, if I can figure out the implementation.

I suppose if you run db and application code in the same process you can create transaction in test code and then register that transaction to be your knex-instance (knex instance and transaction looks a little bit different in some cases but usually you can use transaction instance like normal knex instance).
Then you start your application code, which fetches the transaction instead of normal pooled knex instance and start doing queries through that.
Pretty much the same way that you described in OP. How you described it sounds viable.
I have considered using transactions for reseting DB in tests couple of years ago, but rejected it because I want to connection pooling to work in tests pretty much the same way that it works in app + truncate / init is fast enough for us.

Is there no way to achieve connection affinity for the duration of the transaction such that all queries run in one batch will use the same connection, and thus be wrappable in a single transaction?
The truncate strategy kind of works, but it's very brute force.  I currently have a test.after.always() hook in each test file that truncates the tables affected by the tests in that file (usually one table per file), but I can think of edge cases that would get screwed up by that.
For example, if two tests from different test files that touch the same table run around the same time, one file's truncate hook might kick off while the second file's tests are in the middle of running, screwing up that test.
Lastly, I'm still unclear on exactly how transactions work in Knex.  If I create a trx with knex.transaction(), will all queries run using trx automatically be part of the transaction?  Do I have to commit/rollback manually?  (Assuming no thrown errors.)

Is there no way to achieve connection affinity for the duration of the transaction such that all queries run in one batch will use the same connection, and thus be wrappable in a single transaction?

I didn't understand this

The truncate strategy kind of works, but it's very brute force. I currently have a test.after.always() hook in each test file that truncates the tables affected by the tests in that file (usually one table per file), but I can think of edge cases that would get screwed up by that.

For example, if two tests from different test files that touch the same table run around the same time, one file's truncate hook might kick off while the second file's tests are in the middle of running, screwing up that test.

Even if you are using transactions to reset your test data you won't be able to run multiple tests in parallel in general case. Id sequences will be different and transactions may deadlock etc.

Lastly, I'm still unclear on exactly how transactions work in Knex. If I create a trx with knex.transaction(), will all queries run using trx automatically be part of the transaction? Do I have to commit/rollback manually? (Assuming no thrown errors.)

This one is found from documentation. If you dont return promise from callback in knex.transaction(callback) you need to commit / rollback manually. If callback returns promise, then commit / rollback is called automatically. In your case you'll probably have to rollback manually.

Even if you are using transactions to reset your test data you won't be able to run multiple tests in parallel in general case. Id sequences will be different and transactions may deadlock etc.

I'm randomly generating IDs for each record I insert.  Collisions are possible, but unlikely, and if it happens once some day, it's just a test - not customer-facing code.
As for concurrency, I'm assuming all queries that need to be grouped into a single transaction also have to use same DB connection, which I can achieve by setting my Knex pool size to 1.  I would then need to make the tests in a file serial with the .serial modifier.  However, I'd still have concurrency between test files (which is the most significant factor for performance) because Ava runs each test file in a separate child process.
I guess I should just go try it.

I got it working!
https://gist.github.com/odigity/7f37077de74964051d45c4ca80ec3250
I'm using Ava for unit testing in my project, but for this example, I just created a mock unit testing scenario with before/after hooks to demonstrate the concept.
Before Hook

Because obtaining a transaction is an asynchronous action, I create a new Promise to return from the before hook and capture its resolve method so it can be called in the transaction() callback.
I open a transaction.  In the callback, I...

save the tx handle in a place that will be accessible to the test and after hook
call the saved resolve method to inform the "test framework" that the before hook has completed, and the test can begin

Test — I execute two insert queries using the saved tx handle.
After Hook — I use the saved tx handle to rollback the transaction, thus undoing all changes made during the test.  Since the data is never committed, it can't even be seen by or interfere with other tests' activity.
On Concurrency
Knex
Knex lets you specify options for the connection pool size.  If you need to ensure all queries in a transaction run on the same connection (I assume we do), then you can achieve this by setting pool size to 1.
But wait... check out this comment in the source:
// We need to make a client object which always acquires the same
// connection and does not release back into the pool.
function makeTxClient(trx, client, connection) {

If I understand this correctly, it means Knex can be relied upon to ensure that all queries in a transaction go through the same connection, even if your pool is greater than 1!  So we don't need to sacrifice this particular degree of concurrency for our scenario.
BTW — The docs should probably reflect this essential and wonderful fact.
Ava
I know this Ava-specific rather than Knex-specific, but it's a popular framework, and the lessons are broadly applicable to most frameworks.
Ava runs each testfile in a separate process concurrently.  Within each process, it also runs all tests concurrently.  Both forms of concurrency are disableable using the --serial CLI option (which serializes everything) or the .serial modifier on the test method (which serializes the marked tests before running the rest concurrently).
Wrap-Up
When I put all of these facts together:

I can wrap each test in a transaction, which ensures (a) non-collision of test data (b) automatic post-test cleanup without truncation or remigration.  In fact, using this strategy, my test DB will literally never have a single record persisted to it, other than perhaps essential seed data.

I can continue to benefit from Ava's inter-testfile concurrency, since each testfile runs in a separate process, and will thus have it's own Knex connection pool.

I can continue to benefit from Ava's intra-testfile concurrency if I ensure that my connection pool is >= the number of tests in the file.  This shouldn't be a problem I don't put a huge number of tests in a single file, which I try to avoid anyway.  Also, the pool can be set with a range like 1-10, so you're not creating connections you don't need, but don't have to adjust a constant in each test file every time you add or remove a test.

Eager to get other peoples' thoughts, as I'm dabbling at the intersection of a large number of technologies that are new to me at the same time...

@odigity yup, transaction in knex is pretty much only a handle to dedicated connection where knex automatically adds BEGIN query when trx instance is created (actually transaction in SQL generally is just queries going to same connection prepended with BEGIN).
If knex wouldn't allocate connection for transaction, then transactions just wouldn't work at all.
Using uuid keys is not bad either, change of collision is really unlikely unless there are really many rows. ("If you use a 128-bit UUID, the 'birthday effect' tells us that a collision is likely after you've generated about 2^64 keys, provided you have 128 bits of entropy in each key.")
I suppose you got your answers figured out, so closing this 👍

Sorry to reopen, but I'm now observing unexpected behavior.  Specifically, it's working when it shouldn't be, which means my understanding needs correcting.
If I set pool size to 1, open a transaction, then execute a query without using it, it times out because it can't obtain a connection - which makes sense, because that connection has already been locked by the transaction.
However, if I set pool size to 1 and run four tests concurrently, each of which:

opens a transaction
runs queries
calls rollback at the end

They all work.  They shouldn't work - at least a few of them should get locked out by connection scarcity - but they all work fine, every time.
Does Knex have built-in queueing for queries when no connections are available at the time?  If so, why does my first example fail, instead of waiting for the transaction to finish before executing the non-tx query?
Or does Knex somehow multiplex multiple concurrent transactions onto a single connection?
Or is Knex actually creating sub-transactions on the 2nd, 3rd, and 4th invocation?  If so, that will probably randomly cause expected results...

@odgity In first case you have application side deadlock (your app is stuck in waiting for connection and acquireConnection timeout triggers).
In second case tests are actually ran serially, since everyone but one is waiting for connection. If you have enough tests doing that in parallel or your test cases are really slow acquireConnectionTimeout should trigger in second case too.
Multiplexing transactions in single connection is not possible. Nesting transactions is supported by  knex using savepoints inside transaction. If you are asking for new transaction from pool that wont happen either.

Thanks, that's really helpful.
Though I'm still a little confused about why executing a query locks when the connection is taken by an open transaction, but attempting to open a second new transaction patiently waits and then completes.

Run your code with DEBUG=knex:* environment variable and you'll see what pool is doing. Knex should wait also in the first case too until the "I couldnt get connection" timeout happen. So if your transaction is waiting until the second connection is acquired it is application level deadlock because both connections are waiting eachother (I don't know if this is your case though).

I found this thread very useful. It's nice to see that other people also care about writing tests that do not pollute the systems state. I initiated a project that allows people to write tests for code that uses knex that will rollback after the test has completed.
https://github.com/bas080/knest

@bas080 in general case that approach limits things that you can test (allowing test to use just single transaction). It will prevent testing code that uses multiple connections / concurrent transactions. Also one cannot tests code that does implicit commits (not very common cases though) this way.
I know using transaction to reset state after running test is pretty common pattern, what I want to emphasize is that using only that approach prevents one from testing certain things.
I've been always preferring truncating and repopulating DB after each test that modifies data or after some set of tests which are dependent on each other (some times I do this for performance reasons if populate takes too long like over 50ms).

hi, sorry to reeeopen this issue but i started new project wich is a cli for knex to seed multiple databases with fake data, i would like you to see it and help me with some contribution

For unit testing, I've only been checking that the queries executed by Knex from my SQL wrapper are formed correctly, by using toString() at the end of the query chain. For integration testing, I've been employing the strategy already listed above - that is to cycle: rollback -> migrate -> seed, before every test. Understandably that may be too slow if you cannot keep your seed data small, but may be suitable for others.

that is to cycle: rollback -> migrate -> seed, before every test.

That is really bad way to do it. Running migrations back and forth takes easily hundreds of milliseconds, which is way too slow. You should run migrations only once for whole test suite and then before test just truncate all the tables and populate suitable test data in. It can be done easily 100x faster than rollingback / recreating whole schema.

You can use knex-cleaner for easily truncating all tables:
knexCleaner
    .clean(knex, { ignoreTables: ['knex_migrations', 'knex_migrations_lock'] })
    .then(() => knex.seed.run())

Note that there's no need to use the ignoreTables part if you're running migrations at the start of each test suite run. This is only needed if you run migrations manually on your test database.

@ricardograca Does it handle cases with foreign keys well? (meaning cleaning won't fail because deletion order is wrong)

If not, that is easy to fix (just need to truncate all tables with single query) :)

@elhigu How can you do that?

Depends on database, but for example like this: https://github.com/Vincit/knex-db-manager/blob/master/lib/PostgresDatabaseManager.js#L95

@kibertoad Yes, it handles foreign key constraints just fine and deletes everything.

@odigity what if we what to test structure like that:
// controller.js
const users = require('./usersModel.js');

module.exports.addUser = async ({ token, user }) => {
  // check token, or other logic
  return users.add(user);
};

// usersModel.js
const db = require('./db');

module.exports.add = async user => db('users').insert(user);

// db.js
module.exports = require('knex')({ /* config */});

I your way all functions must have additional arg (for example trx) to pass transaction into actual query builders.
https://knexjs.org/#Builder-transacting
I think the right way must be something like that:

Create trx in beforeEach.
Somehow inject it. In my example require('./db') sould return trx value.
Do tests.
Rollback trx in 'afterEach'.

But, i don't know is it possible with knex?
What if code uses antoher transactions?
Also another option: maybe there some function that starts execute query. So we can override it to force run in test transaction.

After a day of reading knex code I try this approach:
test.beforeEach(async t => {
    t.context.trx = await db.transaction(); // new feature in knex 0.17
    t.context.oldRunner = db.client.runner;
    db.client.runner = function(builder) {
        return t.context.oldRunner.call(this, builder.transacting(t.context.trx));
    };
    t.context.oldRaw = db.raw;
    db.raw = function(...args) {
        return t.context.oldRaw.call(this, ...args).transacting(t.context.trx);
    };
});

test.afterEach(async t => {
    db.raw = t.context.oldRaw;
    db.client.runner = t.context.oldRunner;
    if (t.context.trx) await t.context.trx.rollback('Rolled back test transaction');
});

And it kinda works. So I override .raw and .client.runner methods. .client.runner calls internally when you .then a query builder. db in this functions is knex client knex({ /* config */}).

@Niklv as I already explained here; using transaction to reset test data is generally a bad idea and I would even consider it as an anti-pattern. So is overriding knex internals. Truncate + repopulate db on every test or for set of tests is recommendation. It doesnt take many milliseconds to do if test data is reasonably sized.

using transaction to reset test data is generally a bad idea and I would even consider it as an anti-pattern

If a solution works great for someone else (eg. it saves them a ton of time vs. manually having to clean up the DB), and it doesn't work well for you because you have different requirements (you need to run tests in parallel and they don't) ... that's not an anti-pattern!  That's two different devs with different requirements wanting different solutions.
On a more constructive note, a super simple way to achieve automatic rollbacks of tests is to use the following (which uses knex.raw instead of knex.transaction). I could have sworn I found it in a Stack Overflow, but now I can't seem to find the post that it came from, so apologies for no attribution:
beforeEach(function (done) {
  knex.raw('start transaction').then(function () {
    done();
 });
});

afterEach(function (done) {
  knex.raw('rollback').then(function () {
    done();
  });
});

NOTE: The above is for Postgresql; the syntax might vary in other DBs.

As an aside, whatever anyone's opinion on testing is ... it seems clear from the above that there's enough interest/confusion on the topic to warrant a page on https://knexjs.org/guide/.
Even if all that page did was summarize the discussion above, I truly think it would be highly beneficial to the Knex community.

I was using Mocha to run tests and it resetting the database didn't work.
I switched to Jest and it worked perfectly using these:
  beforeEach(async () => {
    await knex.migrate.latest();
  })

  afterEach(async () => {
    await knex.migrate.rollback();
  })

Thought I'd mention this in case anyone else is using Mocha and is also struggling to get knex to work.

@LordA98 how is that conceptually different from mocha? it has beforeEach too

@kibertoad I honestly have no idea why it didn't work in Mocha.  I just know that I changed from Mocha to Jest, using the same code above and it worked.  I assume it has something to do with how they handle async calls but I'm just guessing?
I'm not bothered about the why, I just wanted the tests to work with Knex so that I could continue the actual development of my app.  I thought I'd leave that note in case anyone else was having trouble with Mocha and Knex.

I have changed my mind when it comes to testing DB related functionality in my application. I no longer use transactions to cleanup and I don't cleanup between test runs. I write my tests in a way that does not require cleanup. The main benefit of this approach is that is more likely to catch issues because it resembles a more realistic database.
Techniques that enable one to achieve this include generative and property based testing. If you need a clean slate then simply create new records on every test run using generative testing. Yes you'll end up with loads of records; but you can always choose to cleanup if so desired.

Personally I always ensure that tests create whatever state they depend on for working - typically that starts by pruning all the related tables.

@bas080 That's great if it works for you but I think it's situation-dependent and personal preference.
I agree with @kibertoad - controlling the entire state before each test is preferable (especially in my current project where I'm testing with large data sets - it's far easier for me to tear down and recreate the database rather than create multiple unique data sets).


Repair CI/CD

For repair CI/CD

add token for Docker Hub in repository.
repair 'build_docker_compose'.

Resolved


leave the zoom meeting cleanly

The approach in https://stackoverflow.com/a/67755874 didn't work, but the one in https://stackoverflow.com/a/62430234 did! Now, when you hit control-C, we leave the Zoom meeting so other participants recognize that we're no longer in it, and then we don't spit out a giant stack trace at the end.

Something important to check on: does this work on Mac, too?


Define Terraform script for performance test

Related to https://github.com/cds-snc/notification-api/pull/1386
Summary | Résumé
Within our Terraform scripts have been defined inline with the following steps:

Creates ECR container repository for performance test
Creates Lambda function with an event cron trigger for performance test

The aforementioned steps will assist in the automating of performance testing activities.

Going ahead to merge this.. Thank s


Changelog Generator fails

Describe the bug
The release log generator does not work, see https://github.com/k8up-io/k8up/runs/3664001430.
Additional context
The problem seems to be that 86d7667ef87f560b47c26d178d7b871b299fcaf0 is from a branch that originated in the wrestic codebase and therefore – indeed – does not have a common ancestor to v1.2.0.
An idea might be to (temporarily?) add a tag to commit 663a0b1034d36005506a3a43f0390504a8563fbe (which is the commit where the wrestic code is merged into the K8up tree).
Logs
💥 Failed to retrieve - Invalid tag? - Because of: HttpError: No common ancestor between v1.2.0 and 86d7667ef87f560b47c26d178d7b871b299fcaf0^.

Expected behavior
The changelog is generated without problems.
To Reproduce
n/a
Environment (please complete the following information):

Image Version: n/a
K8s Version: n/a
K8s Distribution: n/a

An idea might be to (temporarily?) add a tag to commit 663a0b1 (which is the commit where the wrestic code is merged into the K8up tree).

If it helps, then yes. We can still manually cancel the release workflow for running the tag at 663a0b1 to avoid pushing images or making a release on GH

I have tested the approach on a fork and it seems to work.

Let's close this one for now. We'll delete the v1.99.99 once we've release 2.0.


Integrate react-blockstack package

The react-blockstack package provides react hooks for the Blockstack SDK. The PR takes a first stab at integrating its functionality by updating the gitix blockstack authentication with the useBlockstack react hook from react-blockstack.

Sorry, I missed the notification..

Sorry, I missed the notification..

Maybe Gitix could address this issue by aggregating notifications across the services...


bundle offscreen js into offscreen.html

in anticipation of offscreen pr merging
offscreen.html fetches javascript internally, but it could bundle the initial js containing event handlers. webpack should be configured to do this.
https://github.com/penumbra-zone/web/blob/0743e85482cb3f298e0ec5b3b6d7696ca1175059/apps/extension/webpack/webpack.common.js#L14
https://github.com/penumbra-zone/web/blob/bdf5fd486d675a7c0f08b78871c6fa12589f7e96/apps/extension/public/offscreen.html#L10
i believe this should improve reliability of await chrome.offscreen.createDocument, because the js becomes part of the initial document load, instead of a subsequent fetch.

can't inline js due to chrome disallows script-src CSP hashes in the manifest


should not terminate on rejection in transformed parameters

Summary:
See title.
Reproducible Steps:
Run this model:
parameters {
  real<lower = -1, upper = 1> scale;
}
transformed parameters {
  real<lower=0> scale2 = scale;
}

Current Output:
In CmdStan (develop branch post 2.17), here's what you see:
method = sample (Default)
  sample
    num_samples = 1000 (Default)
    num_warmup = 1000 (Default)
    save_warmup = 0 (Default)
    thin = 1 (Default)
    adapt
      engaged = 1 (Default)
      gamma = 0.050000000000000003 (Default)
      delta = 0.80000000000000004 (Default)
      kappa = 0.75 (Default)
      t0 = 10 (Default)
      init_buffer = 75 (Default)
      term_buffer = 50 (Default)
      window = 25 (Default)
    algorithm = hmc (Default)
      hmc
        engine = nuts (Default)
          nuts
            max_depth = 10 (Default)
        metric = diag_e (Default)
        metric_file =  (Default)
        stepsize = 1 (Default)
        stepsize_jitter = 0 (Default)
id = 0 (Default)
data
  file =  (Default)
init = 2 (Default)
random
  seed = 714361321
output
  file = output.csv (Default)
  diagnostic_file =  (Default)
  refresh = 100 (Default)

Exception: bar_model_namespace::write_array: scale2 is -0.0758982, but must be greater than or equal to 0  (in '/Users/carp/temp2/bar.stan' at line 5)
Meaningful warning message, which is good, but it shouldn't be terminating. So I'll create a new issue for CmdStan.

Expected Output:
Divergence warning printed and continue to run.
Additional Information:
Current Version:
develop (post 2.17.1)

This was fixed somewhere on the way to 2.20. You now get what is written under expected output: "Divergence warning printed and continue to run.".
This issue sweep does make me appreciate clear and reproducible issues A LOT. So thanks for that.


Error updating from 0.8.2 to any higher version (tested up to 0.8.8)

Im running 0.8.2 docker image and I can not update to any higher version. The container fails to start with rust panicking.
This works
version: "3.7"

services:
  nostr-rs-relay:
    image: scsibug/nostr-rs-relay:0.8.2
    user: "1000:1000"
    restart: unless-stopped
    volumes:
      - ${PWD}/data/config.toml:/app/config.toml
      - ${PWD}/data/db:/app/db
    ports:
      - "8888:8080"

This fails
version: "3.7"

services:
  nostr-rs-relay:
    image: scsibug/nostr-rs-relay:0.8.2
    user: "1000:1000"
    restart: unless-stopped
    volumes:
      - ${PWD}/data/config.toml:/app/config.toml
      - ${PWD}/data/db:/app/db
    environment:
      - RUST_BACKTRACE=full
    ports:
      - "8888:8080"

The error logged with RUST_BACKTRACE=full is
➜  nostr-rs-relay docker-compose up
[+] Running 1/1
 ⠿ Container e8c4a79518c9_nostr-rs-relay-nostr-rs-relay-1  Recreated                                                                                0.1s
Attaching to nostr-rs-relay-nostr-rs-relay-1
nostr-rs-relay-nostr-rs-relay-1  | Mar 16 18:52:59.590  INFO nostr_rs_relay: Starting up from main
nostr-rs-relay-nostr-rs-relay-1  | thread 'main' panicked at 'failed to spawn thread: Os { code: 1, kind: PermissionDenied, message: "Operation not permitted" }', /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/thread/mod.rs:707:29
nostr-rs-relay-nostr-rs-relay-1  | stack backtrace:
nostr-rs-relay-nostr-rs-relay-1  |    0:     0x56511bad10fa - std::backtrace_rs::backtrace::libunwind::trace::h79937bc171ada62c
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
nostr-rs-relay-nostr-rs-relay-1  |    1:     0x56511bad10fa - std::backtrace_rs::backtrace::trace_unsynchronized::h2292bca8571cb919
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
nostr-rs-relay-nostr-rs-relay-1  |    2:     0x56511bad10fa - std::sys_common::backtrace::_print_fmt::h9c461f248e4ae90d
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/sys_common/backtrace.rs:65:5
nostr-rs-relay-nostr-rs-relay-1  |    3:     0x56511bad10fa - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::he9fe6bf1a39182e1
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/sys_common/backtrace.rs:44:22
nostr-rs-relay-nostr-rs-relay-1  |    4:     0x56511baf51be - core::fmt::write::h032658c119c720d7
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/core/src/fmt/mod.rs:1208:17
nostr-rs-relay-nostr-rs-relay-1  |    5:     0x56511bacb5f5 - std::io::Write::write_fmt::h299fc90dfae41c0d
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/io/mod.rs:1682:15
nostr-rs-relay-nostr-rs-relay-1  |    6:     0x56511bad0ec5 - std::sys_common::backtrace::_print::heb70d25df9937e3f
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/sys_common/backtrace.rs:47:5
nostr-rs-relay-nostr-rs-relay-1  |    7:     0x56511bad0ec5 - std::sys_common::backtrace::print::had745c0a76b8b521
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/sys_common/backtrace.rs:34:9
nostr-rs-relay-nostr-rs-relay-1  |    8:     0x56511bad26af - std::panicking::default_hook::{{closure}}::h1ea782cdfa2fd097
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panicking.rs:267:22
nostr-rs-relay-nostr-rs-relay-1  |    9:     0x56511bad23eb - std::panicking::default_hook::h1cc3af63455a163c
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panicking.rs:286:9
nostr-rs-relay-nostr-rs-relay-1  |   10:     0x56511bad2dbc - std::panicking::rust_panic_with_hook::h5cafdc4b3bfd5528
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panicking.rs:688:13
nostr-rs-relay-nostr-rs-relay-1  |   11:     0x56511bad2b59 - std::panicking::begin_panic_handler::{{closure}}::hf31c60f40775892c
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panicking.rs:579:13
nostr-rs-relay-nostr-rs-relay-1  |   12:     0x56511bad15ac - std::sys_common::backtrace::__rust_end_short_backtrace::h28a5c7be595826cd
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/sys_common/backtrace.rs:137:18
nostr-rs-relay-nostr-rs-relay-1  |   13:     0x56511bad2862 - rust_begin_unwind
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panicking.rs:575:5
nostr-rs-relay-nostr-rs-relay-1  |   14:     0x56511b12a253 - core::panicking::panic_fmt::h8fa27a0b37dd98b7
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/core/src/panicking.rs:64:14
nostr-rs-relay-nostr-rs-relay-1  |   15:     0x56511b12a6e3 - core::result::unwrap_failed::h62abf61e411aaa08
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/core/src/result.rs:1791:5
nostr-rs-relay-nostr-rs-relay-1  |   16:     0x56511b132eea - std::thread::spawn::hafd0b7735dadcc30
nostr-rs-relay-nostr-rs-relay-1  |   17:     0x56511b132173 - nostr_rs_relay::main::h4d2463b19f596cd6
nostr-rs-relay-nostr-rs-relay-1  |   18:     0x56511b12eba3 - std::sys_common::backtrace::__rust_begin_short_backtrace::hf27c24c43df5b257
nostr-rs-relay-nostr-rs-relay-1  |   19:     0x56511b12ebb9 - std::rt::lang_start::{{closure}}::hed167041eb21454d
nostr-rs-relay-nostr-rs-relay-1  |   20:     0x56511bac61fc - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::hfa1c3687c9a20bb8
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/core/src/ops/function.rs:606:13
nostr-rs-relay-nostr-rs-relay-1  |   21:     0x56511bac61fc - std::panicking::try::do_call::h0497133ebe1341e5
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panicking.rs:483:40
nostr-rs-relay-nostr-rs-relay-1  |   22:     0x56511bac61fc - std::panicking::try::h6c3de05c7ca5d07f
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panicking.rs:447:19
nostr-rs-relay-nostr-rs-relay-1  |   23:     0x56511bac61fc - std::panic::catch_unwind::h969058ecb5334b30
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panic.rs:137:14
nostr-rs-relay-nostr-rs-relay-1  |   24:     0x56511bac61fc - std::rt::lang_start_internal::{{closure}}::h0de6d98cafb42a58
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/rt.rs:148:48
nostr-rs-relay-nostr-rs-relay-1  |   25:     0x56511bac61fc - std::panicking::try::do_call::h77301dcf43953993
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panicking.rs:483:40
nostr-rs-relay-nostr-rs-relay-1  |   26:     0x56511bac61fc - std::panicking::try::h45b05523a2fe135a
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panicking.rs:447:19
nostr-rs-relay-nostr-rs-relay-1  |   27:     0x56511bac61fc - std::panic::catch_unwind::hd95cea544b2b9bd2
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panic.rs:137:14
nostr-rs-relay-nostr-rs-relay-1  |   28:     0x56511bac61fc - std::rt::lang_start_internal::hd16e6ff7bf05a444
nostr-rs-relay-nostr-rs-relay-1  |                                at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/rt.rs:148:20
nostr-rs-relay-nostr-rs-relay-1  |   29:     0x56511b132405 - main
nostr-rs-relay-nostr-rs-relay-1  |   30:     0x7f3d0ea7418a - <unknown>
nostr-rs-relay-nostr-rs-relay-1  |   31:     0x7f3d0ea74245 - __libc_start_main
nostr-rs-relay-nostr-rs-relay-1  |   32:     0x56511b12ad31 - _start
nostr-rs-relay-nostr-rs-relay-1  |   33:                0x0 - <unknown>
nostr-rs-relay-nostr-rs-relay-1 exited with code 101

what host OS are you running?  I don't know what would cause the process to fail to start a thread...  You said "it works" without the backtrace variable set?

➜  ~ uname -a
Linux 5.19.0-35-generic #36-Ubuntu SMP PREEMPT_DYNAMIC Fri Feb 3 18:36:56 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
➜  ~ docker -v
Docker version 20.10.6, build 370c289

0.8.2 is running fine. Anything above that is not running. The backtrace variable has no influence on the crashing behavior. I just used it to provide a stronger log.

    user: "1000:1000"

removing the user id from the docker-compose.yml resolved the issue. So whatever changed after 0.8.2 does not work on non-privileged users.

I'm getting this error as well, trying to do a fresh install. I assume it's a permissions error on my mounted volume for config.toml. The permissions for config.toml are -rw-r--r--  1 root    6966 Mar 17 08:37 config.toml.
My docker-compose.yml is:
version: "3.5"

services:
   nostr-rs-relay:
      image: scsibug/nostr-rs-relay
      restart: unless-stopped
      volumes:
         - ./config.toml:/usr/src/app/config.toml
         - db:/usr/src/app/db
      labels:
         - "traefik.enable=true"
         - "traefik.http.routers.nostr-rs-relay.rule=Host(`nostr.lorentz.is`)"
         - "traefik.http.routers.nostr-rs-relay.entryPoints=web-secure"
         - "traefik.http.routers.nostr-rs-relay.tls.certResolver=letsencrypt"
         - "traefik.http.services.nostr-rs-relay.loadbalancer.server.port=8080"
      networks:
        - proxy-net

networks:
  proxy-net:
    external: true
volumes:
  db:

Trying some more things. Even trying to start a fresh container with no bind mounts fails with the same error message:
docker run -it -p 7000:8080 scsibug/nostr-rs-relay

My system:
> uname -a
Linux aldburg 5.14.0-0.bpo.2-amd64 #1 SMP Debian 5.14.9-2~bpo11+1 (2021-10-10) x86_64 GNU/Linux
> docker -v
Docker version 20.10.9, build c2ea9bc

Going back to 0.8.2 does seem to fix it. Can we reopen this issue?


test that beam.allocator works for something with alignment not 8

std.heap exports a few functions to stress-test the allocator impls:

testAllocator
testAllocatorAligned
testAllocatorLargeAlignment
testAllocatorAlignedShrink

If your allocators pass the tests it's very likely for them to be correct.

wow awesome, thank you very much!

fantastic.  I've found an elusive segfault already.

@LemonBoy thank you!  I found my error EXTREMELY quickly thanks to the testAllocator code.


Add attack level range to combat level plugin

This plugin adds a PVP-world-like combat level range text to the
wilderness level, displaying the range of combats you can attack at any
given wilderness level.

Closes runelite/runelite#3103
Closes runelite/runelite#3318

Imo this could be in Combat Level plugin

@deathbeam I've moved this to the combat level plugin behind a config.

travis failing

Thanks, fixed that--had to use a constructor for the event instead of setWidget and setText.

This PR now closes #3439, as I realized the new WidgetTextChanged event would fulfill that request.

This script needs to be updated for the script changes

Rebased with new script opts


 element: add environment name="cmsis", deprecate

I suggest for the <examples> element:

deprecate <attributes> as this is to my knowledge nowhere used and we should make it easier to publish examples.
use environment name=”cmsis" for projects that are using csolution.yml files.

This is how an example would be described:
<examples>
   <example name="retarget" folder="example" doc="README.md">
     <description>Simple example retargeting stdout to USART.</description>
     <board name="V2M-MPS2" vendor="ARM"/>
     <project>
       <environment name="cmsis" load="retarget.csolution.yml"/>
     </project>
  </example>
</examples>

Hi @ReinhardKeil,
on ST side, we plan to use the <examples> element to deliver our example projects for IDEs like EWARM.
So, we would like to keep all the existing possibilities of the tag.
By the way, how do you plan to make it possible to deliver csolution/cproject-based projects ?
Thanks & Regards,
Fred

The environment name="cmsis" would refer to "*.csolution.yml" based projects with the assumption that an compatible IDE can import them.
Does ST use the <attributes> that are currently used for examples?  We are nowhere using it (not on web, not in IDEs), and it just makes it more complicated to publish examples.  Most of the information should be anyway in the *.yml files going forward.

Conclusion on the TRM 11. April 23: make  optional, but not mandatory.

PACK Specification updated to make attributes in example optional.
environment names are not restricted by the specification.


[Error]

I'm recieving this error after using app sync release command:
[Error]

Application Error

there were no errors installing before this

An you try running that command again?

error still persists. does installing app sync cli outside the project directory affect it?


Bug: Preview Pane does not refresh when switching pane in Dual Pane

Description
When using the dual pane mode, the Preview Pane does not correctly refresh its content. Instead, it displays no information even if an item is selected.

Steps To Reproduce

Open the dual pane mode.
Select an item so its preview is done.
Switch column by clicking on another item. No preview is displayed.

Requirements

The preview is correctly displayed when switching pane.

Files Version
V.2.81.0 Dev
Windows Version
Windows 10 (21H2): 19044
Log File
Unneeded

Thank you for reporting this issue


Dockerize it

Since I loved both your work on stoplight and stopligh-admin, it was decided to embed these into our own applications. Since adding the spotlight-admin would lead to a bloating application, I extracted it to a separate Docker container. This one is available on Github or directly downloadable from Docker Hub: https://github.com/inventid/stoplight-admin-docker
Let me know when you have any questions or if I messed up with the licensing (currently MIT).
:heart: your work!

Looks great! Stoplight itself is MIT licensed, so you're good to go there.

Thanks for merging and thanks for the work you have done!


[Feature] Create a guide on criteria for how search engines are selected and prioritized for inclusion

Problem
There is currently no guide that states the criteria  to identify search engines that can be integrated into the the project
Description
The guide will contain detailed criteria on the how search engines to are selected for inclusion in the project
Alternatives

Additional context

Implementation

[x]  I would be interested in implementing this feature.

This is just perfect, I can't think of anything else at the moment. I can go ahead to develop a concise guide around these when the issue is triaged.

@Marshalng feel free to do so targeting the new /guides directory in the repository: https://github.com/creativecommons/search/tree/main/guides

Alright, I will do just that.

Hi @possumbilities  I just submitted a PR on this issue, please check, thanks. https://github.com/creativecommons/search/pull/140