Scale Integration

Description: Connect pressure plate to BITS

Currently waiting on delivery of pressure plate. Nic will bring up to Boulder when it arrives.

I have successfully written a python driver that can pull data from the scale on Linux!
The code is currently on the branch scale_driver.

Unfortunately, the scale we bought has a wonderful "feature" called auto shut-off. According to the literature, there is a way to disable auto shut-off by pressing a key combination every single time you turn on the device.
Workaround: pull data from it more often than every 3 minutes.
Also, it has another "feature" that zeros the weight on a restart, so even if there was 50 lbs on it, it would say zero.
Since this is just a tech demo, and the scale can't survive under snow conditions anyway, I suppose all this is fine, but FYI, kinda annoying.

@JackDinkel and I have tested the driver code and confirmed that it is working. Closing out this task now, but opening up a new "housekeeping" issue for disabling the auto-shutoff feature of the scale. The method described in the user manual is not working for our scale.


doc: clarify supported upgrade and rollback scenarios

Make it explicit in the upgrade documentation that the only upgrade and rollback combination we test are the latest patches of consecutive minor releases.
Document supported upgrade and rollback paths

/test


Add :on-alter to input-text-base

It is called with the new value to alter it immediately.
See the :on-alter checkbox on the updated demo page.

Thanks @PawelStroinski 👍 😄
Tested via demos page and merged.


[BUG] No masks found during training

Description
I am trying to train a model for immunofluorescently labelled cells in a whole mouse brain slice. However, every time I do the training in the first image, it never recognizes any cells in the second image or any other.
Below I am showing some screenshots of the images I am using. Any help is highly appreciated, thank you!
What I already tried out
I already tried out different things:

using pre-installed models or starting from scratch
cellpose 2.3.2 and the newest version
normalizing images beforehand
with and without GPU
playing around with the flow threshold and the cellprob threshold
24 bit and 16 bit pixel depth
cropping the image to only the area of interest (substantia nigra/ventral tegmental area)

Details on images

.png files
around 10 MB
around 6482x4564 pixels
24 bit
normalized to values between 0 and 255
taken with widefield microscope, maximum-intensity projected z-stacks

Screenshots
Example 1:
Example 2:
Example 2 zoomed in:
Output:

could you perhaps try decreasing the cell probability after retraining and see if the network is still uncertain about the cells? also these cells are pretty small, you may want to start with the "nuclei" model even if it is worse because the mean diameter is 17, so the network will not make your images quite so large during inference (right now cellpose will resize them to diam_mean of 30 so a factor of 3x)
@ian-coccimiglio also recommended trying the Adam training, which is now an option if you pip install git+https://github.com/mouseland/cellpose.git. you will want to reduce the learning rate to around 0.001.


Container fails to start subsequent to first (initial) start

I tried starting the image without ldiff or other seeding. On the first run the image initializes and the containers keeps running. However, when I start the deployment again, the openldap container keeps exiting. Error message below.
docker-compose.yml:
version: '3'

networks:

  infrastructure:
    driver: 'bridge'

services:

  mongo:
    image: mongo
    container_name: infra_mongo
    networks:
      - infrastructure
    volumes:
      - ${SYSTEM_STORAGE_PATH}/mongo:/data/db

  redis:
    image: redis
    container_name: infra_redis
    networks:
      - infrastructure
    volumes:
      - ${SYSTEM_STORAGE_PATH}/redis:/data

  ldap:
    image: osixia/openldap
    container_name: infra_ldap
    networks:
      - infrastructure
    environment:
      LDAP_ADMIN_PASSWORD: "somepassword"
      LDAP_BASE_DN: "dc=institute,dc=cluster"
      LDAP_ORGANISATION: "Institute"
      LDAP_DOMAIN: "institute.cluster"
      LDAP_TLS_ENFORCE: "false"
    # ports:
    #   - 389:389
    volumes:
      - ${SYSTEM_STORAGE_PATH}/ldap/config:/etc/ldap/slapd.d
      - ${SYSTEM_STORAGE_PATH}/ldap/data:/var/lib/ldaph

