Monday, February 1, 2021

Union Budget of India 2021-2022



FM Nirmala Sitharaman began her Union Budget 2021 speech at 11 am Monday amid heckling by parliamentarians. Among big-ticket measures, FM proposed a Rs 64,180-crore Aatmanirbhar Swastha Bharat scheme in view of the pandemic. 
"Only three times has the Budget followed a contraction in the economy. This time, unlike before, the situation is due to a global pandemic. Budget 2021 provides every opportunity for the economy to capture the pace and grow sustainably," she began. 
The Budget 2021 proposals rest on six pillars —health & well-being, physical & financial capital & infrastructure, inclusive development for aspirational India, reinvigorating human capital, innovation & research & development, minimum government and maximum governance, she added. 
Benchmark stock indices Nifty and Sensex gave a thumbs up to government's 'expansionary budget' as FM Sitharaman chose the path of additional borrowing instead of taxing the super-rich or raising taxes on high-income individuals.  
The FM had earlier promised a "never before" budget not seen in a hundred years to ward off the economic devastation caused by a once-in-a-lifetime pandemic which rendered millions out of jobs, shuttered scores of small businesses and snuffed the spending power of the bottom of pyramid populace. 
FM said the government will borrow about Rs 12 lakh crore in FY22, adding that the expenditure for the next fiscal has been pegged at Rs 34.83 lakh crore, which includes Rs 5.54 lakh crore of capital expenditure. The fiscal deficit for FY21 was pegged at 9.5% of GDP and will come down to 6.8 per cent in FY22, she added. 
The FM added that the government will approach the market to borrow an additional Rs 80,000 crore to fund the FY21 fiscal deficit. Ref: Excerpt from speech

Key Takeaways Across Sectors

Union Finance Minister Nirmala Sitharaman on February 1, while reading out the Budget 2021-22, she announced a slew of measures to revive the Indian economy and announced the total size of the 2021-22 budget at Rs 34.83 lakh crore.

1) Health and Well Being:

a) Total allocation: Rs 2,23,846 crore (138% increase than previous Budget).
b) PM Aatmanirbhar Swastha Bharat: Rs 64,180 crore over 6 years.
c) Urban Swachcha Bharat Mission: Rs 1,41,678 crore over 5 years.
d) Voluntary vehicle scrapping policy. Vehicles will undergo fitness tests after 20 years for PVs, 15 years for CVs.

2) Manufacturing:

a) Capital expenditure for FY 21-22: Rs 5.54 lakh crore
b) Mega Investment Textiles Parks over 3 years, in addition to PLI.
c) Bill to set-up a Development Finance Institution (DFI), capitalised with Rs 20,000 crore.
d) DFI for infrastructure financing: Bill will be passed to set up the DFI with a target lending portfolio of Rs 5 lakh crore in 3 years
e) Capital expenditure for FY 21-22: Rs 5.54 lakh crore (an increase by 34.5% YoY).
f) To launch National Monetisation Pipeline for brownfield projects, NHAI and PGCIL have sponsored one InvIT each

3) Roads Connectivity:

a) Allotment to Ministry of Road Transport & Highways: Rs 1.18 lakh crore.
b) To award 8,500-km of highways by March 2022 and 11,000-km of national highway corridor to be completed.
c) Highway works proposed:
 i) 3,500 km corridor in Tamil Nadu.
 ii) 1,100 km in Kerala at investment of Rs 65,000 crore.
 iii) 675 km in West Bengal at a cost of Rs 95,000 crore.
 iv) 1,300 km in Assam in the next 3 years.
d) 3500 km of national highway work being planned in Tamil Nadu at an estimated investment of Rs 1.3 lakh crore.
e) 1500 km of national highway work being planned in Kerala at a cost of Rs 65,000 crore.
f) Government to undertake future freight corridor development projects.
g) The govt to work towards raising the share of public transport with an outlay of Rs 18,000 crore.

4) Railways:
Total allocation: Rs 1,10,055 crore.

5) Power:

a) Scheme to assist Discoms will be launched: Outlay over Rs 3 lakh crore.
b) Ujjwala scheme to be expanded to over 1 crore more beneficiaries.
c) City gas distribution network to be expanded to 100 more districts.
d) Independent gas network operator will be set up.

6) Disinvestment:

a) Divestment target for FY22: Rs 1.75 lakh crore.
b) Proposal to strategically divest 2 PSU banks & 1 general insurance co.
c) Proposal to take up 2 PSBs and one general insurer for divestment.
d) To bring IPO of LIC in FY22.
e) Approved policy for divestment in strategic and non-strategic sectors.
f) Set up a separate administrative structure for cooperatives.
g) Approval policy for divestment in strategic and non-strategic sectors.
h) Non-core assets like surplus land will be monetised. SPVs will be set up to carry out this activity.

7) Startups/MSMEs:

a) Innovators would be allowed to form 1-person companies without restrictions, paid-up capital, or turnover norms.
b) Govts says provided Rs 15,700 crore to MSME sector, more than 2x of the previous year.
c) Proposal to reduce the margin money requirement from 25% to 15% doe Stand Up India for SCs, STs, and women, and to also include loans for activities allied to agriculture.
d) Proposal to provide Rs 1,000 crores for the welfare of Tea workers especially women and their children in Assam and West Bengal. A special scheme will be devised for the same.

8) Agriculture and Allied Services:

a) For wheat procurement in 2020-21 to farmers: Rs 75,060 crore.
b) Enhanced agriculture credit target for FY22. Additional allocations for rural infrastructure & irrigation.
c) Micro-irrigation corpus doubled to Rs 10,000 crore.
d) Agriculture infra funds will be made available to APMCs.
e) Rural infra fund increased to Rs 40,000 crore.
f) Set up multi seaweed park in Tamil Nadu.

9) Social security:

a) '1 Nation 1 Ration Card' plan under implementation by 32 states & UTs. To launch a portal to collect data on migrant workers.
b) Social security benefits will be extended to gig and platform workers.
c) To launch a portal to collect data on migrant workers.
d) Social security benefits will be extended to gig economy workers.
e) Women will be allowed to work in all areas and in night shifts.

10) Education and Skill Development:

a) Introduction of legislation for setting up of higher education commission. Will set up a central university in Leh.
b) 15,000 schools to be strengthened as per National Education Policy 
c) 100 new Sainik schools to be set up in partnership with NGOs.
d) Raise allocation for 'Eklavya' schools to Rs 38 crore & Rs 40 crore in hilly areas.
e) For skill initiatives for the youth: Rs 3,000 crore to be set aside.
f) National Research Foundation to be allocated Rs 50,000 crore over 5 years.

11) Digital Payments:

a) To boost digital payments.
b) For financial incentives for digital payments: Rs 1,500 crore earmarked.
c) NRF to get Rs 50,000 crore over 5 years. NRF will focus on the Research system being strengthened in the industry.

12) Expenditure target:

a) FY21 revised expenditure target: Rs 34.50 lakh crore.
b) Govt to approach the market for additional Rs 80,000 crore to fund the FY21 fiscal deficit.
c) Fiscal deficit will reach below 4.5% by FY26.
d) Gross market borrowing target at Rs 12 lakh crore for FY22.
e) 41% devolution to states retained.
f) Contingency Fund of India to be enhanced: Rs 30,000 cr.
g) Propose to discontinue loans to FCI. Have provided support in budget.
h) 15th Finance Commission reconfirming share of States at 41%.
i) Fiscal deficit in the revised estimate for FY21 pegged at 9.5% of GDP
j) Need another Rs 80,000 crore for FY21.
k) Will approach market in next the 2 months for the additional Rs 80,000 crore.
l) Fiscal Deficit Estimated at 6.8% for FY22.
m) Gross Borrowing Estimated at around Rs 12 lakh crore for FY22
n) Will look to bring the fiscal deficit below 4.5% by 2025-2026 (FY26).
o) Expect a fairly decent decline of Fiscal Deficit up to FY26.

13) Income Tax:

a) Senior citizens above 75 years with only pension and interest income exempted from filing returns.
b) Reopening of tax cases only till after 3 years Vs 6 years earlier.
c) To set-up a faceless dispute resolution mechanism for small taxpayers.
d) To make Income Tax Appellate Tribunal faceless.
e) Proposal to Propose to increase the threshold for tax audit to Rs 10 crore Vs Rs 5 crore (for those transacting 95% digitally).

14) Affordable Housing:

a) Affordable housing deduction extended by one year to FY22.
b) Tax exemption to notified rental housing projects
c) Notified infra debt funds to be eligible to raise tax-efficient zero-coupon bonds.

15) Other Taxes:

