<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Suhail</title>
    <description>The latest articles on DEV Community by Suhail (@smirza).</description>
    <link>https://dev.to/smirza</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F116398%2F91625b4e-7a8b-4975-90d4-d4e6f5d948a0.png</url>
      <title>DEV Community: Suhail</title>
      <link>https://dev.to/smirza</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/smirza"/>
    <language>en</language>
    <item>
      <title>Introduction to GraphQL using Python</title>
      <dc:creator>Suhail</dc:creator>
      <pubDate>Fri, 06 Mar 2020 04:00:38 +0000</pubDate>
      <link>https://dev.to/smirza/introduction-to-graphql-using-python-451p</link>
      <guid>https://dev.to/smirza/introduction-to-graphql-using-python-451p</guid>
      <description>&lt;p&gt;&lt;a href="https://graphql.org/"&gt;GraphQL&lt;/a&gt; is a data query language developed internally by Facebook in 2012 before being publicly released in 2015. It provides an alternative to REST and ad-hoc web service architectures.&lt;/p&gt;

&lt;h2&gt;
  
  
  Graphene-Python
&lt;/h2&gt;

&lt;p&gt;Graphene-Python is a library for building GraphQL APIs in Python easily, its main goal is to provide a simple but extendable API for making developers’ lives easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to use GraphQL?
&lt;/h2&gt;

&lt;p&gt;If you are creating a data-driven application of at least moderate complexity, GraphQL should absolutely merit primary consideration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Use GraphQL?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;GraphQL APIs have a strongly typed schema&lt;/li&gt;
&lt;li&gt;Solves the problem of over-fetching and under-fetching&lt;/li&gt;
&lt;li&gt;GraphQL enables rapid product development&lt;/li&gt;
&lt;li&gt;Composing GraphQL APIs (Schema Stitching)&lt;/li&gt;
&lt;li&gt;Rich open-source ecosystem and an amazing community&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  GraphQL Ecosystem
&lt;/h2&gt;

&lt;p&gt;GraphQL Ecosystem has three main classes:&lt;br&gt;
&lt;strong&gt;Query&lt;/strong&gt; — way to fetch data in a read-only manner from your GraphQL API (analogy of GET request in REST API).&lt;br&gt;
&lt;strong&gt;Mutation&lt;/strong&gt; — way to change(create/update/delete) data on your server (analogy of POST request in REST API).&lt;br&gt;
&lt;strong&gt;Subscription&lt;/strong&gt; — way to get a real-time feed of data from your server (something like traditional Web Sockets)&lt;/p&gt;
&lt;h2&gt;
  
  
  GraphQL Schema
&lt;/h2&gt;

&lt;p&gt;It can be compared to a dictionary in Python or object in Javascript, if it is possible to say, where the key is the name of a field and value is a type of this field.&lt;/p&gt;
&lt;h2&gt;
  
  
  Supported data types in GraphQL
&lt;/h2&gt;

&lt;p&gt;Scalars(Int, Float, String, Boolean, ID) List, Enum, Non-null are few of the most commonly used data types in GraphQL.&lt;br&gt;
You can find out more info about data types in GraphQL &lt;a href="https://graphql.org/learn/schema/"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Your First GraphQL App! (with GraphQL and Python)
&lt;/h2&gt;