Log on first start (clean directory):
*** CONTAINER_LOG_LEVEL = 3 (info)
*** Search service in CONTAINER_SERVICE_DIR = /container/service :
*** link /container/service/:ssl-tools/startup.sh to /container/run/startup/:ssl-tools
*** link /container/service/slapd/startup.sh to /container/run/startup/slapd
*** link /container/service/slapd/process.sh to /container/run/process/slapd/run
*** Set environment for startup files
*** Environment files will be proccessed in this order :
Caution: previously defined variables will not be overriden.
/container/environment/99-default/default.startup.yaml
/container/environment/99-default/default.yaml

To see how this files are processed and environment variables values,
run this container with '--loglevel debug'
*** Running /container/run/startup/:ssl-tools...
*** Running /container/run/startup/slapd...
openldap user and group adjustments
get current openldap uid/gid info inside container
-------------------------------------
openldap GID/UID
-------------------------------------
User uid: 911
User gid: 911
uid/gid changed: false
-------------------------------------
updating file uid/gid ownership
Database and config directory are empty...
Init new ldap server...
  Backing up /etc/ldap/slapd.d in /var/backups/slapd-2.4.50+dfsg-1~bpo10+1... done.
  Creating initial configuration... done.
  Creating LDAP directory... done.
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of restart.
Start OpenLDAP...
Waiting for OpenLDAP to start...
Add bootstrap schemas...
config file testing succeeded
Add image bootstrap ldif...
Add custom bootstrap ldif...
Add TLS config...
No certificate file and certificate key provided, generate:
/container/service/slapd/assets/certs/ldap.crt and /container/service/slapd/assets/certs/ldap.key
2020/09/15 08:55:03 [INFO] generate received request
2020/09/15 08:55:03 [INFO] received CSR
2020/09/15 08:55:03 [INFO] generating key: ecdsa-384
2020/09/15 08:55:03 [INFO] encoded CSR
2020/09/15 08:55:03 [INFO] signed certificate with serial number<PHONE_NUMBER>64622229330952703208206866340968998577
Link /container/service/:ssl-tools/assets/default-ca/default-ca.pem to /container/service/slapd/assets/certs/ca.crt
Disable replication config...
Stop OpenLDAP...
Configure ldap client TLS configuration...
Remove config files...
First start is done...
*** Set environment for container process
*** Remove file /container/environment/99-default/default.startup.yaml
*** Environment files will be proccessed in this order :
Caution: previously defined variables will not be overriden.
/container/environment/99-default/default.yaml