a) FPI to get a deduction of tax on the dividend at a lower treaty rate.
b) Tax exemption for aircraft leasing companies. Tax holiday for Aircraft leasing business in Gift city.
c) Details of cap gains, div income, interest income to be pre-filled in tax forms.
d) Late deposit of employee’s contribution will not be allowed as a deduction for the employer.
e) Extension of cap gains tax exemption for investment into start-ups by another year.
f) Delayed contribution of EPF by an employer for the employee will not be allowed as a deduction.
g) Proposal to review more than 400 old exemptions in customs this year.
h) To put into place new customs duty structure by Oct-1, 2021.
i) Withdrawal of exemptions on some parts of mobile phones. Some parts of mobiles to move from NIL to 2.5% rate.
j) Exemption of duty on steel scrap for a specified period. Revocation of ADD and CVD on certain steel products.
k) Cut in duty on copper scrap 2.5% from 5%.
l) Cut in Basic Customs Duty rate on nylon chips & nylon fiber.
m) Rationalisation of customs duties on gold and silver.
n) Introduction of a phased manufacturing plan for solar cells & panels.
o) Withdrawal of exemption on tunnel boring machines, to be taxed at 7.5%.
p) Increase in customs duties on some auto parts.
q) Withdrawal of exemption on certain kinds of leather imports.
r) Raise in customs duty on cotton and raw silk. Ref: Key Takeaways

Industry Reviews

- Bullion industry lauds the move of the government to cut customs duty on gold and silver, which was a long-standing demand of the industry. Government has announced in the Budget 2021 to reduce import duty on precious metals to 7.5% from 12.5%. However, both will attract 2.5% of agriculture infrastructure and development cess. 

- Being the world's second-largest gold consumer, India imports the bulk of its gold and silver requirements. Since the prices of precious metals have surged sharply in 2020, physical demand plummeted and imports have tumbled to multi-year lows. The total levy on gold currently is at 15.5 per cent, including GST. With reduced duty, the cost will come down, which is a big positive in long term for the demand outlook of gold. 

- Startups, their employees and investors, including venture capital and private equity funds, had a lot of expectations from the Union Budget 2021, while some measures were announced, there was a lot left to be desired as Finance Minister Nirmala Sitharaman focused on healthcare and infrastructure spending in the wake of the coronavirus pandemic. Though there were no announcements which put the industry into a frenzy—like a proposed ban on cryptocurrencies two years ago and the angel tax issue—a lot of areas where founders and investors expected reform did not happen, while the areas the government did address seem to be incremental, writes M Sriram.

- The Budget has proposed to set the ball rolling for a long term strong growth with focus on infrastructure and banking reforms. The inclusion of off balance sheet items also signals a clear intention of the government towards a transparent accounting. Ref: moneycontrol

Budget Highlights 2021: Top 5 takeaways for taxpayers

1. No tax burden on senior citizens above 75 2. Tax assessment can be re-opened only up to 3 years 3. Dispute Resolution Committee for small taxpayers 4. Additional deduction of Rs 1.5 lakh for purchasing affordable house. 5. Relief from double taxation for NRIs

Direct Tax Proposals

Certain direct tax proposals were introduced, providing relaxation to individual taxpayers and startups to some extent. The individual and corporate tax rates for FY 2021-22 (AY 2022-23) was left unchanged. In a major move, the limit for tax audits under section 44AB has been increased from Rs 5 crore to Rs 10 crore (only where 95% of payments are digitised), providing relief to many corporate houses. The following are other proposed amendments: # IT relaxation for senior citizens of 75 years age and above: It has been proposed to exempt the senior citizens from filing income tax returns if pension income and interest income are their only annual income source. Section 194P has been newly inserted to enforce the banks to deduct tax on senior citizens more than 75 years of age who have a pension and interest income from the bank. # Reduction in time for IT Proceedings: Except in cases of serious tax evasion, assessment proceedings in the rest of the cases shall be reopened only up to three years, against the earlier time limit of six years. # Constitution of ‘Dispute Resolution Committee’: Those assessed with a taxable income of up to Rs.50 lakh (for small and medium taxpayers) and any disputed income of Rs.10 lakh can approach this committee under section 245MA. It will prevent new disputes and settle the issue at the initial stage. # National Faceless Income Tax Appellate Tribunal Centre: Provision is made for faceless proceedings before the Income Tax Appellate Tribunal (ITAT) in a jurisdiction less manner. It will reduce the cost of compliance for taxpayers, and increase transparency in the disposal of appeals. Further, it will also help achieve even distribution of work in different benches and ensure efficient administration. # Tax incentives to startups: The tax holiday for startups has been extended by one more year up to 31st March 2022. # Relaxations to NRI: There is a proposal to notify rules for removing hardship for double taxation. # Pre-filing of returns to be forefront: Pre-filling will be allowed for salary, tax payments, TDS, etc. Further, details of capital gains from listed securities, dividend income, etc. will be prefilled. # Advance Tax on dividend income: Advance tax will henceforth be applicable on dividend income only after its declaration. Tax holidays are proposed for aircraft leasing and rental companies. # Disallowance of PF contribution: In case the employee’s PF contribution was deducted but not deposited by the employer, it will not be allowed as a deduction for the employer. # Section 43CA stands amended: The stamp duty value can be up to 120% (earlier 110%) of the consideration if the transfer of “residential unit”, which means an independent housing unit is made between 12th November 2020 and 30th June 2021. # Amendment to Section 44ADA: Section 44ADA applied to all the assessees being residents in India. Now onwards, it applies only to the resident individual, Hindu Undivided Family (HUF) or a partnership firm, other than LLP. # Section 80EEA deduction extended: The affordable housing additional deduction was extended till 31st March 2022. The tax exemption has been granted for affordable rental projects. Ref: ClearTax Proposals in the area of Personal Tax Ref: Infosys Newsletter · Section 80EEA: Deduction of INR 1.5 lac in respect of interest on loan of certain house property can be claimed for loan sanctioned till 31 March 2022 (earlier it was 31 March 2021) in old tax regime. · Advance Tax on dividend income: Advance tax liability on dividend income will arise only after declaration or payment of dividend. · Interest income earned from the contribution exceeding INR 2.5 lakhs to Recognized & Employee Provident Fund and Public Provident fund from April 1, 2021 will be taxable. · ULIP: Amount received under ULIP with premium exceeding Rs.2.5lac will be treated as capital assets and taxable under capital gain on redemption (exempt in case of death). This is for the policies issued after 1st Feb 2021. · There is no changes in the Income tax slabs & tax regimes for individual. · Senior Citizens >75 years of age are not required to file Income tax returns if there is only pension & interest income.

Congress Leader Chidambaram slams govt

Although the government has claimed a massive increase of 137 per cent in health allocation in Budget 2021, Congress leader P. Chidambaram lashed out at the Centre saying the figure was just a "conjurer's trick." Chidambaram further said that the government had only marginally raised health funding, which when adjusted to inflation becomes nil. "The FM gave out a mind-boggling figure of Rs 2,23,846 crore for health, a breathtaking "rise" from the BE of the current year of Rs 94,452 crore. As I had warned, it was a conjurer's trick," he said. Chidambaram stated that "she (FM Sitharaman) added the one-time cost of vaccination ((Rs 35,000 crore) and the Finance Commission grants amounting to Rs 49,214 crore. She also included the allocations to the Department of Water and Sanitation." Ref: BusinessToday

Additional Notes

A1. LIC IPO: The FM announced plans to privatise 2 PSU banks and one general insurance company in FY22. The Govt will bring the long-awaited LIC IPO in FY22, adding that it plans to complete the divestments of BPCL, CONCOR and SCI in 2021-22 A2. Minimum Wages: Minimum wages will now apply to all categories of workers and women will be allowed to work in all categories with adequate protection. Ref: EconomicTimes A3. Two PSBs, one GIC to be divested: Two Public Sector Banks and one general insurance company to be divested, legislations amendments to be introduced in this session, says FM Sitharaman. A4. Coming to Jammu and Kashmir, Finance Minister Nirmala Sitharaman announced a new gas pipeline project for the state. A5. For Energy: Rs 1,000 crore to solar energy corporation and Rs 1,500 to renewable energy development agency were also announced. Ref: IndianExpress

Following is a list of imported items that will become costlier

* Compressors for refrigerators and air conditioners * LED lamps, parts and spares such as printed circuit board * Raw silk and cotton, * Solar invertors and lanterns * Automobile parts such as safety and toughened glasses * Windscreen wipers * Signalling equipment * Mobile phone parts like PCBA * Camera module * Connectors * Back cover, side keys, Mobile phone charger components * Inputs or raw materials of Lithiumion battery * Ink cartridges and ink spray nozzle * Finished leather products * Nylon Fibre and Yarn, Plastic builder wares * Cut and polished synthetic stones, including cut and polished cubic zirconia Ref: List of Costlier Items Other Links % Government of India Portal for Union Budget
Tags: Indian Politics,Politics,Investment,Management,

Saturday, January 30, 2021

We Need Cost-of-Living-Adjusment Act (2020)