&lt;p&gt;Create a project directory, navigate to the same and create a &lt;code&gt;schema.py&lt;/code&gt; file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;python-graphene
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;python-graphene &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;touch &lt;/span&gt;schema.py
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Configure the &lt;code&gt;pipenv&lt;/code&gt; environment and install the graphene module.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;pipenv shell
&lt;span class="o"&gt;(&lt;/span&gt;python-graphene&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;pipenv &lt;span class="nb"&gt;install &lt;/span&gt;graphene
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Let's write our first app now that we have the environment set up with the required module in place.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Line Numbers 5–13&lt;/em&gt;: The &lt;code&gt;Query&lt;/code&gt; class is a special ObjectType that sub-classes from &lt;code&gt;graphene.ObjectType&lt;/code&gt; which defines the fields that are the entry-point for your API which in the above example is &lt;code&gt;user&lt;/code&gt; and &lt;code&gt;is_admin&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Line Number 6–9&lt;/em&gt;: In the above snippet which is for the resolver function in graphene, this helps fetch the required data to be returned when querying for that parameter. These functions should be prepended with resolve and should follow &lt;strong&gt;snake case&lt;/strong&gt; styling. In the above example, these functions are &lt;code&gt;resolve_user&lt;/code&gt; and &lt;code&gt;resolve_is_admin&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Resolver functions, in general, is a collection of functions that generate a response for your GraphQL query. In simple terms, a resolver acts as a GraphQL query handler.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Line Number 16&lt;/em&gt;: The &lt;code&gt;schema&lt;/code&gt; defines the types and relationships between Fields in your API. A Schema is created by supplying the root ObjectType of each operation, query (*mandatory), mutation and subscription. In this case, we have just supplied the Query operation.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Line Number 18:&lt;/em&gt;: Finally, in order to call the schema that we have created in the above example, we have the query string which is within comments and is passed with &lt;code&gt;schema.execute&lt;/code&gt; and the same is converted to a JSON and printed to the standard out.&lt;/p&gt;

&lt;p&gt;Running the &lt;code&gt;schema.py&lt;/code&gt; file within the environment that was created should result in the below output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;python 1_schema.py 
&lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="s2"&gt;"user"&lt;/span&gt;: &lt;span class="s2"&gt;"Benjamin Button"&lt;/span&gt;,
  &lt;span class="s2"&gt;"isAdmin"&lt;/span&gt;: &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



</description>
      <category>graphql</category>
      <category>python</category>
    </item>
    <item>
      <title>My AZ103 (Certification) Experience</title>
      <dc:creator>Suhail</dc:creator>
      <pubDate>Sun, 23 Feb 2020 20:18:57 +0000</pubDate>
      <link>https://dev.to/smirza/microsoft-certified-azure-administrator-associate-2kl0</link>
      <guid>https://dev.to/smirza/microsoft-certified-azure-administrator-associate-2kl0</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--j6Mqg291--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2vc9w9maek3ei3p9gqjz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--j6Mqg291--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2vc9w9maek3ei3p9gqjz.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's month 2 of the year 2020 and I have earned my second certification. I cracked my first - AZ900 (Microsoft Azure Fundamentals) in January followed by AZ103 (Azure Administrator Associate) last Friday. &lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;All in all, I skipped no question (there are no negative marks). You need a score of 700 to pass, I scored 841 for AZ900 and 760 for AZ103. There's no way to know specifically which questions you failed and why, and there's also no way of knowing what the max score is. &lt;/p&gt;

&lt;p&gt;The one thing you are provided is a score report, with a graph that shows, out of 100%, the percentage of correct answers you got for a specific subject (VM Management, identity management, etc.).&lt;/p&gt;

&lt;h3&gt;
  
  
  Exam Format
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;As far as I have seen and read from various blogs there is no fixed number of questions that Microsoft sticks with, but it is around 45-55 and the number of a specific type of question(s) may vary from person to person&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I had a total of 47 questions in total, they included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;1 case study (i.e.: "Here's a business scenario with a bunch of requirements, and now answer these questions based on the provided information/requirements")&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Multiple-choice, with different types of questions, like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Single-answer w/ multiple choice&lt;/li&gt;
&lt;li&gt;Up to X answer w/ multiple choice&lt;/li&gt;
&lt;li&gt;Fill-in-the-blank&lt;/li&gt;
&lt;li&gt;Order the answers in the right order for what you need to achieve (with some answers that do not fit)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No Labs&lt;/strong&gt;. Yes, Azure has temporarily removed labs from AZ103 due to some issues. Every blog post and videos that I had checked had only bad things to say about the lab experience; that person had to go through during the exams. But even if they reintroduce labs, they are pretty straight forward and easy. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Process
&lt;/h3&gt;

&lt;p&gt;I spent around 2 weeks to prepare (for AZ103) and had a paid subscription for &lt;a href="https://cloudacademy.com/"&gt;Cloud Academy&lt;/a&gt;. I followed the learning path that they had specially curated for AZ103, along with the lecture courses it also includes Practice Labs, Challange Labs, and a Practice Test(which I failed horribly when I gave it for the first time). It was a hustle to cover all the topics within 2 weeks for me if you are new to the concepts I would suggest giving it more time. But then again depends on how quickly you can grasp the concepts. I spent around 3-4 hours on weekdays and close to 5 hours on weekends. &lt;/p&gt;

&lt;h3&gt;
  
  
  What Next
&lt;/h3&gt;

&lt;p&gt;AZ400 (Maybe!) - An Admin or a Developer Badge is required (a prerequisite) to appear for AZ400, which means I am eligible. Yay! ;)&lt;/p&gt;