To see how this files are processed and environment variables values,
run this container with '--loglevel debug'
*** Running /container/run/process/slapd/run...
5f608167 @(#) $OpenLDAP: slapd 2.4.50+dfsg-1~bpo10+1 (May  4 2020 05:25:06) $
	Debian OpenLDAP Maintainers<EMAIL_ADDRESS>5f608167 slapd starting

Log on second start (there indeed is something in the config dir but not in the data dir):
*** CONTAINER_LOG_LEVEL = 3 (info)
*** Search service in CONTAINER_SERVICE_DIR = /container/service :
*** link /container/service/:ssl-tools/startup.sh to /container/run/startup/:ssl-tools
*** link /container/service/slapd/startup.sh to /container/run/startup/slapd
*** link /container/service/slapd/process.sh to /container/run/process/slapd/run
*** Set environment for startup files
*** Environment files will be proccessed in this order :
Caution: previously defined variables will not be overriden.
/container/environment/99-default/default.startup.yaml
/container/environment/99-default/default.yaml

To see how this files are processed and environment variables values,
run this container with '--loglevel debug'
*** Running /container/run/startup/:ssl-tools...
*** Running /container/run/startup/slapd...
openldap user and group adjustments
get current openldap uid/gid info inside container
-------------------------------------
openldap GID/UID
-------------------------------------
User uid: 911
User gid: 911
uid/gid changed: false
-------------------------------------
updating file uid/gid ownership
Error: the database directory (/var/lib/ldap) is empty but not the config directory (/etc/ldap/slapd.d)
*** /container/run/startup/slapd failed with status 1

*** Killing all processes...

I also noticed that config and data dir had been created by the docker daemon. The config dir was chowned to 911:911 but the data dir was still root:root ..

Could it be the case that the database is kept in-memory and that we need to commit it to disc at least once before stopping/restarting the container?

1

Thank you very much for paying attention to this issue!
Any progress or workaround suggestions, please?
It is also most likely the underlying problem for this issue:
https://github.com/Alfresco/alfresco-docker-installer/issues/45
With regards
David

I hope the docker-compose you shared is not a copy of the one you are using.

${SYSTEM_STORAGE_PATH}/ldap/data:/var/lib/ldaph
seems to have an extra H in the path. And could explain why (after a restart) the ldap folder is not persistant.

Hi, my openldap section of docker-compose is:
    openldap:
        image: osixia/openldap:1.4.0
        mem_limit: 128m
        container_name: openldap
        environment:
          LDAP_DOMAIN: "alfresco.org"
          LDAP_BASE_DN: "dc=alfresco,dc=org"
          LDAP_ADMIN_PASSWORD: "admin"
        volumes:
            - ./data/ldap:/var/lib/ldap
            - ./data/slap.d:/etc/ldap/slap.d

but still experiencing the problem described here: https://github.com/Alfresco/alfresco-docker-installer/issues/45
David

@zejdad Now that I removed the typo it works for me. I tried version e55926b7c377 of the osixia/openldap image.

@zejdad Now that I removed the typo it works for me. I tried version e55926b7c377 of the osixia/openldap image.


[Bug]

Bug Description

一直提示这个，不知道是什么原因
Steps to Reproduce

Expected Behavior

Screenshots
No response
Deployment Method

[ ] Docker
[X] Vercel
[ ] Server

Desktop OS
No response
Desktop Browser
No response
Desktop Browser Version
No response
Smartphone Device
No response
Smartphone OS
No response
Smartphone Browser
No response
Smartphone Browser Version
No response
Additional Logs
No response

首先检查你的api是否是可以正常的，包括网络问题；
其次F12，打开网络请求，查看更具体的报错信息


build error

when i typed it like this "$ ./gradlew build -Djna.nosys=true"
and it shows error

What went wrong:
A problem occurred configuring project ':ribbon'.

Failed to notify project evaluation listener.
A problem occurred configuring project ':ribbon-core'.
Failed to notify project evaluation listener.

       There is an incompatible JNA native library installed on this system.
       To resolve this issue you may do one of the following:
        - remove or uninstall the offending library
        - set the system property jna.nosys=true
        - set jna.boot.library.path to include the path to the version of the
          jnidispatch library included with the JNA jar file you are using

     > Could not initialize class com.sun.jna.platform.win32.WinBase
     > Could not initialize class com.sun.jna.platform.win32.WinBase

Could not initialize class com.sun.jna.platform.win32.WinBase
Could not initialize class com.sun.jna.platform.win32.WinBase
Could not initialize class com.sun.jna.platform.win32.WinBase
Could not initialize class com.sun.jna.platform.win32.WinBase

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

how do you fix it?


Weather in Home Fragment not updating

Weather icon and temprature TextView not is updating in Home Fragment.
U can test it out by updating weather Text/image from other class/methods.

Weather widget removed due to compatibility issues with Android 12


OnControllerUngrabInteractableObject event fires on startup.

Environment

Source of VRTK - Unity Asset Store
Version of VRTK - 3.1.0
Version of Unity3D - 5.5.2f1

Steps to reproduce

Add the VRTK_InteractGrab_UnityEvents script to an already setup script alias object.
Populate the OnControllerUngrabInteractableObject list with a script that fires a debug log.
Press the play button.
Observe the event is fired off instantly when the game starts.

Expected behavior
The event should only fire when a valid interact-able object is released.
Current behavior
The event is firing on start automatically.

Fixed in https://github.com/thestonefox/VRTK/commit/b4b81713803f98b81291b94321087067af8e8272


Controllers specs

In this project, these tasks were completed:

[ ] Add RSpec as a gem to your project.

[ ] Create a Request spec file for all your controllers.
User controller:

Post controller:

[ ] Make sure that for each action you check:
- If response status was correct.
- If a correct template was rendered.
- If the response body includes correct placeholder text.

@cynthiainga
Thank you so much for the review. I have fixed the MIT license link in your README file at this commit


indent size is forced to 1

How to reproduce?

Grails 3.2.4
grails-console:2.0.8
application.ymlgrails:
    plugin:
        console:
            indentUnit: 4

Firefox 52.0.1

goto console
hit tab key

What is happened?

indented by 1 space

What is the expected behavior?

indented by 4 spaces

Why does this happen?
Maybe because of the type of indentUnit is boolean. Similarly, the type of tabSize is boolean.
https://github.com/sheehan/grails-console/blob/master/grails3/plugin/src/main/groovy/org/grails/plugins/console/ConsoleConfig.groovy#L11

fixed in the latest version


[IMPROVEMENT] longhorn/go-common-libs should support Darwin

Is your improvement request related to a feature? Please describe (👍 if you like this request)
In Harvester, we have a project called terraform-provider-harvester that supports both Darwin and Linux. However, due to limitations in longhorn/go-common-libs, we can currently only build the Linux version. We still need the Darwin version, and this issue has been reported in https://github.com/harvester/terraform-provider-harvester/pull/104#issuecomment-2357894347.
Describe the solution you'd like
We've tested the concept on https://github.com/harvester/terraform-provider-harvester/pull/104#issuecomment-2358020801. Therefore, we need to add namespace_darwin.go and namespace_linux.go for longhorn/go-common-libs.
Since it's a common Go library, I believe that it makes sense to support.
Describe alternatives you've considered

Additional context

I am removing this from the community board because this is from our internal team.
cc @derekbit for scheduling

What package in go-common-libs is used by harvester?

Dependency chain is Harvester v1.3.0 -> LH v1.6.0, and LH v1.6.0 -> go-common-libs. It can't build for some operating systems if the package contains some codes for specific operating system, even you don't use it. So, that's why we need to add different files for different operating systems.
Sure, let me address this issue, thanks!

@derekbit I don't have permission to move issue or edit comment, please help me to get it, thanks!

Added you to DEV group. Can you try again?

Still don't have permission.

@derekbit Thanks, it works.


Fix zgeadd_k prototype

Third argument to zgeadd_k is a double everywhere else, causing a compiler warning as discussed in #1357

Travis experienced lockups that I doubt are related to the code.

Not sure what to make of the travis failures, will retry with a rebased tree.


I have tried VAI3.0 pytorch TensorFlow2 opt-tensorflow2, they build successfully, but they cannot open correctly

Thanks for contact us, @HankIC
I will check and try to reproduce your issue and get back to you later, Thanks for your patience


[BUG] Arbitrary font weight and font family is causing the conflict warning

Describe the bug
Using an arbitrary font weight and font family is causing the conflict warning.
To Reproduce
Steps to reproduce the behavior:

Add a font family ex: font-sans
Add an arbitrary font weight ex: font-[540] (https://tailwindcss.com/docs/font-weight#arbitrary-values)
See error

Expected behavior
This should not trigger the conflict warning
Screenshots

Environment (please complete the following information):

OS: macOS
Softwares + version used:

VSCode: 1.74.3
npm: 8.19.2
node: v16.17.0
tailwind: 3.24
eslint-plugin-tailwindcss: 3.83

Additional context
None
eslint config file or live demo

Tried the plugin out and it also warns on backgrounds:


Implement Segment-based Log Preservation when Log Compaction

Introduce the concept of segments so that when log compaction occurs, instead of discarding all existing logs, save them in data.{k}.mdb.
Ref: https://github.com/lablup/riteraft-py/issues/11

I no longer think it is a good idea to make the snapshot related logic complicated
If we change our mind, we can open another issue, but I will close this issue for now.


message_middleware: make message passing from Replication.Server -> Replication.Publisher configurable

the aim of this is to allow the end user to implement a backpresure system if need be
for instance using broadway / dets / persistent_ets / gen_stage ...
Taking broadway as example:

message_middleware would publish events directly to SQS or cast to an SQS publisher
the broadway consumer would receive the message and invoke WalEx.Replication.Publisher.process_message_sync himself

arf sorry was meant for internal PR, not ready yet 😓

You can keep open - maybe open a discussion as well :)


Add @mepeltier as a maintainer on this project

I'd like to add Micah Peltier (@mepeltier) as a maintainer on this project.
I feel like I should remember how this works at this point, sorry; @ryjones what's the process to get him added?
Thank you in advance!

@dbluhm please file an issue here and create a MAINTAINERS.md for this repo :)