A person earning minimum wages today cannot survive on it year after year.

Following case study done for two years for person in Delhi proves this point:

Item Expense Month
Total 7955 Dec-2016
Total 8221 Jan-2017
Total 9006 Feb-2017
Total 9254 Mar-2017
Total 8284 Apr-2017
Total 8497 May-2017
Total 9912 Jun-2017
Total 9051 Jul-2017
Total 7453 Aug-2017
Total 8541 Sep-2017
Total 9880 Oct-2017
Total 11678 Nov-2017

Average Monthly Expenses (2017): 8978

Item Expense Month
Total 15128 Dec-2017
Total 10794 Jan-2018
Total 10989 Feb-2018
Total 10385 Mar-2018
Total 13462 Apr-2018
Total 10790 May-2018
Total 10525 Jun-2018
Total 10159 Jul-2018
Total 10340 Aug-2018
Total 13508 Sep-2018
Total 11655 Oct-2018
Total 13777 Nov-2018

Average Monthly Expenses (2018): 11793 (Yearly Change: 31%)
Average Monthly Expenses (2019): 15624 (Yearly Change: 33%)

Item Expense Month
Total 16049 Jan-2020
Total 21408 Feb-2020
Total 11997 Mar-2020
Total 11306 Apr-2020
Total 11749 May-2020
Total 11230 Jun-2020
Total 13034 Jul-2020
Total 24481 Aug-2020
Total 24944 Sep-2020
Total 17305 Oct-2020
Total 35500 Nov-2020
Total 25167 Dec-2020

Average Monthly Expenses (2020): 18681 (Yearly Change: 19.6%)
Additional note about year 2020:
- My monthly accomodation rental was about Rs 4000 (for single occupancy).
- In Feb-2020, some expenses involved sister's wedding.
- From Aug 2020 to Dec 2020, there incurred a medical expenses of roughly Rs 8000 per month.
- In Nov 2020, there was an expenditure of about Rs 13000 on a matrimonial site.
- Each year, there is a roughly expenditure of Rs 3000 on phone bill that involves the internet usage.

We see here that:
1. There is an increment of over 31 percent in 2018 in average monthly expenses
2. Average monthly expenses increased by 33 percent in 2019.
3. Average monthly expenses increased by 19.6 percent in 2020.
That is when a person is living hand to mouth and there is no improvement in quality of any aspect of life.
    
We not only need 'Minimum Wages' act but we also need COLA (Cost of Living Adjustment) act as well.

How much increment did you get in your last appraisal? If it is below 10 percent, don't even bother to mention it.

Related articles:
% Are Minimum Wages Sufficent?
% Article showing minimum wages set by Indian government:
% Who benefits from a higher minimum wages?

Friday, January 29, 2021

Installing RASA using YML File in Anaconda



Before starting, a note about creating, activating, deactivating, removing a Conda environment and listing all the installed environments:

(base) CMD>conda create -n my_env_name
(base) CMD>conda activate my_env_name
(my_env_name) CMD>conda deactivate
(base) CMD>conda remove -n my_env_name --all
(base) CMD>conda env list

AFTER INSTALLATION OF "Microsoft Visual C++ 14.0" FROM "Build Tools for Visual Studio" AS WE ARE ON WINDOWS OS:

We run an env.yml file containing following code:

name: my_rasa_env
channels:
- conda-forge
dependencies:
- spacy
- python=3.8
- pip
- pip:
  - rasa-core

-- -- -- -- -- 

(base) C:\Users\ashish\Desktop\code>conda env create -f env.yml

Collecting package metadata (repodata.json): done
Solving environment: done

Downloading and Extracting Packages
urllib3-1.26.3       | 99 KB     | #### | 100%
...
cython-blis-0.7.4    | 5.6 MB    | #### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
Installing pip dependencies: | Ran pip subprocess with arguments:
['e:\\Anaconda3\\envs\\my_rasa_env\\python.exe', '-m', 'pip', 'install', '-U', '-r', 'C:\\Users\\ashish\\Desktop\\code\\condaenv.7w4auwk3.requirements.txt']
Pip subprocess output:
Collecting rasa-core
Using cached rasa_core-0.14.5-py3-none-any.whl (212 kB)
Collecting rocketchat-API~=0.6.0
...
Collecting characteristic
Using cached characteristic-14.3.0-py2.py3-none-any.whl (15 kB)
Building wheels for collected packages: Twisted
Building wheel for Twisted (setup.py): started
Building wheel for Twisted (setup.py): still running...
Building wheel for Twisted (setup.py): finished with status 'done'
Created wheel for Twisted: filename=Twisted-20.3.0-cp38-cp38-win_amd64.whl size=3098905 sha256=6eca0e3e573f4230d113548152f64c5aec4d0e7fa2d95b78caeaa5220de02bc9
Stored in directory: c:\users\ashish\appdata\local\pip\cache\wheels\f2\36\1b\99fe6d339e1559e421556c69ad7bc8c869145e86a756c403f4
Successfully built Twisted
Installing collected packages: ipython-genutils, ... rasa-core
Attempting uninstall: chardet
  Found existing installation: chardet 4.0.0
  Uninstalling chardet-4.0.0:
    Successfully uninstalled chardet-4.0.0
Successfully installed Automat-20.2.0 ConfigArgParse-1.2.3 Jinja2-2.11.2 MarkupSafe-1.1.1 PyHamcrest-2.0.2 PyYAML-5.4.1 Tubes-0.2.0 Twisted-20.3.0 Werkzeug-1.0.1 absl-py-0.11.0 aiohttp-3.7.3 alabaster-0.7.12 apscheduler-3.6.3 astunparse-1.6.3 async-generator-1.10 async-timeout-3.0.1 babel-2.9.0 bleach-3.2.3 boto3-1.16.62 botocore-1.19.62 cachetools-4.2.1 characteristic-14.3.0 chardet-3.0.4 click-7.1.2 cloudpickle-1.6.0 colorama-0.4.4 coloredlogs-15.0 constantly-15.1.0 cycler-0.10.0 decorator-4.4.2 defusedxml-0.6.0 docopt-0.6.2 docutils-0.16 entrypoints-0.3 fakeredis-1.4.5 fbmessenger-4.3.1 flask-1.1.2 flatbuffers-1.12 future-0.18.2 gast-0.3.3 gevent-21.1.2 google-auth-1.24.0 google-auth-oauthlib-0.4.2 google-pasta-0.2.0 graphviz-0.16 greenlet-1.0.0 grpcio-1.32.0 h5py-2.10.0 humanfriendly-9.1 hyperlink-21.0.0 imagesize-1.2.0 incremental-17.5.0 ipython-genutils-0.2.0 itsdangerous-1.1.0 jmespath-0.10.0 joblib-1.0.0 jsonpickle-1.5.0 jupyter-client-6.1.11 jupyter-core-4.7.0 jupyterlab-pygments-0.1.2 keras-2.4.3 keras-preprocessing-1.1.2 kiwisolver-1.3.1 klein-20.6.0 markdown-3.3.3 matplotlib-3.3.4 mistune-0.8.4 multidict-5.1.0 nbclient-0.5.1 nbconvert-6.0.7 nbformat-5.1.2 nbsphinx-0.8.1 nest-asyncio-1.5.1 networkx-2.5 oauthlib-3.1.0 opt-einsum-3.3.0 packaging-20.8 pandoc-1.0.2 pandocfilters-1.4.3 pathlib-1.0.1 pillow-8.1.0 ply-3.11 protobuf-3.14.0 pyasn1-0.4.8 pyasn1-modules-0.2.8 pygments-2.7.4 pykwalify-1.6.0 pyparsing-2.4.7 pyreadline-2.1 python-dateutil-2.8.1 python-telegram-bot-13.1 pytz-2020.5 pywin32-300 pyzmq-22.0.1 rasa-core-0.8.6 rasa-nlu-0.11.5 redis-3.5.3 requests-oauthlib-1.3.0 rsa-4.7 ruamel.yaml-0.16.12 ruamel.yaml.clib-0.2.2 s3transfer-0.3.4 scikit-learn-0.24.1 scipy-1.6.0 simplejson-3.17.2 slackclient-2.9.3 snowballstemmer-2.1.0 sortedcontainers-2.3.0 sphinx-3.4.3 sphinxcontrib-applehelp-1.0.2 sphinxcontrib-devhelp-1.0.2 sphinxcontrib-htmlhelp-1.0.3 sphinxcontrib-jsmath-1.0.1 sphinxcontrib-qthelp-1.0.3 sphinxcontrib-serializinghtml-1.1.4 tensorboard-2.4.1 tensorboard-plugin-wit-1.8.0 tensorflow-2.4.1 tensorflow-estimator-2.4.0 termcolor-1.1.0 testpath-0.4.4 threadpoolctl-2.1.0 tornado-6.1 traitlets-5.0.5 typing-3.7.4.3 typing-extensions-3.7.4.3 tzlocal-2.1 webencodings-0.5.1 wrapt-1.12.1 yarl-1.6.3 zope.event-4.5.0 zope.interface-5.2.0