</description>
      <category>microsoft</category>
      <category>azure</category>
      <category>certification</category>
      <category>az103</category>
    </item>
    <item>
      <title>My Data Structures and Algorithms Resources
</title>
      <dc:creator>Suhail</dc:creator>
      <pubDate>Wed, 22 Jan 2020 15:39:21 +0000</pubDate>
      <link>https://dev.to/smirza/my-data-structures-and-algorithms-resources-n0o</link>
      <guid>https://dev.to/smirza/my-data-structures-and-algorithms-resources-n0o</guid>
      <description>&lt;h2&gt;
  
  
  My Collection of resources for Data Structures and Algorithms
&lt;/h2&gt;

&lt;p&gt;A set of resources that I stumbled upon on the internet and felt to be keepers for future references.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://visualgo.net/en"&gt;visualgo.net - A tool to help his students better understand data structures and algorithms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.lavivienpost.com/data-structures-and-algorithms/#ds"&gt;Data Structures and Algorithms (https://www.lavivienpost.com)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stepik.org/lesson/31445/step/7?unit=11743"&gt;Summaries of Data Structures (https://stepik.org)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/the-top-data-structures-you-should-know-for-your-next-coding-interview-36af0831f5e3/"&gt;The top data structures you should know for your next coding interview (https://www.freecodecamp.org)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.hackerearth.com/practice/notes/big-o-cheatsheet-series-data-structures-and-algorithms-with-thier-complexities-1/"&gt;Big O Cheatsheet - Data structures and Algorithms with their complexities (https://www.hackerearth.com)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/pulse/big-o-notation-time-complexity-algorithm-vikas-kumar/"&gt;Big O notation: Time complexity of an algorithm by Vikas Kumar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vprusso/youtube_tutorials/tree/master/data_structures"&gt;Code Repo for Data Structures in python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vprusso/youtube_tutorials/tree/master/algorithms"&gt;Code Repo for Algorithm in python&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do share your resource links if you have any for the topic. Thanks!&lt;/p&gt;

</description>
      <category>resources</category>
      <category>career</category>
    </item>
    <item>
      <title>Quickstart on Pipenv (Python packaging tool)</title>
      <dc:creator>Suhail</dc:creator>
      <pubDate>Tue, 28 May 2019 15:22:17 +0000</pubDate>
      <link>https://dev.to/smirza/quickstart-guide-on-pipenv-python-packaging-tool-2ie4</link>
      <guid>https://dev.to/smirza/quickstart-guide-on-pipenv-python-packaging-tool-2ie4</guid>
      <description>&lt;p&gt;This blog was originally posted on:&lt;br&gt;
&lt;a href="https://sm087.github.io/pipenv-quickstart.html"&gt;https://sm087.github.io/pipenv-quickstart.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pipenv is a packaging tool for Python that solves some common problems associated with the typical workflow using pip, virtualenv, and the good old requirements.txt.&lt;/p&gt;
&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;pip3 install pipenv&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Package installation using pipenv
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;pipenv install requests&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If a pipenv is not setup for the application yet, running the above will create a virtual environment along with the installation of pipenv and also create &lt;code&gt;Pipfile&lt;/code&gt; and &lt;code&gt;Pipfile.lock&lt;/code&gt; under the application directory.&lt;/p&gt;