Marriage allowance API

Note: Please read before raising an issue. This repository's issues are reserved for Technical queries relating to the Self-Assessment-API Only.
If your issue falls into any of the below categories please contact SDST at<EMAIL_ADDRESS>
Issues relating to subscribing/registering to use the API Platform, MTD enrolment / de enrolment  / registration for VAT / BETA etc
Issues relating to OAuth2
Issues relating to integrating with the API Platform (setting up an application/access)
Vendor application software questions (code examples in .NET / VB6 etc.)
Business related questions
Scheduled maintenance days / windows
Onboarding
Performance metrics
Questions relating to the process pre MTD

I'm submitting a ...

[X] Bug - API
[ ] Bug - Documentation
[ ] Improvement
[ ] Feature request
[ ] Support request

What is the current behaviour?
We are getting 500 Internal Service error calling both marriage allowance endpoints in the sandbox, this started happending a few weeks ago, can you confirm these endpoints are working.

What is the expected behaviour?

Other information (e.g. detailed explanation, screenshots, stacktraces, related issues, suggestions how to fix, links for us to have context, eg. stackoverflow, gitter, etc)

This repository is related to the MTD Self-Assessment API. The Marriage Allowance API is a separate API.
In any case we would recommend that you contact<EMAIL_ADDRESS>who hopefully will be able to help you.