done
#
# To activate this environment, use
#
#     $ conda activate my_rasa_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate 

Testing the installation

(base) C:\Users\ashish>conda activate my_rasa_env

(my_rasa_env) C:\Users\ashish>pip show rasa_core
Name: rasa-core
Version: 0.8.6
Summary: Machine learning based dialogue engine for conversational software.
Home-page: https://rasa.ai
Author: Rasa Technologies GmbH
Author-email: hi@rasa.ai
License: UNKNOWN
Location: e:\anaconda3\envs\my_rasa_env\lib\site-packages
Requires: tqdm, python-telegram-bot, pandoc, tensorflow, redis, Keras, coloredlogs, fbmessenger, pykwalify, scikit-learn, six, numpy, flask, graphviz, slackclient, apscheduler, nbsphinx, fakeredis, future, rasa-nlu, ConfigArgParse, jsonpickle, requests, ruamel.yaml, typing, h5py, networkx
Required-by: 

(my_rasa_env) C:\Users\ashish>pip show rasa_nlu
Name: rasa-nlu
Version: 0.11.5
Summary: Rasa NLU a natural language parser for bots
Home-page: https://rasa.com
Author: Alan Nichol
Author-email: alan@rasa.ai
License: UNKNOWN
Location: e:\anaconda3\envs\my_rasa_env\lib\site-packages
Requires: tqdm, matplotlib, numpy, klein, cloudpickle, boto3, typing, jsonschema, future, gevent, six, simplejson, pathlib, requests
Required-by: rasa-core

(my_rasa_env) C:\Users\ashish>pip show rasa
WARNING: Package(s) not found: rasa

We encountered some errors during our attempts to install RASA, following are the error logs and resolutions.

1: Erroneous code for environment "env.yml" as "rasa" is not available in channel "conda-forge":

name: rasa
channels:
- conda-forge
dependencies:
- pip
- rasa 

ERROR:

(base) C:\Users\ashish\Desktop\code>conda env create -f env.yml
Collecting package metadata (repodata.json): done
Solving environment: failed

ResolvePackageNotFound:
- rasa 

(base) C:\Users\ashish\Desktop\code>conda create -n erasa rasa
Collecting package metadata (current_repodata.json): done
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: failed

PackagesNotFoundError: The following packages are not available from current channels:

- rasa

Current channels:

- https://repo.anaconda.com/pkgs/main/win-64
- https://repo.anaconda.com/pkgs/main/noarch
- https://repo.anaconda.com/pkgs/r/win-64
- https://repo.anaconda.com/pkgs/r/noarch
- https://repo.anaconda.com/pkgs/msys2/win-64
- https://repo.anaconda.com/pkgs/msys2/noarch

To search for alternate channels that may provide the conda package you're
looking for, navigate to

  https://anaconda.org

and use the search bar at the top of the page. 
  
2: Erroneous code for installing "rasa" through "pip":

The RASA documentations says this: You can install RASA using "pip3 install rasa" [ Ref: RASA ] 

ENV.YML:
name: rasa
channels:
- conda-forge
dependencies:
- pip
- pip:
  - rasa

Point to note: It does download "rasa-core" and "rasa-nlu", that too a couple dozen versions.

(base) C:\Users\ashish\Desktop\code>conda env create -f env.yml
Collecting package metadata (repodata.json): done
Solving environment: done