&lt;p&gt;The below shows a sample pipfile (&lt;code&gt;toml&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
requests = "*"

[requires]
python_version = "3.7"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;you can install package you need, flask. For example you need version 0.12.1 and not the latest version, so go ahead and be specific by:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv install flask==0.12.1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can also install directly from a version control system by:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv install -e git+https://github.com/requests/requests.git#egg=requests&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Production Environment based package Install
&lt;/h2&gt;

&lt;p&gt;Let’s say you have some unit tests for the application that you are building, and you want to use pytest for running them. You don’t need pytest in production so you can specify that this dependency is only for development with the --dev argument:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv install pytest --dev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This package will be auto added by pipenv to the Pipfile under &lt;code&gt;[dev-packages]&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Activate your pipenv environment
&lt;/h2&gt;

&lt;p&gt;Spawn a shell in a virtual environment to isolate the development of your app by running:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv shell&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Deactivate your pipenv environment
&lt;/h2&gt;

&lt;p&gt;To deactivate the environment spawned by running the above command use &lt;code&gt;exit&lt;/code&gt;. Avoid using &lt;code&gt;deactivate&lt;/code&gt; as this does not completely (not a clean) exit from a pipenv environment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(myenv)$ exit
exit
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Running a script
&lt;/h2&gt;

&lt;p&gt;You can run a script without activating the environment created.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv run python scripts.py&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can also run a command in the virtual environment without launching a shell by:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv run &amp;lt;insert command here&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Install from requirements.txt
&lt;/h2&gt;

&lt;p&gt;You can install required packaged for an app from a legacy virtual environment &lt;code&gt;requirements.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv install -r pathto/requirements.txt&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Uninstall a Package
&lt;/h2&gt;

&lt;p&gt;Now, let’s say you no longer need a package. You can uninstall it:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv uninstall requests&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If you want to wipe off all the packages from the environment:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv uninstall --all&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Pip Freeze in pipenv
&lt;/h3&gt;

&lt;p&gt;This is the equivalent to &lt;code&gt;pip freeze&lt;/code&gt;, gives you the list of packages installed under that environment.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv lock -r&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  PipEnv Path(s)
&lt;/h2&gt;

&lt;p&gt;To find out where your virtual environment is located:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv --venv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To find out where your project home is&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv --where&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Package vulnerabilities
&lt;/h2&gt;

&lt;p&gt;Check for security vulnerabilities in your environment:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv check&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Environment Variables and PipEnv
&lt;/h2&gt;

&lt;p&gt;Pipenv supports the automatic loading of environmental variables when a .env file exists in the project directory. That way, when you pipenv shell to open the virtual environment, it loads your environmental variables from the file. The .env file just contains key-value pairs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SECRET_KEY=somerandomekey
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;14:03:47~/PycharmProjects/cloudMigrationDVApp$ pipenv run python
Loading .env environment variables…
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 16:52:21)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
&amp;gt;&amp;gt;&amp;gt; import os
&amp;gt;&amp;gt;&amp;gt; os.environ['SECRET_KEY']
'somerandomekey'
&amp;gt;&amp;gt;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Dependency mapping with PipEnv (with pipenv graph command)
&lt;/h2&gt;

&lt;p&gt;Pipenv can show a dependency graph to understand your top-level dependencies and their sub-dependencies:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv graph&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ pipenv graph
openpyxl==2.6.2
  - et-xmlfile [required: Any, installed: 1.0.1]
  - jdcal [required: Any, installed: 1.4.1]
requests==2.22.0
  - certifi [required: &amp;gt;=2017.4.17, installed: 2019.3.9]
  - chardet [required: &amp;gt;=3.0.2,&amp;lt;3.1.0, installed: 3.0.4]
  - idna [required: &amp;gt;=2.5,&amp;lt;2.9, installed: 2.8]
  - urllib3 [required: &amp;gt;=1.21.1,&amp;lt;1.26,!=1.25.1,!=1.25.0, installed: 1.25.3]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Switch to a different python version
&lt;/h2&gt;

&lt;p&gt;Given a situation if your app python version needs to be changed from one version to another pipenv &lt;code&gt;pipfile&lt;/code&gt; can be edited to change the python version under:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[requires]
python_version = "3.6" ## changed from 3.7 to 3.6
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;And then by running the below will reinstall the virtual environment with the version specified.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv --python 3.6&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  To remove pipenv completely
&lt;/h2&gt;