[Program]: Write a Julia program to find cube root of a number

Description
Write a Julia program to find cube root of a number
Input  : 27
Output : 3

How to contribute

Save the solution in program/program/find-cube-root-of-a-number/program/find-cube-root-of-a-number.jl file

!assign


F#3691 set countd aggregation in widget

Description

For hashed_map type, countd must be applied unconditionally.
Related Issue : #3691

How Has This Been Tested?

Create a dashboard using a data source with a hashed_map type.
From the created dashboard, go to the chart creation screen and place a hashed_map type field on the shelf.
Check if the aggregation type is applied as countd.

Need additional checks?
Types of changes

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

Checklist:

[ ] I have read the CONTRIBUTING document.
[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have added tests to cover my changes.

Additional Context

deploy to 1


no element of type PageBreak in doc file

Describe the bug
a .doc document of 3 pages doesn't return elements of type "PageBreak"
To Reproduce
elements = partition_doc(filename=fname,include_page_breaks=True)
can't attach here the sample  file :
i took the fake-doc-emphasized-text.doc from doc-samples and add 2 pages to add the pagebreaks

although in the documention it appears it supports :

@veredmm - That's expected because the document was converted to DOCX from DOC. In that case, the XML element indicating the page break is not always inserted. @scanny can confirm. Regardless, we'll update the docs to reflect that page breaks aren't support for DOC.

@veredmm in general, page-breaks are not reliably indicated in the DOCX format. If they are present we detect them, but that's the best that can be done I'm afraid. I'm not sure whether rendered page breaks are reflected in the DOC format and if they are whether those survive conversion. I've never seen them in a converted file but I haven't really looked for them.
The reason these are not reliably indicated is that these page breaks are determined by the renderer and are not specified by the document. The renderer decides when to break pages based on printer settings, margins, available fonts, etc. and can change depending on how the document is rendered. Some renderers will write <w:lastRenderedPageBreak> elements to the file, Word often does that, and that's what we detect to emit PageBreak elements.
The situation is not unlike printing HTML, to a PDF say. The HTML cannot tell you where the PDF renderer is going to break the page. It doesn't know whether you're printing on A4 or Letter or what fonts are available and their fontmetrics. The HTML just specifies the content and lets the renderer take it from there.
Anyway, if you absolutely need page numbers you can try rendering the document to PDF and partitioning that, otherwise perhaps the safest bet is to turn off page-break elements so the output is at least consistent.

Thanks @scanny! Going to close out this issue based on that response.


Update .travis.yml for new travis container stuff

See http://docs.travis-ci.com/user/migrating-from-legacy/
This looks relatively straightforward. @cslocum is this something you could help with? Or anyone else in SSB who has already figured out the details of this type of transition.
Incidentally at some point it would be great if someone more well versed in coveralls.io than me could take a look at the poppy and webbpsf coveralls config too, and figure out what I did wrong.

I've done this, and it's running on the new container infrastructure.
But it's still failing with that inexplicable 247 error.

My remove_helpers branch fails with a more interesting error now: https://travis-ci.org/josePhoenix/poppy/jobs/88923255
It looks like this is to do with exhausting memory on the build server... I'm surprised, since we didn't have this before switching to the container infrastructure.

https://duckduckgo.com/?q=travis+error+137&t=ffsb

Evidently we have some very greedy tests in test_poppy_core... >1GB usage while those tests run on my laptop.

Fun trivia: the shell got to 137 by adding 128 to the kill signal (-9). http://unix.stackexchange.com/a/99134

poppy.tests.test_core.test_optic_resizing hits a high-water mark of 4 GB :exclamation:
@mperrin any ideas? It doesn't look like it's doing anything egregious... 1000 x 1000 x 64 bits is on the order of 8 MB for each wavefront array kicking around

Ah but the interpolation happens using scipy.ndimage.interpolation.zoom by default using cubic interpolation. So, who knows what's going on inside that black box.   I agree 4 GB seems egregious.

It's the very last line in that test function:
 tmp2 = test_optic_large_element.getPhasor(osys.inputWavefront())
poppy     : DEBUG    Creating input wavefront with wavelength=0.000002, npix=1024, pixel scale=0.006348 meters/pixel
poppy     : DEBUG    Pixelscales: wave 0.006348, optic 0.100000
poppy     : DEBUG    resampled optic to match wavefront via spline interpolation by a zoom factor of 15.8
poppy     : DEBUG    trimmed a border of 7365 x 7365 pixels from optic to match the wavefront

With the chosen pixel scales, the phasor has to be scaled by 15.6 in linear dimension, hence 243x in area. Multiply that times your 8 MB starting array and you get... 2 GB.

Looks like this is now finished


Utility: source mapping decoder

We should provide a decoder for the bytecode source mapping that "decompresses" the compressed representation of the bytecode source mapping. The design should be made so that we might also do a lazy decoding in the future.

pr https://github.com/ethereum/remix/pull/95


borrowed extractors

This may be a hacky solution, so I understand if this get rejected for maintainability considerations. However I tried to add comments for the workarounds used here.

with "take 2", FromRequest is more semantically correct: from_request returns Self again and Type have a separate type constructor function

Thanks for the PR. It looks in good shape already. Let me know when it's ready to be reviewed.

LOL. Sorry about that. I was not thinking when deleting the branch

Ready for review!
Lifetimes may need a more consistent naming but  I'm not sure what to name them.

take 2 commit is more semantically correct but it add much to the lifetime mess, so I'm not sure if it is worth it.
Also, RefCell needs to  be limited to the payload, otherwise we practically can't have borrowed extractors other than &RefCell>.

Great job. This is working better than I expected.
use std::{
    cell::{Ref, RefCell},
    convert::Infallible,
    future::{Future},
};

use xitca_http::{
    body::{ResponseBody, RequestBody},
    http::{Request, Response},
    util::service::{get, handler_service, FromRequest, Router},
    HttpServiceBuilder,
};

#[tokio::main]
async fn main() -> std::io::Result<()> {
    xitca_server::Builder::new()
        .bind("test", "localhost:8080", || {
            let router = Router::new()
                .insert("/", get(handler_service(index)));
            HttpServiceBuilder::new(router)
        })?
        .build()
        .await
}

async fn index(
    Extract(path): Extract<Ref<'_, str>>,
) -> Response<ResponseBody> {
    assert_eq!(&*path, "/");
    Response::new("Hello,World!".into())
}

struct Extract<T>(T);

impl<'a> FromRequest<'a, Request<RequestBody>> for Extract<Ref<'a, str>> {
    type Type<'f> = Extract<Ref<'f, str>>;
    type Error = Infallible;
    type Future = impl Future<Output = Result<Self, Self::Error>>;

    fn from_request(req: &'a RefCell<Request<RequestBody>>) -> Self::Future {
        async move {
            let uri = Ref::map(req.borrow(), |req| req.uri().path());
            Ok(Extract(uri))
        }
    }
}