Downloading and Extracting Packages
wheel-0.36.2         | 31 KB     | #### | 100%
wincertstore-0.2     | 15 KB     | #### | 100%
vs2015_runtime-14.28 | 1.4 MB    | #### | 100%
pip-21.0             | 1.1 MB    | #### | 100%
sqlite-3.34.0        | 1.2 MB    | #### | 100%
certifi-2020.12.5    | 144 KB    | #### | 100%
tzdata-2020f         | 121 KB    | #### | 100%
python_abi-3.9       | 4 KB      | #### | 100%
vc-14.2              | 12 KB     | #### | 100%
python-3.9.1         | 19.9 MB   | #### | 100%
setuptools-49.6.0    | 954 KB    | #### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
Installing pip dependencies: - Ran pip subprocess with arguments:
['e:\\Anaconda3\\envs\\rasa\\python.exe', '-m', 'pip', 'install', '-U', '-r', 'C:\\Users\\ashish\\Desktop\\code\\condaenv.fjji_o0b.requirements.txt']
Pip subprocess output:
Downloading rasa-1.10.2-py3-none-any.whl (510 kB)
Downloading pykwalify-1.7.0-py2.py3-none-any.whl (40 kB)
Downloading cloudpickle-1.3.0-py2.py3-none-any.whl (26 kB)
Downloading colorclass-2.2.0.tar.gz (17 kB)
Downloading matplotlib-3.2.2-cp39-cp39-win_amd64.whl (8.9 MB)
Downloading pytz-2019.3-py2.py3-none-any.whl (509 kB)
Downloading networkx-2.4-py3-none-any.whl (1.6 MB)
Downloading sanic-19.12.4-py3-none-any.whl (73 kB)
Downloading tensorflow_estimator-2.1.0-py2.py3-none-any.whl (448 kB)
Downloading absl-py-0.9.0.tar.gz (104 kB)
Downloading boto3-1.16.59-py2.py3-none-any.whl (130 kB)
Downloading python_engineio-3.12.1-py2.py3-none-any.whl (49 kB)
Downloading numpy-1.19.5-cp39-cp39-win_amd64.whl (13.3 MB)
Downloading SQLAlchemy-1.3.22-cp39-cp39-win_amd64.whl (1.2 MB)
Downloading fbmessenger-6.0.0-py2.py3-none-any.whl (11 kB)
Downloading kafka_python-1.4.7-py2.py3-none-any.whl (266 kB)
Downloading pydot-1.4.1-py2.py3-none-any.whl (19 kB)
Downloading questionary-1.5.2-py3-none-any.whl (26 kB)
Downloading async_generator-1.10-py3-none-any.whl (18 kB)
Downloading webexteamssdk-1.3.tar.gz (56 kB)
Using cached python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
Downloading tensorflow_probability-0.9.0-py2.py3-none-any.whl (3.2 MB)
Using cached oauth2client-4.1.3-py2.py3-none-any.whl (98 kB)
Downloading ruamel.yaml-0.16.12-py2.py3-none-any.whl (111 kB)
Downloading PyJWT-1.7.1-py2.py3-none-any.whl (18 kB)
Downloading Sanic_Cors-0.10.0.post3-py2.py3-none-any.whl (17 kB)
Downloading ujson-2.0.3.tar.gz (7.1 MB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Installing backend dependencies: started
Installing backend dependencies: finished with status 'done'
  Preparing wheel metadata: started
  Preparing wheel metadata: finished with status 'done'

Downloading requests-2.25.1-py2.py3-none-any.whl (61 kB)
Downloading terminaltables-3.1.0.tar.gz (12 kB)
Downloading tensorflow_hub-0.8.0-py2.py3-none-any.whl (101 kB)
Downloading rasa_sdk-1.10.3-py3-none-any.whl (39 kB)
Downloading coloredlogs-10.0-py2.py3-none-any.whl (47 kB)
Downloading pika-1.1.0-py2.py3-none-any.whl (148 kB)
Downloading rasa-1.10.1-py3-none-any.whl (509 kB)
Downloading rasa-1.10.0-py3-none-any.whl (509 kB)
Downloading rasa-1.9.7-py3-none-any.whl (497 kB)
Downloading tensorflow_hub-0.7.0-py2.py3-none-any.whl (89 kB)
Downloading python_engineio-3.11.2-py2.py3-none-any.whl (49 kB)
Requirement already satisfied: setuptools>=41.0.0 in e:\anaconda3\envs\rasa\lib\site-packages (from rasa->-r C:\Users\ashish\Desktop\code\condaenv.fjji_o0b.requirements.txt (line 1)) (49.6.0.post20210108)
Downloading rocketchat_API-0.6.36-py3-none-any.whl (9.5 kB)
Downloading ruamel.yaml-0.15.100.tar.gz (318 kB)
Downloading matplotlib-3.1.3.tar.gz (40.9 MB)
Downloading webexteamssdk-1.1.1.tar.gz (48 kB)
Downloading rasa-1.9.6-py3-none-any.whl (497 kB)
Downloading rasa-1.9.5-py3-none-any.whl (496 kB)
Downloading rasa-1.9.4-py3-none-any.whl (495 kB)
Downloading rasa-1.9.3-py3-none-any.whl (495 kB)
Downloading rasa-1.9.2-py3-none-any.whl (495 kB)
Downloading rasa-1.9.1-py3-none-any.whl (495 kB)
Downloading rasa-1.9.0-py3-none-any.whl (495 kB)
Downloading rasa-1.8.3-py3-none-any.whl (483 kB)
Downloading rasa-1.8.2-py3-none-any.whl (483 kB)
Downloading rasa-1.8.1-py3-none-any.whl (481 kB)
Downloading rasa-1.8.0-py3-none-any.whl (481 kB)
Downloading rasa-1.7.4-py3-none-any.whl (575 kB)
Using cached jsonschema-3.2.0-py2.py3-none-any.whl (56 kB)
Downloading slackclient-1.3.2.tar.gz (16 kB)
Downloading cloudpickle-1.2.2-py2.py3-none-any.whl (25 kB)
Downloading packaging-19.2-py2.py3-none-any.whl (30 kB)
Downloading colorhash-1.0.3-py3-none-any.whl (4.0 kB)
Downloading pika-1.0.1-py2.py3-none-any.whl (148 kB)
Downloading python_socketio-5.0.4-py2.py3-none-any.whl (52 kB)
Downloading sklearn_crfsuite-0.3.6-py2.py3-none-any.whl (12 kB)
Downloading aiohttp-3.7.3-cp39-cp39-win_amd64.whl (633 kB)
Downloading gym-0.15.4.tar.gz (1.6 MB)
Downloading gevent-1.5.0.tar.gz (5.3 MB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
  Preparing wheel metadata: started
  Preparing wheel metadata: finished with status 'done'
Downloading sanic-jwt-1.6.0.tar.gz (19 kB)
Downloading tensorflow_probability-0.7.0-py2.py3-none-any.whl (981 kB)
Downloading gast-0.2.2.tar.gz (10 kB)
Downloading twilio-6.51.0.tar.gz (457 kB)
Downloading matplotlib-3.3.3-cp39-cp39-win_amd64.whl (8.5 MB)
Downloading scikit-learn-0.20.4.tar.gz (11.7 MB)
Downloading python_engineio-4.0.0-py2.py3-none-any.whl (50 kB)
Downloading redis-3.3.11-py2.py3-none-any.whl (66 kB)
Downloading prompt_toolkit-2.0.10-py3-none-any.whl (340 kB)
Downloading mattermostwrapper-2.2.tar.gz (2.5 kB)
Downloading tqdm-4.56.0-py2.py3-none-any.whl (72 kB)
Downloading webexteamssdk-1.6-py3-none-any.whl (113 kB)
Downloading Sanic_Cors-0.9.9.post1-py2.py3-none-any.whl (16 kB)
Downloading attrs-20.3.0-py2.py3-none-any.whl (49 kB)
Downloading tensor2tensor-1.14.1-py2.py3-none-any.whl (1.6 MB)
Downloading sanic-19.9.0-py3-none-any.whl (73 kB)
Downloading APScheduler-3.7.0-py2.py3-none-any.whl (59 kB)
Downloading jsonpickle-1.5.0-py2.py3-none-any.whl (36 kB)
Downloading scipy-1.6.0-cp39-cp39-win_amd64.whl (32.7 MB)
Downloading python_telegram_bot-11.1.0-py2.py3-none-any.whl (326 kB)

Downloading multidict-4.6.1.tar.gz (115 kB)
Downloading rasa_sdk-1.7.0-py3-none-any.whl (37 kB)
Downloading rasa_sdk-1.6.1-py2.py3-none-any.whl (32 kB)
Downloading rasa_sdk-1.5.2-py2.py3-none-any.whl (32 kB)
Downloading rasa_sdk-1.4.0-py2.py3-none-any.whl (32 kB)
Downloading questionary-1.9.0-py3-none-any.whl (32 kB)
Downloading jsonschema-2.6.0-py2.py3-none-any.whl (39 kB)

Downloading rasa-1.7.3-py3-none-any.whl (575 kB)
Downloading rasa-1.7.2-py3-none-any.whl (575 kB)
Downloading rasa-1.7.1-py3-none-any.whl (574 kB)
Downloading rasa-1.7.0-py3-none-any.whl (573 kB)
Downloading rasa-1.6.2-py3-none-any.whl (559 kB)

Downloading rasa-1.6.1-py3-none-any.whl (559 kB)

Downloading rasa-1.6.0-py3-none-any.whl (558 kB)
Downloading rasa-1.5.3-py3-none-any.whl (530 kB)


Downloading rasa-1.5.2-py3-none-any.whl (529 kB)
Downloading rasa-1.5.1-py3-none-any.whl (529 kB)
Downloading rasa-1.5.0-py3-none-any.whl (527 kB)
Downloading rasa-1.4.6-py3-none-any.whl (518 kB)

Downloading rasa-1.4.5-py3-none-any.whl (517 kB)
Downloading rasa-1.4.4-py3-none-any.whl (517 kB)
Downloading rasa-1.4.3-py3-none-any.whl (518 kB)

Using cached absl_py-0.11.0-py3-none-any.whl (127 kB)
Downloading networkx-2.3.zip (1.7 MB)
Downloading simplejson-3.17.2.tar.gz (83 kB)
Downloading Sanic_Cors-0.9.9.post4-py2.py3-none-any.whl (16 kB)
Downloading pymongo-3.11.2-cp39-cp39-win_amd64.whl (383 kB)
Downloading sanic-19.3.1-py3-none-any.whl (60 kB)
Downloading fakeredis-1.4.5-py3-none-any.whl (35 kB)
Downloading rasa_sdk-1.3.3-py2.py3-none-any.whl (32 kB)
Downloading urllib3-1.24.3-py2.py3-none-any.whl (118 kB)
Downloading rasa_sdk-1.0.0-py2.py3-none-any.whl (22 kB)

Downloading rasa-1.4.2-py3-none-any.whl (516 kB)
Downloading rasa-1.4.1-py3-none-any.whl (516 kB)
Downloading rasa-1.4.0-py3-none-any.whl (515 kB)
Downloading rasa-1.3.10-py3-none-any.whl (507 kB)
Downloading rasa-1.3.9-py3-none-any.whl (506 kB)
Downloading rasa-1.3.8-py3-none-any.whl (505 kB)
Downloading rasa-1.3.7-py3-none-any.whl (505 kB)
Downloading rasa-1.3.6-py3-none-any.whl (505 kB)
Downloading rasa-1.3.4-py3-none-any.whl (504 kB)
Downloading rasa-1.3.3-py3-none-any.whl (503 kB)
Downloading rasa-1.3.2-py3-none-any.whl (502 kB)
Downloading rasa-1.3.1-py3-none-any.whl (502 kB)
Downloading rasa-1.3.0-py3-none-any.whl (502 kB)
Downloading rasa-1.2.12-py3-none-any.whl (471 kB)
Downloading rasa-1.2.11-py3-none-any.whl (471 kB)
Downloading rasa-1.2.10-py3-none-any.whl (471 kB)
Downloading rasa-1.2.9-py3-none-any.whl (471 kB)
Downloading rasa-1.2.8-py3-none-any.whl (471 kB)
Downloading rasa-1.2.7-py3-none-any.whl (471 kB)
Downloading rasa-1.2.6-py3-none-any.whl (470 kB)
Downloading rasa-1.2.5-py3-none-any.whl (470 kB)
Downloading rasa-1.2.4-py3-none-any.whl (469 kB)
Downloading rasa-1.2.3-py3-none-any.whl (469 kB)
Downloading rasa-1.2.2-py3-none-any.whl (468 kB)
Downloading rasa-1.2.1-py3-none-any.whl (468 kB)
Downloading rasa-1.2.0-py3-none-any.whl (468 kB)
Downloading rasa-1.1.8-py3-none-any.whl (464 kB)
Downloading rasa-1.1.7-py3-none-any.whl (455 kB)
Downloading rasa-1.1.6-py3-none-any.whl (453 kB)
Downloading rasa-1.1.5-py3-none-any.whl (452 kB)
Downloading rasa-1.1.4-py3-none-any.whl (447 kB)
Downloading rasa-1.1.3-py3-none-any.whl (446 kB)
Downloading rasa-1.1.2-py3-none-any.whl (444 kB)
Downloading rasa-1.1.1-py3-none-any.whl (444 kB)
Downloading rasa-1.1.0-py3-none-any.whl (444 kB)
Downloading rasa-1.0.9-py3-none-any.whl (440 kB)
Downloading rasa-1.0.8-py3-none-any.whl (440 kB)
Downloading rasa-1.0.7-py3-none-any.whl (439 kB)
Downloading rasa-1.0.6-py3-none-any.whl (438 kB)
Downloading rasa-1.0.5-py3-none-any.whl (438 kB)
Downloading rasa-1.0.4-py3-none-any.whl (438 kB)
Downloading rasa-1.0.3-py3-none-any.whl (438 kB)
Downloading rasa-1.0.2-py3-none-any.whl (438 kB)
Downloading rasa-1.0.1-py3-none-any.whl (436 kB)
Downloading rasa-1.0.0-py3-none-any.whl (436 kB)
Downloading rasa-0.1.1-py3-none-any.whl (6.1 kB)
Downloading rasa_core-0.14.5-py3-none-any.whl (212 kB)
Downloading rasa_nlu-0.15.1-py3-none-any.whl (147 kB)
Downloading networkx-2.5-py3-none-any.whl (1.6 MB)
Downloading redis-2.10.6-py2.py3-none-any.whl (64 kB)
Downloading Flask_Cors-3.0.10-py2.py3-none-any.whl (14 kB)
Downloading fbmessenger-5.6.0-py2.py3-none-any.whl (11 kB)
Downloading Flask-1.1.2-py2.py3-none-any.whl (94 kB)
Downloading Flask-JWT-Simple-0.0.3.tar.gz (6.9 kB)
Downloading pika-0.12.0-py2.py3-none-any.whl (108 kB)
Downloading fakeredis-0.10.3-py2.py3-none-any.whl (27 kB)
Downloading rasa_core_sdk-0.13.1-py2.py3-none-any.whl (20 kB)
Downloading Keras_Applications-1.0.6-py2.py3-none-any.whl (44 kB)
INFO: pip is looking at multiple versions of rasa to determine which version is compatible with other requirements. This could take a while.
Downloading rasa_core-0.14.4-py3-none-any.whl (212 kB)
Downloading rasa_core-0.12.3-py2.py3-none-any.whl (204 kB)
...
Downloading rasa_core-0.8.6-py2.py3-none-any.whl (103 kB)
Downloading rasa_core-0.7.0.tar.gz (60 kB)
Downloading pykwalify-1.6.0-py2.py3-none-any.whl (38 kB)
Downloading ConfigArgParse-0.13.0.tar.gz (31 kB)
Downloading PyYAML-3.13.tar.gz (270 kB)
Downloading scikit-learn-0.19.2.tar.gz (9.7 MB)
Downloading pika-0.11.2-py2.py3-none-any.whl (107 kB)
Downloading python_telegram_bot-10.1.0-py2.py3-none-any.whl (298 kB)
Downloading prompt_toolkit-1.0.14-py3-none-any.whl (248 kB)
Downloading python_engineio-3.14.2-py2.py3-none-any.whl (51 kB)
Downloading future-0.18.2.tar.gz (829 kB)
Downloading jsonpickle-0.9.6.tar.gz (67 kB)
Downloading PyInquirer-1.0.3.tar.gz (27 kB)
Downloading graphviz-0.9-py2.py3-none-any.whl (16 kB)
Downloading graphviz-0.8.4-py2.py3-none-any.whl (16 kB)
Downloading Keras-2.4.3-py2.py3-none-any.whl (36 kB)
Downloading rasa_core_sdk-0.11.5-py2.py3-none-any.whl (14 kB)
Downloading rasa_nlu-0.11.5.tar.gz (55 kB)
Downloading pandoc-1.0.2.tar.gz (488 kB)
Downloading graphviz-0.16-py2.py3-none-any.whl (19 kB)
Downloading python_telegram_bot-13.1-py3-none-any.whl (422 kB)
Downloading slackclient-2.9.3-py2.py3-none-any.whl (96 kB)
Downloading rasa_core-0.8.5.tar.gz (76 kB)
Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
Downloading redis-3.5.3-py2.py3-none-any.whl (72 kB)
Downloading nbsphinx-0.8.1-py3-none-any.whl (24 kB)
Downloading typing-3.7.4.3.tar.gz (78 kB)
Downloading rasa-0.1.0-py3-none-any.whl (6.1 kB)
Downloading rasa-0.0.5.tar.gz (5.5 kB)
Downloading rasa-0.0.4.tar.gz (5.0 kB)
Downloading rasa-0.0.3.tar.gz (4.7 kB)
Downloading rasa-0.0.2.tar.gz (3.9 kB)
Downloading rasa-0.0.1.tar.gz (1.6 kB)
Downloading urllib3-1.26.2-py2.py3-none-any.whl (136 kB)
Downloading chardet-4.0.0-py2.py3-none-any.whl (178 kB)
Requirement already satisfied: certifi>=2017.4.17 in e:\anaconda3\envs\rasa\lib\site-packages (from requests < 3.0,>=2.23->rasa->-r C:\Users\ashish\Desktop\code\condaenv.fjji_o0b.requirements.txt (line 1)) (2020.12.5)
Using cached idna-2.10-py2.py3-none-any.whl (58 kB)
Building wheels for collected packages: rasa
Building wheel for rasa (setup.py): started
Building wheel for rasa (setup.py): finished with status 'done'
Created wheel for rasa: filename=rasa-0.0.5-py3-none-any.whl size=6115 sha256=21f60ab11f975e9f4855f730b54d316cac6d4864420dd62e945dfc6091330085
Stored in directory: c:\users\ashish\appdata\local\pip\cache\wheels\16\9b\e5\589820b8a86bcf14b1020a72bab300d7f853c133075a6f3d72
Successfully built rasa
Installing collected packages: urllib3, idna, chardet, requests, rasa
Successfully installed chardet-4.0.0 idna-2.10 rasa-0.0.5 requests-2.25.1 urllib3-1.26.2

done
#
# To activate this environment, use
#
#     $ conda activate rasa
#
# To deactivate an active environment, use
#
#     $ conda deactivate 

TESTING:::::

(base) C:\Users\ashish\Desktop\code>conda activate rasa

(rasa) C:\Users\ashish\Desktop\code>pip show rasa-nlu
WARNING: Package(s) not found: rasa-nlu

(rasa) C:\Users\ashish\Desktop\code>pip show rasa_nlu
WARNING: Package(s) not found: rasa_nlu

(rasa) C:\Users\ashish\Desktop\code>pip show rasa-core
WARNING: Package(s) not found: rasa-core

(rasa) C:\Users\ashish\Desktop\code>pip show rasa_core
WARNING: Package(s) not found: rasa_core

(rasa) C:\Users\ashish\Desktop\code>pip show rasa
Name: rasa
Version: 0.0.5
Summary: A wrapper Cisco ASA REST API
Home-page: http://networklore.com/rasa/
Author: Patrick Ogenstad
Author-email: patrick@ogenstad.com
License: Apache
Location: e:\anaconda3\envs\rasa\lib\site-packages
Requires: requests
Required-by:

The Cisco ASA is a security device that combines firewall, antivirus, intrusion prevention, and virtual private network (VPN) capabilities. It provides proactive threat defense that stops attacks before they spread through the network.

This is not what we were looking for. RASA is a chatbot framework.

Another failure while trying out RASA installation using "pip3".
The error we get is: "ModuleNotFoundError: No module named 'pypandoc'"
This error is fixed by using the Python version 3.8 as said in RASA Installation Docs. Our version of Python was 3.9.

(base) C:\Users\ashish>conda create -n myenv python

Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

environment location: e:\Anaconda3\envs\myenv

added / updated specs:
  - python


The following packages will be downloaded:

  package                    |            build
  ---------------------------|-----------------
  ca-certificates-2021.1.19  |       haa95532_0         122 KB
  certifi-2020.12.5          |   py39haa95532_0         141 KB
  openssl-1.1.1i             |       h2bbff1b_0         4.8 MB
  pip-20.3.3                 |   py39haa95532_0         1.8 MB
  python-3.9.1               |       h6244533_2        16.4 MB
  setuptools-52.0.0          |   py39haa95532_0         725 KB
  tzdata-2020f               |       h52ac0ba_0         113 KB
  vc-14.2                    |       h21ff451_1           8 KB
  vs2015_runtime-14.27.29016 |       h5e58377_2        1007 KB
  wheel-0.36.2               |     pyhd3eb1b0_0          33 KB
  wincertstore-0.2           |   py39h2bbff1b_0          15 KB
  ------------------------------------------------------------
                                         Total:        25.1 MB

The following NEW packages will be INSTALLED:

ca-certificates    pkgs/main/win-64::ca-certificates-2021.1.19-haa95532_0
certifi            pkgs/main/win-64::certifi-2020.12.5-py39haa95532_0
openssl            pkgs/main/win-64::openssl-1.1.1i-h2bbff1b_0
pip                pkgs/main/win-64::pip-20.3.3-py39haa95532_0
python             pkgs/main/win-64::python-3.9.1-h6244533_2
setuptools         pkgs/main/win-64::setuptools-52.0.0-py39haa95532_0
sqlite             pkgs/main/win-64::sqlite-3.33.0-h2a8f88b_0
tzdata             pkgs/main/noarch::tzdata-2020f-h52ac0ba_0
vc                 pkgs/main/win-64::vc-14.2-h21ff451_1
vs2015_runtime     pkgs/main/win-64::vs2015_runtime-14.27.29016-h5e58377_2
wheel              pkgs/main/noarch::wheel-0.36.2-pyhd3eb1b0_0
wincertstore       pkgs/main/win-64::wincertstore-0.2-py39h2bbff1b_0
zlib               pkgs/main/win-64::zlib-1.2.11-h62dcd97_4

Proceed ([y]/n)? y 

(base) C:\Users\ashish>conda activate myenv 

(myenv) C:\Users\ashish>pip3 install rasa
Collecting rasa
Using cached rasa-1.10.2-py3-none-any.whl (510 kB)
...
Using cached rasa-1.6.1-py3-none-any.whl (559 kB)
Requirement already satisfied: setuptools>=41.0.0 in e:\anaconda3\envs\myenv\lib\site-packages (from rasa) (52.0.0.post20210125)
Using cached rasa-1.6.0-py3-none-any.whl (558 kB)
...
Using cached rasa-0.1.1-py3-none-any.whl (6.1 kB)
Collecting rasa-core
Using cached rasa_core-0.14.5-py3-none-any.whl (212 kB)
...
Using cached rasa_core-0.7.9.tar.gz (61 kB)
  ERROR: Command errored out with exit status 1:
   command: 'e:\Anaconda3\envs\myenv\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\ashish\\AppData\\Local\\Temp\\pip-install-ah9j5xnw\\rasa-core_5c8978c463de41d99df016553e2821a4\\setup.py'"'"'; __file__='"'"'C:\\Users\\ashish\\AppData\\Local\\Temp\\pip-install-ah9j5xnw\\rasa-core_5c8978c463de41d99df016553e2821a4\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\ashish\AppData\Local\Temp\pip-pip-egg-info-98hq0mod'
       cwd: C:\Users\ashish\AppData\Local\Temp\pip-install-ah9j5xnw\rasa-core_5c8978c463de41d99df016553e2821a4\
  Complete output (14 lines):
  Traceback (most recent call last):
    File "C:\Users\ashish\AppData\Local\Temp\pip-install-ah9j5xnw\rasa-core_5c8978c463de41d99df016553e2821a4\setup.py", line 9, in module
      import pypandoc
  ModuleNotFoundError: No module named 'pypandoc'

  During handling of the above exception, another exception occurred:

  Traceback (most recent call last):
    File "string", line 1, in module
    File "C:\Users\ashish\AppData\Local\Temp\pip-install-ah9j5xnw\rasa-core_5c8978c463de41d99df016553e2821a4\setup.py", line 12, in module
      readme = open('README.md').read()
    File "e:\Anaconda3\envs\myenv\lib\encodings\cp1252.py", line 23, in decode
      return codecs.charmap_decode(input,self.errors,decoding_table)[0]
  UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 882: character maps to undefined
  ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

(myenv) C:\Users\ashish> 

Error is due to not using correct version of Python to work with RASA:

(erasa) C:\Users\ashish\Desktop\code>python
Python 3.9.1 (default, Dec 11 2020, 09:29:25) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

WE NEED A LOWER VERSION OF PYTHON:

Dated: 26-Jan-2021
You can install Rasa Open Source using pip (requires Python 3.6, 3.7 or 3.8).

According to this link: RASA Docs  

For Installation of RASA on Windows, you need "Microsoft Visual C++ 14.0 is required. Get it with 'Build Tools for Visual Studio'". 

running build_ext
building 'twisted.test.raiser' extension
error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/
----------------------------------------
ERROR: Failed building wheel for Twisted
  ERROR: Command errored out with exit status 1:
  command: 'e:\Anaconda3\envs\erasa3\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\ashish\\AppData\\Local\\Temp\\pip-install-fpvqt_cw\\twisted_d52b02a3aff44d87b026985a9469039a\\setup.py'"'"'; __file__='"'"'C:\\Users\\ashish\\AppData\\Local\\Temp\\pip-install-fpvqt_cw\\twisted_d52b02a3aff44d87b026985a9469039a\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\ashish\AppData\Local\Temp\pip-record-exf7fho7\install-record.txt' --single-version-externally-managed --compile --install-headers 'e:\Anaconda3\envs\erasa3\Include\Twisted'
      cwd: C:\Users\ashish\AppData\Local\Temp\pip-install-fpvqt_cw\twisted_d52b02a3aff44d87b026985a9469039a\ 
Check the logs for full command output.

failed
CondaEnvException: Pip failed  
Tags: Technology,Natural Language Processing,Anaconda,Machine Learning,Python,

Working with compiled Python code (.pyc file)



How to manually generate a .pyc file from a .py file?

Answer: Use 'compileall' in the terminal. The following command will go recursively into sub directories and make .pyc files for all the python files it finds. The compileall module is part of the python standard library, so you don't need to install anything extra to use it. This works exactly the same way for python2 and python3.

$ python -m compileall .

Or You can compile individual files(s) from the command line with:

$ python -m compileall [file_1].py [file_n].py

-- -- -- -- --

We have a script.py file that looks like this:

print("Hello World!")

In Use

(base) C:\Users\ashish\Desktop\code\1>dir
 Directory of C:\Users\ashish\Desktop\code\1

01/28/2021  11:58 AM    [DIR]          .
01/28/2021  11:58 AM    [DIR]          ..
01/28/2021  11:59 AM                21 script.py
               1 File(s)             21 bytes
               2 Dir(s)  108,239,290,368 bytes free

(base) C:\Users\ashish\Desktop\code\1>python -m compileall .
Listing '.'...
Compiling '.\\script.py'...

(base) C:\Users\ashish\Desktop\code\1>tree /f
Folder PATH listing for volume OSDisk

C:.
│   script.py
│
└───__pycache__
        script.cpython-37.pyc 

(base) C:\Users\ashish\Desktop\code\1>

Execution

(base) C:\Users\ashish\Desktop\code\2>dir
 Directory of C:\Users\ashish\Desktop\code\2

01/28/2021  12:00 PM    [DIR]          .
01/28/2021  12:00 PM    [DIR]          ..
01/28/2021  11:59 AM               124 script.cpython-37.pyc
               1 File(s)            124 bytes
               2 Dir(s)  108,236,578,816 bytes free 

(base) C:\Users\ashish\Desktop\code\2>python script.cpython-37.pyc
Hello World!

(base) C:\Users\ashish\Desktop\code\2>cd ../1

We create a file "script2.py" at path "\code\1":

def myfunc(in_str = "Hello World"):
    print(in_str)

(base) C:\Users\ashish\Desktop\code\1>dir
 Directory of C:\Users\ashish\Desktop\code\1

01/28/2021  01:23 PM    [DIR]          .
01/28/2021  01:23 PM    [DIR]          ..
01/28/2021  11:59 AM                21 script.py
01/28/2021  01:23 PM                56 script2.py
01/28/2021  11:59 AM    [DIR]          __pycache__
               2 File(s)             77 bytes
               3 Dir(s)  107,205,185,536 bytes free 

(base) C:\Users\ashish\Desktop\code\1>python -m compileall script2.py
Compiling 'script2.py'...

(base) C:\Users\ashish\Desktop\code\1>

We have "script3.py" at path "C:\Users\ashish\Desktop\code\1"

from script2 import myfunc

myfunc()

myfunc("From script 3.")

We run it to get.

(base) C:\Users\ashish\Desktop\code\1>python script3.py
Hello World
From script 3.

Next, we try and fail (then later succeed) in using a compiled Python code:

We did these tests after reading from StackOverflow and as a result we generate some error logs:

(base) C:\Users\ashish\Desktop\code\2>python script3.py
Traceback (most recent call last):
  File "script3.py", line 1, in [module]
    from script2 import myfunc
ModuleNotFoundError: No module named 'script2'

(base) C:\Users\ashish\Desktop\code\2>python script2.cpython-37.pyc

(base) C:\Users\ashish\Desktop\code\2>python script3.py
  File "script3.py", line 1
    from  script2.cpython-37 import myfunc
                         ^
SyntaxError: invalid syntax 

Another failed attempt (before success) using "marshal" package:

import marshal
s = open('script2.cpython-37.pyc', 'rb')
s.seek(12)  # Also tried s.seek(8) here. First 4 bytes are for signaling a 'magic number'. Next 4 bytes holding a modification timestamp.

code_obj = marshal.load(s)
exec(code_obj)
myfunc()
myfunc("Testing from script4")

(base) C:\Users\ashish\Desktop\code\2>python script4.py
Traceback (most recent call last):
  File "script4.py", line 5, in [module]
    code_obj = marshal.load(s)
ValueError: bad marshal data (unknown type code) 

Note: Try fixing this code and post answer on StackOverflow [Link].

- - - - - - - - - - - - - - - - - - -

Successful run (1):

We create a script "script5.py" using the "imp" package:
import imp
my_module = imp.load_compiled("script2", "script2.cpython-37.pyc")
my_module.myfunc('Testing script 5.')

Execution:

(base) C:\Users\ashish\Desktop\code\3>python script5.py
script5.py:14: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
  import imp
Testing script 5.

Successful run (2):

We create a script "script6.py" that uses the "importlib" package: [ Reference ] 

import importlib
import sys

# For illustrative purposes.
#import tokenize
#file_path = tokenize.__file__
#module_name = tokenize.__name__

file_path = "script2.cpython-37.pyc"
module_name = "script2"

spec = importlib.util.spec_from_file_location(module_name, file_path)
module = importlib.util.module_from_spec(spec)
sys.modules[module_name] = module
spec.loader.exec_module(module)

module.myfunc()
module.myfunc("Testing from script 6.") 

(base) C:\Users\ashish\Desktop\code\3>DIR
 Directory of C:\Users\ashish\Desktop\code\3

01/28/2021  02:39 PM    [DIR]          .
01/28/2021  02:39 PM    [DIR]          ..
01/28/2021  02:06 PM               228 script2.cpython-37.pyc
01/28/2021  02:24 PM               418 script5.py
01/28/2021  02:38 PM               462 script6.py
               3 File(s)          1,108 bytes
               2 Dir(s)  106,838,298,624 bytes free

(base) C:\Users\ashish\Desktop\code\3>python script6.py
Hello World
Testing from script 6.

Sunday, January 24, 2021

Please keep your city clean. Images from Vardhaman Park, Tri Nagar, Delhi 110035.


Vardhaman Vatika Entrance (Jan 2021)

Tree leaves piled up from months and nobody comes to pick them up and remove from here.

People should not put their deity's pictures everywhere. They are impinging on the autonomy of the general public with their basic right to a cleaner city.

A good sign: there is a public toilet here in this park but again it is not properly maintained.

Python code to create Annotations required by a custom SpaCy NER



First, we show the version of SpaCy we are using:
(e20200909) CMD>pip show spacy
Name: spacy
Version: 2.3.2
Summary: Industrial-strength Natural Language Processing (NLP) in Python
Home-page: https://spacy.io
Author: Explosion
Author-email: contact@explosion.ai
License: MIT
Location: c:\anaconda3\envs\e20200909\lib\site-packages
Requires: numpy, cymem, preshed, blis, tqdm, catalogue, thinc, wasabi, srsly, setuptools, murmurhash, plac, requests
Required-by: en-core-web-sm, aspect-based-sentiment-analysis 

Before we dive into code, here are few points to note:
1. The execution of code starts from the 'main.py'

2. The first input file is "list_of_entity_names.txt" that has the entities to be detected in the input text. The entities are written all in one line separated by a semi-colon.

3. The second input file is "test_input_strings.txt" that contains the strings we want the entities to be detected in.

Filename: .\main.py 

from get_annotations import getAnnotatedStrings

with open('test_input_strings.txt') as f:
    lines = f.readlines()

#print(lines)

annotations = []
for i in lines:
    annotations.append(getAnnotatedStrings(i))

with open('output.txt', mode="a") as f:
    for i in annotations:
        f.write(str(i) + "\n") 
    
Filename: .\list_of_entity_names.txt 

apple;apple cider vinegar;banana;Apple

Filename: .\get_annotations.py 

import copy

with open('list_of_entity_names.txt') as f:
    entity_names = f.read()
entity_names = list(set(entity_names.split(";")))

#print(entity_names)


def getAnnotatedStrings(textStr, entity_label = 'MY_ENTITY'):
    textStr = textStr.replace("'", "").replace("^ ", "") # Cleaning of text from Wikipedia
    haveMoreEntities = True
    
    entity_position = []
    entity_titles = []
    for entityStr in entity_names:
        start = textStr.find(entityStr)
        end = start + len(entityStr)
        if start != -1 and (not textStr[start - 1].isalnum()):
            # By the condition (not textStr[start - 1].isalnum()) we check that the match found is not in the middle of another word.
            try:
                if (not textStr[end].isalnum()):
                    entity_position += [(start, end, entity_label)]
                    entity_titles += [entityStr]
            except:
                entity_position += [(start, end, entity_label)]
                entity_titles += [entityStr]
    

    print("Initial discovery of entities: ", entity_position)
    print("Initial discovery of entity titles: ", entity_titles)
    print()

    # This "if" block was used for an activity with data related to 'pragramming languages'.
    # entity_titles.index('C') Throws "ValueError: element is not in list"
    if 'C' in entity_titles:
        c_variants = []
        if 'C#' in entity_titles:
            c_variants.append('C#')
        if 'C++' in entity_titles:
            c_variants.append('C++')
        if 'Objective-C' in entity_titles:
            c_variants.append('Objective-C')
        if len(c_variants) > 0:
            for i in c_variants:
                try:
                    c_start = entity_position[entity_titles.index('C')][0]
                except:
                    break
                i_start = entity_position[entity_titles.index(i)][0]
                i_end = entity_position[entity_titles.index(i)][1]
                if c_start >= i_start and c_start <= i_end:
                    del entity_position[entity_titles.index('C')]
                    entity_titles.remove('C') # First 'C' removed.

    overlap_detection_arr = []
    entity_position_out = copy.deepcopy(entity_position)
    
    for i in entity_position:
        temp_arr = []
        for j in entity_position:
            # This "i[1] < j[1] and i[1] > j[0]" is the overlap of kind: 
            # 'ashish', 'ishleen' being picked from a hypothetical word 'ashishleen'.
            if i[1] < j[1] and i[1] > j[0]:
                len1 = i[1] - i[0]
                len2 = j[1] - j[0]
                if len1 > len2:
                    try:
                        entity_position_out.remove(j)
                        del entity_titles[entity_position.index(j)]
                    except:
                        #print("Element not found.")
                        pass
                else:
                    try:
                        entity_position_out.remove(i)
                        del entity_titles[entity_position.index(i)]
                    except:
                        #print("Element not found.")
                        pass
                print("Overlap detected.")  
            else:
                temp_arr.append(False)

            # This "i[0] > j[0] and i[0] < j[1]" is the overlap of kind: jean (denoted by 'i'), greyjean (denoted by 'j')
            if i[0] > j[0] and i[0] < j[1]:
                len1 = i[1] - i[0]
                len2 = j[1] - j[0]
                if len1 > len2:
                    try:
                        entity_position_out.remove(j)
                        del entity_titles[entity_position.index(j)]
                    except:
                        #print("Element not found.")
                        pass
                else:
                    try:
                        entity_position_out.remove(i)
                        del entity_titles[entity_position.index(i)]
                    except:
                        #print("Element not found.")
                        pass
                print("Overlap detected.")  
            else:
                temp_arr.append(False)
        overlap_detection_arr.append(temp_arr)

    if len(entity_titles) > 0:
        rv = (str(textStr), {'entities': entity_position_out})
        print(rv)
        print()
        return rv
		
Filename: .\output.txt 

('An apple a day, keeps the doctor away.\n', {'entities': [(3, 8, 'MY_ENTITY')]})
('Dont add apple cider vinegar to everything.\n', {'entities': [(9, 28, 'MY_ENTITY')]})
('Apple is a fruit and so is banana.', {'entities': [(27, 33, 'MY_ENTITY'), (0, 5, 'MY_ENTITY')]})



Filename: .\test_input_strings.txt  

An apple a day, keeps the doctor away.
Don't add apple cider vinegar to everything.
Apple is a fruit and so is banana.



When we run the code in Command Prompt, it runs like this:

(e20200909) C:\Users\ashish\code>python main.py
Initial discovery of entities:  [(3, 8, 'MY_ENTITY')]
Initial discovery of entity titles:  ['apple']

('An apple a day, keeps the doctor away.\n', {'entities': [(3, 8, 'MY_ENTITY')]})

Initial discovery of entities:  [(9, 14, 'MY_ENTITY'), (9, 28, 'MY_ENTITY')]
Initial discovery of entity titles:  ['apple', 'apple cider vinegar']

Overlap detected.
('Dont add apple cider vinegar to everything.\n', {'entities': [(9, 28, 'MY_ENTITY')]})

Initial discovery of entities:  [(27, 33, 'MY_ENTITY'), (0, 5, 'MY_ENTITY')]
Initial discovery of entity titles:  ['banana', 'Apple']

('Apple is a fruit and so is banana.', {'entities': [(27, 33, 'MY_ENTITY'), (0, 5, 'MY_ENTITY')]})

--- --- --- --- ---

Note How to Remove Unused Imports:

(e20200909) >>>conda install autoflake -c conda-forge

(e20200909) >>>autoflake -i --remove-all-unused-imports main.py

(e20200909) >>>autoflake -i --remove-all-unused-imports get_annotations.py

Here:
-i, --in-place: make changes to files instead of printing diffs

--- --- --- --- ---