&lt;p&gt;You can remove the pipenv environment completely by running&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv --rm&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This will still not delete the &lt;code&gt;Pipfile&lt;/code&gt; and the &lt;code&gt;Pipfile.lock&lt;/code&gt;, this would need to be manually removed (If not needed).&lt;/p&gt;

&lt;p&gt;To install the pipenv with the pipfile`s in place, run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv install&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Changing version of a package installed
&lt;/h2&gt;

&lt;p&gt;In order to update a pip package change the version under the pip file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
[packages]&lt;br&gt;
openpyxl = "*"&lt;br&gt;
requests = "==2.22.0" # Changed from 2.21 to 2.22&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and then run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv install&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Should result in the required version installed:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
$ pipenv lock -r | grep requests&lt;br&gt;
requests==2.22.0&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Production Ready
&lt;/h2&gt;

&lt;p&gt;Once your application is ready with the required packages in development, You need to lock your environment to ensure you have the same (version) packages in production:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv lock&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This will create/update your &lt;code&gt;Pipfile.lock&lt;/code&gt;, which you’ll never need to (and are never meant to) edit manually.&lt;/p&gt;

&lt;p&gt;Once you get your code and &lt;code&gt;Pipfile.lock&lt;/code&gt; in your production environment, you should install the last successful environment recorded by:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv install --ignore-pipfile&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This tells Pipenv to ignore the Pipfile for installation and use what’s in the Pipfile.lock.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dev Environment
&lt;/h2&gt;

&lt;p&gt;To setup packages and environment for &lt;code&gt;dev&lt;/code&gt; environment:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv install --dev&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  From legacy virtualenv to pipenv
&lt;/h2&gt;

&lt;p&gt;If you have a dev-requirements.txt or something similar, you can add those to the Pipfile as well by:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv install -r dev-requirements.txt --dev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Additionally, you can go the other way and generate requirements files from a &lt;code&gt;Pipfile&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pipenv lock -r &amp;gt; requirements.txt&lt;/code&gt;&lt;br&gt;
&lt;code&gt;pipenv lock -r -d &amp;gt; dev-requirements.txt&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources to Refer
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/@grassfedcode/five-myths-about-pipenv-698c5f198e4b"&gt;Five Myths About Pipenv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hackernoon.com/reaching-python-development-nirvana-bb5692adf30c"&gt;Why you should use pyenv + Pipenv for your Python projects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://olav.it/2017/03/04/pipenv-visual-studio-code/"&gt;Configuring Pipenv in Visual Studio Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>python</category>
      <category>packagemanagement</category>
    </item>
    <item>
      <title>7 Habits of Successful Software Engineers</title>
      <dc:creator>Suhail</dc:creator>
      <pubDate>Wed, 21 Nov 2018 17:28:40 +0000</pubDate>
      <link>https://dev.to/smirza/7-habits-of-successful-software-engineers-874</link>
      <guid>https://dev.to/smirza/7-habits-of-successful-software-engineers-874</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;So I just checked out this &lt;a href="https://www.youtube.com/watch?v=6G_UQ0YepV8" rel="noopener noreferrer"&gt;video&lt;/a&gt; posted by &lt;a href="https://www.freecodecamp.org/" rel="noopener noreferrer"&gt;freeCodeCamp&lt;/a&gt; on youtube. Found some cool points that I noted down. Thought someone in the &lt;a href="https://dev.to/"&gt;DEV Community&lt;/a&gt; would find it helpful.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;Understand the scope and the problem first before coding&lt;/li&gt;
&lt;li&gt;Document as much as you can&lt;/li&gt;
&lt;li&gt;Write readable and maintainable code&lt;/li&gt;
&lt;li&gt;Be good at cross-functional work&lt;/li&gt;
&lt;li&gt;Be an effective communicator&lt;/li&gt;
&lt;li&gt;Recognise opportunities for improvements and impacts&lt;/li&gt;
&lt;li&gt;Have a growth mindset&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>discuss</category>
      <category>python</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