take 2 commit is more semantically correct but it add much to the lifetime mess, so I'm not sure if it is worth it.
Also, RefCell needs to be limited to the payload, otherwise we practically can't have borrowed extractors other than &RefCell.

I need to think about this. The current code does not limit the input to a sepcific Request type as Req can be anything.
I would if we can use Ref and RefMut to get around some of the limitation.

I wonder if we can use Ref and RefMut to get around some of the limitation.

If we don't need mutable access to poll payload, then this is fine, I think.
btw, why the ci is so slow?

I wonder if we can use Ref and RefMut to get around some of the limitation.

If we don't need mutable access to poll payload, then this is fine, I think.

My concern is that if there is no internal mutability we lose the ability to mutate the request head completely in extractor and handler.
There is possible use case that a mutation of the head is wanted and we should also consider the future potential pattern of
let req = &mut req;
if let Err(e) = service.call(req).await {
    // the error may mutated the request so we can have a context for handling error.
}

btw, why the ci is so slow?

There are too many features across this repo to keep the dep tree minimal for given specific use case. cargo-hack is used to test all the combination of these features to make sure they compile fine without conflict between features. So is for the tests.

My concern is that if there is no internal mutability we lose the ability to mutate the request head completely in extractor and handler.

Practically we now can't mutate request in extractor and handler because the RefCell is most likely locked by another extractor. So, I think RefCell is redundant now.
As for Service<&mut Request>, it cause me headaches just by thinking about it in this context, lol.  Mutable references are hard to reason about here because of the contravariance thing.

There are too many features across this repo to keep the dep tree minimal for given specific use case. cargo-hack is used to test all the combination of these features to make sure they compile fine without conflict between features. So is for the tests.

despite all of this, the good old cargo check for the repo failed because of mismatched quinn versions, lol.


HTTPError: 403 Client Error: Forbidden for url: https://api.rigetti.com/qvm

I am getting this error

I know that 403 Forbidden error means that accessing the page or resource I was trying to reach is absolutely forbidden for some reason.
Any clarification on the error and what causes it? Thanks!
@tarballs-are-good

Hey @andersy005 .
We've seen this error a few times from a few users, and so far, the problem each time had to do with either the name of the .pyquil_config file or the contents. Can you double check that ~/.pyquil_config exists (with no file extension), and that the contents are
[Rigetti Forest]
url: https://api.rigetti.com/qvm
key: ABCABCABCABCABC_beta

where ABCABCABCABCABC_beta is your key? You can do a little test by just doing
print Connection().ping()

instead of writing out a whole program.

Any update on this issue @andersy005 ?

@tarballs-are-good, Thanks for your help. I had configured incorrectly .pyquil_config file. I had named it .pyquil.config instead of .pyquil_config. The issue is resolved.